Извлеките аудио M4A из видео и свяжите иллюстрацию

Почему в 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 ответ

Решение

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

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

… Поскольку MPEG-4 Part 14 является контейнерным форматом, файлы MPEG-4 могут содержать любое количество потоков аудио, видео и даже субтитров, что делает невозможным определение типа потоков в файле MPEG-4 на основе его расширения имени файла в одиночестве. В ответ Apple Inc. начала использовать и популяризировать расширение имени файла.m4a, которое используется для контейнеров MP4 с аудиоданными в формате расширенного аудиокодирования с потерями (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 Вы выбираете изображение, которое будет смешано в вывод. (The \ это просто убежать от новой строки.)

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


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

AtomicParsley input.m4a --artwork image.jpg

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

Другие вопросы по тегам