當前位置:編程學習大全網 - 源碼下載 - 如何利用VLC或FFMPEG將HTTP的串流轉換成RTMP

如何利用VLC或FFMPEG將HTTP的串流轉換成RTMP

這個應用主要是將HTTP的串流(非HLS或DASH)轉換成RTMP協議傳送到Adobe Flash Media Server或Wowza Media Server的媒體服務器。

根據維基百科: “Real Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.”

RTMP的協議有以下的參數:

RTMP: 其原始采用TCP port 1935

RTMPS: 將RTMP加載到SSL的安全機制,就類似HTTPS。

RTMPE: 采用Adobe所提供給RTMP所發展的加密版本。

RTMPT: 在RTMP上加掛he RTMP protocol 封裝在HTTP請求中,可以穿越防火墻。這是壹個很不錯的協議,使用TCP端口80和443繞過公司對防火墻。封裝的會話可能攜帶純RTMP,RTMPS或RTMPE包內。

RTMP 串流

VLC 在 2.0.x版本裏可以支持RTMP協議。不過,有些環境卻沒法執行,例如2.0.2, 2.0.3, 2.0.4, 2.0.6在Windows 2008 Server 64的服務器上確實沒法執行。可以開啟VLC然後開啟網絡串流,如“RTMP://aaa.bbb.com:1935/live/串流源“,看看可否開啟。主要是VLC 2.0.x采用 ffmpeg/libav的程序庫,但是, 有的包裝卻沒法支持。所以必須先做確認。當 librtmp 的支持被啟動於 ffmpeg/libav 則RTMPS才可以有功用。

VLC和RTMP的情形主要是用來捕獲和轉碼應用程序生成壹個單壹的流。是通過另壹個應用程序分配給多個客戶端。這在Wowza是非常重要的。雖然,Wowza也支持VLC采用UDP/RTP/RTSP方式接收串流,但是,很多情況下是很不穩定的。

LC直接連接到壹個的RTMP串流,如WOWZA,不聽傳入的請求。因此,它是不可能的,以查看的RTMP流直接從VLC。您需要連接到WOWZA,觀看流。這是可以用VLC做到的:

$ vlc rtmp://rtmp.server.com:1935/path/to/stream有件事必須提醒的。從VLC將RTMP串流傳送給Wowza服務器並不是都很穩定的。有壹些時間關系的“蟲”會造成Wowza關閉連線。 這樣的問題都是與“音頻”與”視頻“時間戳(Timestamp)有關系的。采用“audio-desync” 選項來整合RTMP也不是個好點子,但是, 可以不斷調整與修改。

Webcam RTMP streaming

以下是有關webcam的應用。其他的有采集裝置、設備、視頻文檔等應用。

Windows 的範例

在windows的采集裝置都是利用DirectShow這個界面的。在VLC的模塊也是用這樣的界面,成為“DirectShow“或”dshow”。以下是範例:

$ vlc dshow://"" --sout '#transcode{vcodec=h264,vb=300,fps=25,scale=1,acodec=mp4a,ab=64,channels=2}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://rtmp.server.com:1935/path/to/stream}'DirectShow選項也可在QT界面裏采用

Linux 的範例

通常在Linux的采集裝置上都是采用“video for linux” (v4l2)這個界面。使用指令方式來采集webcam裝置(或稱為”v4l2 裝置”)送出RTMP串流的範例如下:

$ vlc v4l2:// --v4l2-fps=25 --sout '#transcode{vcodec=h264,vb=300,fps=25,scale=1,acodec=mp4a,ab=64,channels=2}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://rtmp.server.com:1935/path/to/stream}'這個例子可以自動偵測 v4l2 裝置並且選擇第壹個裝置來采集訊號。其他的參數選項如視頻標準(PAL, NTSC)、Chroma、寬度、長度等等可以自行設置。必須要註意的是,這些參數設置跟本身的設備有關。 當我門使用debug模式 (-vvv),VLC自身的video for linux (v4l2) 模塊會顯示出執行時所出現的數值訊息。v4l2 模塊提供以下可作為優化的選項:

–v4l2-dev=: 指定所要采集的特定裝置

–v4l2-standard=: 使用哪種視頻標準,例如: SECAM, PAL, NTSC and more

–v4l2-width=: 視頻呈現的寬度(in pixels)

–v4l2-height=: 視頻呈現的長度度(in pixels)

以上是描述有關v4l2的參數選項。完整的v4l2模塊訊息,可以利用下面的指令查詢。

$ vlc -H -p v4l2 --advanced以下是另壹個將http串流轉碼(transcode)到RTMP給Adobe Flash Media Server或Wowza Media Server等視頻服務器

  • 上一篇:5G報文或年底商用,5G報文是怎樣的黑科技?
  • 下一篇:QQ引流裂變源代碼
  • copyright 2024編程學習大全網