1

当我尝试将 VLC Python 绑定与 ffmpeg 连接时(请参阅Exchange data between ffmpeg and video player),我认为让 ffmpeg 将 RTSP 流输出到 STDOUT 并用Python 脚本“捕获”它并通过 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

这似乎可行,我可以访问流,但不能访问视频,也不能播放音频。我尝试在 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 -

完美运行。所以问题似乎出在我将数据从标准输入写入网络服务器时。我做错了什么?

4

1 回答 1

2

我玩弄了你的 stdin2http.py 脚本。首先,我能够通过 HTTP 将媒体文件(在我的情况下为 H.264 .mp4 文件)从简单的 Web 服务器 (webfsd) 流式传输到 VLC。然后我使用'stdin2http.py < h264-file.mp4'尝试了同样的事情。没用。

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

于 2012-03-15T03:19:33.853 回答