当我尝试将VLC Python绑定与ffmpeg连接时(请参阅Exchange data between ffmpeg and video player)我想让ffmpeg将RTSP流输出到STDOUT并用a Python script“捕获”它并通过HTTP发送会是一个好主意。所以我使用SimpleHTTPServer创建了一个小型HTTP服务器,从中我从FFMpeg获取STDIN并将其“输出”到网络上。
这是我正在使用的语法:
ffmpeg.exe -y -i rtsp://fms30.mediadirect.ro/live/utv/utv?tcp -acodec copy -vcodec copy -f flv - | \Python27\python.exe -u stdin2http.py
这似乎有效,我可以访问流,但也不能访问视频,也不播放音频。我尝试在Linux上使用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服务器时,问题似乎就出现了。我做错了什么?
答案 0 :(得分:2)
我使用了你的stdin2http.py脚本。首先,我能够通过HTTP将媒体文件(在我的情况下为H.264 .mp4文件)从简单的Web服务器(webfsd)流式传输到VLC。然后我用'stdin2http.py<尝试了同样的事情。 H264-file.mp4' 。它没有采取。
我使用'ngrep'实用程序来研究两台服务器之间网络对话的差异。我想如果你想让这个方法工作,你需要使stdin2http.py更智能并使用HTTP内容范围(这可能涉及脚本中的一定量的缓冲stdin数据,以便处理流中可能的跳转)