-
Notifications
You must be signed in to change notification settings - Fork 10
ffmpeg
ffmpeg [глобальные_параметры] \
[[параметры_входа_0] -i вход_0.mkv] \
[[параметры_входа_1] -i вход_1.flv] \
[...] \
[параметры_выхода_0] выход_0.webm \
[[параметры_выхода_1] выход_1.ogg] \
[...]
Разбиение на строки здесь использовано исключительно для наглядности; символ «\» в юниксовых шеллах отменяет использование перевода строки как окончания команды, в windows вместо него следует использовать «^».
Напоминаю, квадратными скобками обозначаются необязательные параметры. То есть, вовсе не обязательно писать всё, простейший пример выглядит так:
ffmpeg -i animu.mkv animu.webm
(взять animu.mkv и сконвертировать в animu.webm).
При этом будут использованы параметры по умолчанию (для формата webm это кодеки vp8/vorbis, битрейт видео 200кбпс, crf 4 и качество звука 3, см. ниже). Если разрешение видео будет больше спичечного коробка, то его с такими параметрами скорее всего распидорасит на квадраты.
Сложный пример:
ffmpeg -hide_banner \
-loop 1 -r 1 -i picture.png \
-ss 3.5 -i audio.flac \
-shortest -c:v vp9 -b:v 5M -crf 16 -c:a libopus -b:a 96k musicwebm.webm \
-vn -q:a 2 /mnt/flash/audio.mp3
(взять видеоряд из повторяющейся со скоростью 1 fps картинкой picture.png и звук начиная с 3.5 секунд audio.flac, сделать из этого musicwebm.webm с кодеками vp9/opus и заодно закинуть mp3 на флешку).
Это делается в параметрах выхода. По умолчанию ffmpeg берёт по одному потоку каждого типа, который поддерживает выходной формат, выбирая лучшие (видео большего разрешения, аудио с большим числом каналов, первые сабы). Это можно немного изменить, отключив параметрами -vn, -an и -sn видео, звук и субтитры соответственно, либо вообще отключить автоматический выбор, использовав параметр -map идентификатор_потока. Последний можно посмотреть, запустив ffmpeg -i файл, будут выведены такие строки:
Stream #0:0(jpn): Video: h264 (High 10), yuv420p10le, 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Stream #0:1(jpn): Audio: aac, 48000 Hz, stereo, fltp (default)
0:0 и 0:1 — это и есть идентификаторы потоков. Также удобно использовать форму -map 0:v:0 -map 0:a:0 (взять первую видео- и аудиодорожку первого файла).