通过HTTP流式传输ffmpeg输出



当我试图将VLC Python绑定与ffmpeg连接时(请参阅ffmpeg和视频播放器之间的交换数据),我认为让ffmpeg将RTSP流输出到STDOUT,并用Python脚本"捕获"它并通过HTTP发送是个好主意。因此,我使用SimpleHTTPServer制作了一个小型HTTP服务器,从中我从FFMpeg获得STDIN并将其"输出"到web。

这是我正在使用的语法:

ffmpeg.exe -y -i rtsp://fms30.mediadirect.ro/live/utv/utv?tcp -acodec copy -vcodec copy -f flv - | Python27python.exe -u stdin2http.py

这似乎有效,我可以访问流,但既不能播放视频,也不能播放音频。我在Windows上尝试了VLC,在Linux上尝试了VLC和MPlayer,但没有成功。只需运行

ffmpeg.exe -y -i rtsp://fms30.mediadirect.ro/live/utv/utv?tcp -acodec copy -vcodec copy -f flv - | vlc.exe -

工作非常完美。因此,问题似乎出现在我将数据从stdin写入web服务器时。我做错了什么?

我玩了你的stdin2http.py脚本。首先,我能够通过HTTP将媒体文件(在我的情况下是H.264.mp4文件)从一个简单的web服务器(webfsd)流式传输到VLC。然后我用stdin2http.py<h264文件.mp4'。它不需要。

我使用"ngrep"实用程序来研究两台服务器之间网络对话的差异。我认为,如果你想让这种方法发挥作用,你需要让stdin2http.py更智能,并使用HTTP内容范围(这可能需要在你的脚本中缓冲一定量的stdin数据,以处理流中可能出现的跳跃)。

最新更新