如何使用ffmpeg创建m4v视频?

时间:2016-09-12 20:37:03

标签: video ffmpeg jplayer m4v

我正在尝试使用ffmpeg:

使用以下命令创建m4v视频
ffmpeg -loop 1 -i orange640x360.png -i Be+Present.mp3 -tune stillimage -shortest -c:v libx264 -c:a copy ./Be+Presentorange640x360.m4v

这是我得到的错误:

  

[ipod @ 0x7fbbc9801600]无法在流#1中找到codec mp3的标签,   容器中目前不支持编解码器

           

无法为输出文件#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 个答案:

答案 0 :(得分:1)

由于我不确定我查了一下,是的 - FFmpeg认为m4v文件是一个没有任何音频的原始视频流容器。来自github上的rawenc.c

#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的示例表明它应该处理它。