2016-09-12 5 views
-1

Я пытаюсь создать 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 

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

[ставку @ 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 который я в настоящее время используется.

+0

Не знаете, почему я был проголосован. Может кто-нибудь, пожалуйста, скажите мне, что не так с моим вопросом, а не просто голосом? – HelpMeStackOverflowMyOnlyHope

+0

Я думаю, что в сообщении об ошибке говорится все: вы пытаетесь поместить mp3 в контейнер m4v, а IMHO - только AAC. Поэтому либо используйте источник аудио AAC, либо попробуйте переключиться на mp4. –

+0

Возможно, это было занижено, потому что это не по теме: Stack Overflow специально предназначен только для программирования вопросов. Общие вопросы использования 'ffmpeg' cli по теме [su] – LordNeckbeard

ответ

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 показывают, что он должен ее обрабатывать.

+0

В документах jPlayer я вижу это требование: – HelpMeStackOverflowMyOnlyHope

+0

В документах jPlayer я вижу это требование:« Основной формат видео: m4v ». Я пробовал делать .jPlayer («setMedia», {m4v: «https://xyz.cloudfront.net/video/Be%2BPresentorange640x360.mp4»}) и работает в браузере Chrome, но в браузере Safari я получаю Ошибка с сообщением: «URL-адрес мультимедиа не может быть загружен». Если я поставлю .m4v закодированное видео, Safari работает. Не уверен, почему он не работает с Safari. Если вам нужны настоящие URL-адреса, чтобы проверить себя, пожалуйста, дайте мне знать. – HelpMeStackOverflowMyOnlyHope

+0

В их документах указано, что ключ 'm4v' является 1String: определяет URL-адрес формата видео mp4 (MP4: H.264/AAC)'. Это, как говорится, так как вы пробовали это и обнаружили, что это не удается - может быть, Apple действительно требует некоторых вещей DRM или чего-то еще. Насколько я знаю, поскольку Safari пытается заставить всех использовать HLS, может быть несколько ограничений на файл mp4. Один из них, о котором я знаю, заключается в том, что Safari не обрабатывает фрагментированный mp4, но я не думаю, что это так, потому что вам нужно передать явные флаги, чтобы указать генерацию фрагментированного mp4. –