FFMPEG:以原始播放速率流式传输文件

FFMPEG:以原始播放速率流式传输文件

我想使用以下方式将文件传输到网络ffmpeg以其原始帧速率;所以我可以使用一些接收器客户端播放生成的 UDP 流,例如甚高频液晶。我使用了这个命令:

ffmpeg -i “myfile.mpg” -sameq -re -f mpegts “udp://127.0.0.1:2000”

通过使用此命令,ffmpeg 开始以非常高的速率流式传输文件;这样,大约 30 分钟长度的文件的流式传输只需大约 40 秒即可完成。我想以原始速率查看文件。我还想控制视频的速率以更快或更慢地播放。有什么选项可以做到这一点吗?谢谢。

答案1

-re应该用作输入选项,否则它可能会被忽略。基本语法的概括如下:

ffmpeg [input options] -i input [output options] output

请勿使用-sameq。请参阅sameq 并不意味着“相同质量”以获得详细解释。

您是否尝试过简单地复制流而不是重新编码?添加-map 0 -codec copy为输出选项。

至于更改视频速度,您可以尝试setpts多媒体过滤器。请注意,您必须重新编码才能使用此过滤器。文档中的示例:

Apply fast motion effect: -filter:v setpts=0.5*PTS
Apply slow motion effect: -filter:v setpts=2.0*PTS

对于音频,请参见asetptsatempo过滤器。

答案2

答案是使用选项-re。它应该与输入选项放在一起(在之前-i)。

-re(输入)

以原始帧速率读取输入。主要用于模拟抓取设备或实时输入流(例如从文件读取时)。不应与实际抓取设备或实时输入流一起使用(这可能会导致数据包丢失)。默认情况下,ffmpeg 会尝试尽快读取输入。此选项将减慢输入的读取速度至输入的原始帧速率。它对于实时输出(例如实时流)很有用。

相关内容