2014-02-15 63 views
2

我一直在努力從FFMPEG實時流媒體工作很多小時,所以提高白色標誌並尋求幫助。無法使用FFMPEG重新流MP4到HTML5視頻

我的場景是我有一臺IP安全攝像頭,可以通過RTSP(h.264)成功連接,並將視頻保存爲文件段,並且可以通過獨立應用(如VLC或節點)進行播放。 JS的Web服務器應用程序,發送「視頻/ MP4」 &保活頭和溪流以前FFMPEG保存到HTML5視頻客戶端的MP4文件。

但是我想要採用相同的RTSP流並將其重新流式傳輸到HTML5客戶端。我知道HTML5客戶端和FFMPEG重新配合MP4工作作爲MP4錄製/流媒體工作。

我試過以下內容:

1)將輸出設置爲HTTP字符串。我不認爲FFmpeg的支持這是我得到的「輸入/輸出錯誤」,並且不支持Windows

ffmpeg -i rtsp://admin:[email protected]:554 -vcodec copy -f mp4 -movflags frag_keyframe+empty_moov http://127.0.0.1:8888 

2)對稱爲ffserver的另一個應用程序FFmpeg的文檔會談的ffmpeg如在產卵運行node.js,我試着用STDOUT將節點輸出到節點http服務器,使用與錄製回放流相同的頭文件。我可以查看VLC此流這是一個好兆頭,但我不能讓HTML客戶端識別數據流,它顯示空白,或者偶爾流的靜態圖像。

var liveServer = http.createServer(liveStream); 
var liveStream = function (req, resp) {           // handle each client request by instantiating a new FFMPEG instance 
    resp.writeHead(200, {"Content-Type": "video/mp4", "Connection": "keep-alive"}); 
     var xffmpeg = child_process.spawn("ffmpeg", [ 
      "-i", "rtsp://admin:[email protected]:554" , "-vcodec", "copy", "-f", "mp4", "-movflags", "frag_keyframe+empty_moov", "-" // output to stdout 
      ], {detached: false}); 

      xffmpeg.stdout.pipe(resp); 

      xffmpeg.on("exit", function (code) { 
       console.log("Xffmpeg terminated with code " + code); 
      }); 

      xffmpeg.on("error", function (e) { 
        console.log("Xsystem error: " + e); 
      }); 

      xffmpeg.stdout.on("data",function(data) { 
        console.log('Xdata rcv ' + data); 
      }); 

      xffmpeg.stderr.on("data", function (data) { 
        console.log("XFFMPEG -> " + data); 
    } 
} 

我試過IE11和Chrome瀏覽器的HTML5客戶端。

我懷疑有一些不太正確的流發送的格式停止HTML5視頻客戶端,但不足以停止VLC。令人煩惱的是,上面的代碼對於播放已經記錄的MP4流很好。

任何想法如何通過FFMPEG工作實況轉播?謝謝。

回答

0

只是好奇,你有解決它?我做的基本上是同樣的事情,除了它是屏幕鑄....我切換到使用起着非常WebM格式...但是視頻將「滯後」的背後通過額外的幾秒鐘...這對我不利,但可能適合你

+0

嗨,謝謝你的迴應。不幸的是我仍然在尋找和WebM是行不通的,因爲它需要轉碼(如IP攝像機發送H.264可與少的CPU使用容易remuxed成MP4流)。我曾指出,HTML5的瀏覽器需要被別人分塊將等待視頻完全加載(即使有一個空的moov原子)流,所以我探索如何寫一個節點的http服務器這將大塊響應。 – deandob

+0

我得到了這個工作,在這裏看到一個相關的問題:http://stackoverflow.com/questions/21921790/best-approach-to-real-time-http-streaming-to-html5-video-client – deandob