В чем разница между «-acodec» и «-c» в FFMPEG

В чем разница между «-acodec» и «-c» в FFMPEG

Я новичок в 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

Добавлен

Синтаксис -acodecand -vcodecтеперь устарел. И рекомендуется использовать синтаксис -c:aand -c:v(которые являются псевдонимами для -codec:aand -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являются всего лишь ярлыками для их аудио- или видеоподмножеств.

Связанный контент