3

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

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

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

提前致谢!

4

2 回答 2

5

几点注意事项:

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

首先,.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 选项。两次编码将使 ua 比特率接近您指定的比特率,但需要两倍的时间。恒定速率因子虽然会给 ua 带来恒定的质量,但您可能必须测试不同的值(对于不可察觉的损失来说是理智的:18 - 24)才能获得您想要的比特率。

于 2012-09-28T08:56:06.327 回答