這個(gè)應(yīng)用主要是將HTTP的串流(非HLS或DASH)轉(zhuǎn)換成RTMP協(xié)議傳送到Adobe Flash Media Server或Wowza Media Server的媒體服務(wù)器。
根據(jù)維基百科: “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的協(xié)議有以下的參數(shù):
- RTMP: 其原始采用TCP port 1935
- RTMPS: 將RTMP加載到SSL的安全機(jī)制,就類(lèi)似HTTPS。
- RTMPE: 采用Adobe所提供給RTMP所發(fā)展的加密版本。
- RTMPT: 在RTMP上加掛he RTMP protocol 封裝在HTTP請(qǐng)求中,可以穿越防火牆。這是一個(gè)很不錯(cuò)的協(xié)議,使用TCP端口80和443繞過(guò)公司對(duì)防火牆。封裝的會(huì)話可能攜帶純RTMP,RTMPS或RTMPE包內(nèi)。
RTMP 串流
VLC 在 2.0.x版本里可以支持RTMP協(xié)議。不過(guò),有些環(huán)境卻沒(méi)法執(zhí)行,例如2.0.2, 2.0.3, 2.0.4, 2.0.6在Windows 2008 Server 64的服務(wù)器上確實(shí)沒(méi)法執(zhí)行??梢蚤_(kāi)啟VLC然后開(kāi)啟網(wǎng)絡(luò)串流,如“RTMP://aaa.bbb.com:1935/live/串流源“,看看可否開(kāi) 啟。主要是VLC 2.0.x采用 ffmpeg/libav的程序庫(kù),但是, 有的包裝卻沒(méi)法支持。所以必須先做確認(rèn)。當(dāng) librtmp 的支持被啟動(dòng)于 ffmpeg/libav 則RTMPS才可以有功用。
VLC和RTMP的情形主要是用來(lái)捕獲和轉(zhuǎn)碼應(yīng)用程序生成一個(gè)單一的流。是通過(guò)另一個(gè)應(yīng)用程序分配給多個(gè)客戶(hù)端。這在Wowza是非常重要的。雖然,Wowza也支持VLC采用UDP/RTP/RTSP方式接收串流,但是,很多情況下是很不穩(wěn)定的。
LC直接連接到一個(gè)的RTMP串流,如WOWZA,不聽(tīng)傳入的請(qǐng)求。因此,它是不可能的,以查看的RTMP流直接從VLC。您需要連接到WOWZA,觀看流。這是可以用VLC做到的:
$ vlc rtmp://rtmp.server.com:1935/path/to/stream
有件事必須提醒的。從VLC將RTMP串流傳送給Wowza服務(wù)器并不是都很穩(wěn)定的。有一些時(shí)間關(guān)系的“蟲(chóng)”會(huì)造成Wowza關(guān)閉連線。 這樣的問(wèn)題都是與“音頻”與”視頻“時(shí)間戳(Timestamp)有關(guān)系的。采用“audio-desync” 選項(xiàng)來(lái)整合RTMP也不是個(gè)好點(diǎn)子,但是, 可以不斷調(diào)整與修改。
Webcam RTMP streaming
以下是有關(guān)webcam的應(yīng)用。其他的有采集裝置、設(shè)備、視頻文檔等應(yīng)用。
Windows 的范例
在windows的采集裝置都是利用DirectShow這個(gè)界面的。在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選項(xiàng)也可在QT界面里采用
Linux 的范例
通常在Linux的採(cǎi)集裝置上都是採(cǎi)用“video for linux” (v4l2)這個(gè)界面。使用指令方式來(lái)采集webcam裝置(或稱(chēng)為”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}'
這個(gè)例子可以自動(dòng)偵測(cè) v4l2 裝置并且選擇第一個(gè)裝置來(lái)采集訊號(hào)。其他的參數(shù)選項(xiàng)如視頻標(biāo)準(zhǔn)(PAL, NTSC)、Chroma、寬度、長(zhǎng)度等等可以自行設(shè)置。必須要注意的是,這些參數(shù)設(shè)置跟本身的設(shè)備有關(guān)。 當(dāng)我門(mén)使用debug模式 (-vvv),VLC自身的video for linux (v4l2) 模塊會(huì)顯示出執(zhí)行時(shí)所出現(xiàn)的數(shù)值訊息。v4l2 模塊提供以下可作為優(yōu)化的選項(xiàng):
- –v4l2-dev=: 指定所要采集的特定裝置
- –v4l2-standard=: 使用哪種視頻標(biāo)準(zhǔn),例如: SECAM, PAL, NTSC and more
- –v4l2-width=: 視頻呈現(xiàn)的寬度(in pixels)
- –v4l2-height=: 視頻呈現(xiàn)的長(zhǎng)度度(in pixels)
以上是描述有關(guān)v4l2的參數(shù)選項(xiàng)。完整的v4l2模塊訊息,可以利用下面的指令查詢(xún)。
$ vlc -H -p v4l2 --advanced
以下是另一個(gè)將http串流轉(zhuǎn)碼(transcode)到RTMP給Adobe Flash Media Server或Wowza Media Server等視頻服務(wù)器
cvlc -I dummy http://orginalstreamIPaddress:50014 --sout-mux-caching=5000 --sout='#transcode{venc=x264{keyint=60},vcodec=h264,vb=800}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://destinationIPaddress:1935/live/StreamFile}}' &
這是用ffmpeg的方法:
ffmpeg -i http://OriginalIPAddress:50010 -vcodec libx264 -vb 800k -acodec libfaac -ab 64k -f flv rtmp://DestinationIPAddress:1935/live/StreamFile
有關(guān)更詳細(xì)的訊息,可以參考這些網(wǎng)站:www., Ubuntu FFMPEG Discussion, and Zeranoe Build website




