2012-03-14 162 views
1

由于我试图将VLC Python绑定与ffmpeg连接起来(见Exchange data between ffmpeg and video player),我认为制作ffmpeg将RTSP流输出到STDOUT并用a Python script“捕捉”它并通过HTTP发送将是好主意。因此,我使用SimpleHTTPServer制作了一个小型的HTTP服务器,从中获得来自FFMpeg的STDIN并将其“输出”到网络中。通过HTTP流式传输ffmpeg

这是我使用的语法:

ffmpeg.exe -y -i rtsp://fms30.mediadirect.ro/live/utv/utv?tcp -acodec copy -vcodec copy -f flv - | \Python27\python.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服务器写入数据的时候。我做错了什么?

+0

我在想你的stdin2http.py脚本可能有问题。 – 2012-03-14 16:40:35

+0

我也在想 - 但是可能会出现什么问题?以下是脚本:http://pastebin.com/NDRtFhVp – ov1d1u 2012-03-14 18:15:03

+0

vlc可以自行流式传输。为什么你需要ffmpeg,python? – jfs 2012-03-14 18:50:15

回答

2

我玩过你的stdin2http.py脚本。首先,我可以通过HTTP将一个媒体文件(在我的情况下是H.264 .mp4文件)从简单的Web服务器(webfsd)流式传输到VLC。然后我使用“stdin2http.py < h264-file.mp4”尝试了相同的操作。它没有采取。

我使用'ngrep'工具来研究2台服务器之间的网络对话的区别。我想如果你想使这种方法有效,你需要使stdin2http.py变得更加智能,并且处理HTTP内容范围(这可能涉及脚本中的一定数量的缓冲stdin数据,以便处理流中可能的跳转) 。