Я новичок в FFMPEG и не могу найти подробной документации по этому вопросу.
Я объединяю 3 mp3-файла (мне нужно просто мультиплексирование, без кодирования/транскодирования).
Обе эти команды, кажется, работают нормально. Есть ли разница между использованием '-c' и '-acodec'?
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -acodec copy out.mp3
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -c copy out.mp3
Я искал в Google часами, я нашел различную документацию по ffmpeg, но ни одна из них не объясняет, что на самом деле делают -c или -acodec. Я думаю, что -c означает 'codec', а -acodec означает 'audio codec'?? Что делает каждый из них / есть ли разница / какой из них лучше?
Документация, которую я нашел, но которая не помогает:
https://ffmpeg.org/ffmpeg-all.html
https://gist.github.com/tayvano/6e2d456a9897f55025e25035478a3a50
Также приветствуются любые предложения по улучшению этого (мне просто нужно последовательно объединить 3 mp3).
Спасибо.
решение1
Обращаясь к вашему названию.
Выполнение -c copy
приведет к копированию как аудиокодека (acodec), так и видеокодека (vcodec)
-c copy
такой же как -acodec copy -vcodec copy
-c:a copy
такой же как -acodec copy
.
-c:v copy
такой же как-vcodec copy
и конечно вы можете указать кодек например -vcodec libx264
или-c:v libx264
-c означает кодек. Вы также можете написать -codec https://ffmpeg.org/ffmpeg.html например -codec:a copy
и если вы не укажете например -acodec copy
или -acodec blahblah
или -codec:a ...
, то он выберет какой-то кодек по умолчанию. Вы также можете сказать -vn
для no video.https://stackoverflow.com/questions/9913032/how-can-i-extract-audio-from-video-with-ffmpeg поэтому он не копирует видео. или -an
для отсутствия звукаУдалить аудио из видеофайла с помощью FFmpeg
Добавлен
Синтаксис -acodec
and -vcodec
теперь устарел. И рекомендуется использовать синтаксис -c:a
and -c:v
(которые являются псевдонимами для -codec:a
and -codec:v
).
решение2
-c
или -codec
является универсальным селектором потока, поэтому вы можете использовать его для установки кодека для любого потока, будь то аудио или видео.
-acodec
является подмножеством этой функциональности, которая автоматически распространяется на аудиопотоки
-acodec:1
то же самое, что -codec:a:1
и указывает на то, что вы устанавливаете кодек для второго аудиопотока (первый аудиопоток — 0).
из вашей связанной документации: -c, -codec
-c[:stream_specifier] кодек (вход/выход,для каждого потока) -codec[:stream_specifier] кодек (вход/выход,для каждого потока)
Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the
имя декодера/кодера или специальная копия значения (только вывод), указывающая, что поток не подлежит перекодированию.
-акодек
-acodec кодек (вход/выход)
Установить аудиокодек. Это псевдоним для -codec:a.
также существует -vcodec, который работает таким же образом для видеопотоков.
Итак, чтобы собрать все воедино, рассмотрим эту команду из документа
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
это означает использовать оригинальный кодек для всех потоков ( -c copy
), но для второго видеопотока использовать libx264 ( -c:v:1 libx264
), а для 138-го аудиопотока использовать libvorbis ( -c:a:137 libvorbis
).
Таким образом, с помощью -c
вы можете управлять всеми типами потоков, тогда как -acodec
и -vcodec
являются всего лишь ярлыками для их аудио- или видеоподмножеств.