Как создать видео в формате m4v с помощью ffmpeg?

Я пытаюсь создать видео m4v с помощью следующей команды, используя ffmpeg:

ffmpeg -loop 1 -i orange640x360.png -i Be+Present.mp3 -tune stillimage -shortest -c:v libx264 -c:a copy ./Be+Presentorange640x360.m4v

Это ошибка, которую я получаю:

[ipod @ 0x7fbbc9801600] Не удалось найти тег для кодека mp3 в потоке #1, кодек в настоящее время не поддерживается в контейнере


Не удалось записать заголовок для выходного файла #0 (неверные параметры кодека?): Неверный аргумент

Если я делаю ту же команду для создания видео mp4, она работает правильно, как таковая:

ffmpeg -loop 1 -i orange640x360.png -i Be+Present.mp3 -tune stillimage -shortest -c:v libx264 -c:a copy ./Be+Presentorange640x360.mp4

.m4v - необходимый формат для jPlayer, который я сейчас использую.

1 ответ

Так как я не был уверен, что искал это и да - FFmpeg считает m4v файлы должны быть контейнером видеопотока без звука. Из rawenc.c на github:

#if CONFIG_M4V_MUXER
AVOutputFormat ff_m4v_muxer = {
    .name              = "m4v",
    .long_name         = NULL_IF_CONFIG_SMALL("raw MPEG-4 video"),
    .extensions        = "m4v",
    .audio_codec       = AV_CODEC_ID_NONE,
    .video_codec       = AV_CODEC_ID_MPEG4,
    .write_header      = force_one_stream,
    .write_packet      = ff_raw_write_packet,
    .flags             = AVFMT_NOTIMESTAMPS,
};
#endif

Так что ошибка уместна, так как вы пытаетесь поместить аудиопоток MP3 внутрь m4v, Я бы предложил попробовать mp4 Версия - документы и примеры jPlayer указывают, что он должен справиться с этим.

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