【问题标题】:Streaming ffmpeg output over HTTP通过 HTTP 流式传输 ffmpeg 输出
【发布时间】:2012-03-30 23:59:12
【问题描述】:

当我尝试将 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

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

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

【问题讨论】:

  • 我认为您的 stdin2http.py 脚本可能有问题。
  • 我也在考虑这个问题 - 但有什么问题吗?这是脚本:pastebin.com/NDRtFhVp
  • vlc 可以自己流式传输。为什么需要ffmpeg、python?
  • rtsp://fms30.mediadirect.ro/live/utv/utv 例如它在 VLC 中不起作用。这是通过 TCP 流式传输的,并且似乎 VLC 不太支持基于 TCP 的 RTSP。所以我正在尝试使用 ffmpeg 作为代理。

标签: python ffmpeg http-streaming


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2016-12-21
    • 2017-07-08
    相关资源
    最近更新 更多