2012-03-14 201 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數據,以便處理流中可能的跳轉) 。