首先,.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)才能获得您想要的比特率。