如何使用FFMPEG将MP4视频文件转换为F4V

时间:2012-04-30 15:38:45

标签: video ffmpeg streaming mp4

我正在尝试将MP4视频文件转换为f4v视频文件,以便我可以使用Flash Media Server流式传输视频。理想情况下,我想将mp4转换为各种比特率,以便我可以完成视频的多比特流。我很确定ffmpeg能够做到这一点,但我不断得到不同的错误消息。这是我尝试过的最新内容:

ffmpeg.exe -i source.mp4 -ar 150 destination.f4v

我收到以下错误消息:“无法为'destination.mp4'destination.mp4找到合适的输出格式:无效的参数

提前致谢!

2 个答案:

答案 0 :(得分:5)

一些注意事项:

  1. MP4文件已经适用于流式传输,前提是它包含用于视频的H.264和用于音频的AAC。 source.mp4已经是H.264 / AAC吗?如果是这样,则无需转码为F4V。说到F4V ......
  2. F4V只是一个带有H.264视频和AAC音频的MP4文件。它碰巧有Adobe为Flash视频建议的文件扩展名。没什么特别的。
  3. ' - ar 150'几乎肯定不是你想要的 - 这意味着150赫兹。 CD音质为44100 Hz。你的意思是'-ab'来设置音频比特率吗?请注意,它以比特/秒表示,150仍然太低。
  4. 您是否直接复制并粘贴了错误消息?因为您指定了'destination.f4v'的输出,而错误提到'destination.mp4'。我无法解释这种差异。也许用完整的错误输出修改问题。

答案 1 :(得分:3)

首先,.f4v不是F4V视频格式的官方扩展,至少在ffmpeg眼中。

如果您想要流式传输mp4文件,一些Flash播放器的实现将允许您寻找尚未下载的地方。正常的解决方案是在f4v容器中转换(实际上只是重新打包)这些文件。

要转换为与流兼容的f4v,您需要使用FLV元数据注入器,例如Yamdi(http://yamdi.sourceforge.net/)

您可以采取的步骤:

ffmpeg.exe -i source.mp4 -vcodec copy -acodec copy destination.flv

这会将视频和音频直接重新打包到flv文件中。如果输入为H.264,FFMPEG将自动使用f4v格式。

yamdi -i destination.flv -o destination.f4v

插入元数据后,您的f4v文件现已准备好进行流式传输。如果省略最后一步,则只能导航到已下载文件的部分。

仅供参考,如果您可以支持可变比特率,请使用-crf选项。双通道编码会使您的比特率接近您指定的比特率,但需要两倍的时间。恒定的速率因素虽然可以给你一个恒定的质量,但你可能必须测试不同的值(理所当然的不可思议的损失:18 - 24)来获得你想要的比特率。