X
    Categories: Практикум

Конвертируем из mkv в avi в FFmpeg


Совсем недавно предо мной возникла следующая задача:

1. Имеется видео файл videofile.mkv
2. Нужно перекодировать видео файл из формата mkv в avi.
3. Оставить из нескольких звуковых дорожек только одну – русскую.

Данную проблему можно было решить во многих графических приложениях, например: WinFF, Transmageddon, Transcoder и многих других. Но в последнее время я просто без ума от консольных приложений. Поэтому по возможности большинство своей повседневной работы я перенес именно в консоль. Поэтому данный способ будет описан именно для работы в Терминале. Теперь подробнее.

В результате наших телодвижений мы должны получить файл в avi формате с одной русской звуковой дорожкой. Но как же узнать сколько аудио файлов содержит mkv-контейнер?

Для этого нам нужно узнать информацию о видеофайле videofile.mkv, чтобы узнать количество звуковых дорожек, а также можно узнать о разрешении, продолжительности, соотноении сторон и т.д. Данную информацию можно узнать в графической программе Mediainfo или MKVinfo. Их можно установить из Центра приложений Убунту. Но раз я решил решить данную задачу при помощи консоли, то никаких графических приложений. Переходим в каталог с нужным видео файлом:

cd /home/user/Video/videofile.mkv

В вашем случае путь к видео файлу будет конечно же отличаться, поэтому после команды cd впишите свои данные. Далее выполним в каталоге с mkv файлом команду:

ffmpeg -i videofile.mkv

Вывод команды получился большой, поэтому я покажу только некоторую, полезную ее часть.



ffmpeg -i videofile.mkv
ffmpeg version 2.8.3-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2015 the FFmpeg developers
Input #0, matroska,webm, from ‘videofile.mkv’:
encoder : libebml v1.3.1 + libmatroska v1.4.2
creation_time : 2015-06-18 19:20:49
Duration: 00:20:41.82, start: 0.000000, bitrate: 2835 kb/s
Stream #0:0(eng): Video: h264 (High), yuv420p, 1280×720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0:1(rus): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s (default)
Stream #0:2(eng): Audio: ac3, 48000 Hz, 2.0(side), 192 kb/s

Из всей этой информации можно сделать вывод, что мы имеем одну видео дорожку:

Stream #0:0(eng): Video: h264,

а также две звуковые дорожки:

Stream #0:1(rus): Audio: ac3
Stream #0:2(eng): Audio: ac3

То же самое можно узнать и в avconv. Команда будет иметь такой вид:

avconv -i videofile.mkv

В нашем случае, для получения avi файла, нам нужна видео дорожка (0:0), и русская звуковая дорожка (0:1). Для перекодирования mkv в avi будем использовать отличную программу FFmpeg. Для этого выполним следующую команду:

ffmpeg -i videofile.mkv -map 0:0 -map 0:1 -f avi -s 720x576 -vcodec libxvid -vb 1300k -ac 2 -ar 44100 -acodec libmp3lame -ab 128k -sn -y videofile_out.avi

либо в avconv:

avconv -i videofile.mkv -map 0:0 -map 0:1 -f avi -s 720x576 -vcodec libxvid -vb 1300k -ac 2 -ar 44100 -acodec libmp3lame -ab 128k -sn -y videofile_out.avi

Как вы наверное знаете в Убунту 14.04 и 14.10 в официальных репозиториях отсутствует пакет ffmpeg, поэтому по умолчанию он был заменен на его форк – avconv от разработчиков проекта Libav. По сути это то же самое, но часть недовольных программистов отделилась по некоторым соображениям от ffmpeg и создали свой проект. Но кто желает установить ffmpeg должен добавить репозиторий от их разработчиков. Для этого выполните поочередно следующие команды в Терминале:

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ffmpeg

Можно еще поступить иначе. Заходим на официальную страницу ffmpeg с готовыми пакетами – http://johnvansickle.com/ffmpeg/ и скачиваем сборку для вашей системы (x-32 или x-64).

Далее распfковываем и копируем пакеты: (ffmpeg, ffmpeg-10bit, qt-faststart, ffserver, ffprobe) в каталоги /usr/local/bin и /usr/bin. Чтобы это сделать нужно запустить файловый менеджер от root пользователя. Выполним команду:

sudo nautilus

После запуска Nautilus копируем указанные пакеты в нужные каталоги. После этого, чтобы узнать версию установленного пакета ffmpeg в системе, выполним команду в Терминале:

ffmpeg

Вы должны увидеть что-то примерно следующее:

ffmpeg version 2.8.3-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2015 the FFmpeg developers…

Разработчики компании Canonical обещают, что уже в Убунту 15.04 ffmpeg снова появится в официальном источнике. Новость хорошая, но к чему были все эти уходы – приходы? Ну да ладно, лишь бы все работало. Кстати, ffmpeg полезен не только для стационарного ПК. Его с успехом используют на очень многих веб-сервисах, для перекодирования видео.

Надеюсь, что данная статья будет полезна для многих. На этом разрешите откланяться и всем вам Божьих благословений!


admin-dm2003: