2

Почему в Ubuntu 12.04, когда я извлекаю аудио в M4A из видео (MP4 или FLV и т.д.) С помощью avconv:

avconv -i video.mp4 -c:a libvo_aacenc sound.m4a 

в нем есть видеопоток, и если я хочу только аудиопоток, я должен добавить параметр -vn , например так:

avconv -i video.mp4 -c:a libvo_aacenc -vn sound.m4a

Я имею в виду, M4A не аудиоформат?


Можно ли добавить обложку к аудиовыходу?

с помощью этой команды я могу извлечь один кадр,

avconv -i vid.mp4 -vsync 1 -frames 1 -s 1024x768 -an -y image.jpeg

но возможно ли связать его с аудиовыходом? Я полагаю, что решение является частью обоих, но я не могу понять это.

1 ответ1

1

.m4a - это просто еще одно широко используемое расширение файла для контейнера MPEG-4 Part 14, обычно называемое MP4. Контейнер может нести видео, аудио и субтитры. Расширение не меняет этого факта, хотя часто вы помещаете аудио только в файлы .m4a , а видео в файлы .m4v .

Смотрите Википедию для получения дополнительной информации:

… Поскольку MPEG-4 Part 14 является контейнерным форматом, файлы MPEG-4 могут содержать любое количество потоков аудио, видео и даже субтитров, что делает невозможным определение типа потоков в файле MPEG-4 на основе его расширения имени файла в одиночестве. В ответ Apple Inc. начала использовать и популяризировать расширение имени файла .m4a, которое используется для контейнеров MP4 с аудиоданными в формате Advanced Audio Coding (AAC) с потерями или в собственных форматах Apple Lossless (ALAC) без потерь. Программное обеспечение, способное воспроизводить аудио / видео, должно распознавать файлы с расширениями имен файлов .m4a или .mp4, как и следовало ожидать, поскольку между ними нет различий в формате файлов. Большая часть программного обеспечения, способного создавать аудио MPEG-4, позволит пользователю выбрать расширение имени файла созданных файлов MPEG-4.


Если вы хотите, чтобы одно статическое изображение отображалось вместе со звуком, вам придется преобразовать его в видео. Например, создайте нужный кадр и назовите его image.png (или image.jpg):

avconv -i input.mp4 -frames:v 1 image.png 

Это даст вам первый кадр видео. Если вам нужна метка другого времени, добавьте параметр -ss перед -i чтобы пропустить, например, 10 секунд: avconv -ss 10 -i … .

Затем:

avconv -i input.mp4 -i image.png \
-c:v libx264 -pix_fmt yuv420p -r 1 -c:a copy -map 0:a:0 -map 1 output.mp4

Здесь выберите x264 для кодирования видео из неподвижного изображения и просто скопируйте аудиопоток из исходного файла. Частота кадров -r 1 должна быть достаточной, хотя вы можете пропустить эту часть.

При помощи -map 0:a:0 вы выбираете первый аудиопоток из первого файла, а при помощи -map 1 вы выбираете изображение, которое будет мультиплексировано в вывод. (\ Это просто чтобы выйти из новой строки.)

Переключатели -map отлично работают для последних (и приличных) последних версий FFmpeg - хотя я не могу говорить о Libav в Ubuntu. Если это не работает, просто скачайте FFmpeg.


Если вы хотите установить обложку альбома для файла .m4a , используйте AtomicParsley:

AtomicParsley input.m4a --artwork image.jpg

Это создаст новый файл с изображением, встроенным в качестве иллюстрации, который теперь корректно отображается в большинстве медиаплееров. Чтобы перезаписать сам входной файл, используйте также параметр --overWrite .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .