使用wowza和xuggler将RTMP转换为RTSP
大家好!
在過去的三個月中,我們一直在進(jìn)行電話會議項(xiàng)目。 我們認(rèn)為,使用諸如Flex之類的技術(shù)的基于Web的應(yīng)用程序?qū)⑹谴祟愐罂量痰捻?xiàng)目的最佳方法。 隨著軟件的復(fù)雜性和電信提供商的需求增加,我們面臨的挑戰(zhàn)值得注意。 一個挑戰(zhàn)是要求從使用我們的軟件的代理向其RTSP服務(wù)器提供實(shí)時視頻。 我們面臨的問題是, Flex在視頻和音頻傳輸中使用了RTMP協(xié)議,我們需要快速進(jìn)行一些重新流處理而又無需重新發(fā)明輪子的事情。
在本文中,我們將嘗試提供足夠的信息來解決一個復(fù)雜的問題,即實(shí)時流的RTMP到RTSP的重新流傳輸。 我們的解決方案基于同時支持RTMP和RTSP的 wowza流服務(wù)器以及xuggler ,后者在Java應(yīng)用程序中帶來了FFMPEG的強(qiáng)大功能。
Wowza支持將H.264實(shí)時流從RTMP轉(zhuǎn)換為RTSP ,但不支持H.263 。 默認(rèn)情況下,從ActionScript Camera對象捕獲的視頻是H.263編碼的。 我們將提供基于xuggler的代碼,該代碼可實(shí)時將H.263轉(zhuǎn)換為H.264 ,并將H.264流發(fā)布到Wowza 。
首先,我們需要設(shè)置xuggler 。 我們需要最新版本的FFMPEG和H.264,因此有必要從svn存儲庫中檢出xuggler 。
svn checkout http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler xuggle-xuggler然后我們必須設(shè)置一些環(huán)境參數(shù)。
的Linux
export XUGGLE_HOME=/usr/local/xuggler export PATH=$XUGGLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH蘋果電腦
export XUGGLE_HOME=/usr/local/xuggler export PATH=$XUGGLE_HOME/bin:$PATH export DYLD_LIBRARY_PATH=$XUGGLE_HOME/lib:$DYLD_LIBRARY_PATH視窗
- 將XUGGLE_HOME設(shè)置為您選擇的目錄(確保該目錄在磁盤上)。 生成時,必須確保XUGGLE_HOME在C:驅(qū)動器上,并且在路徑中沒有空格。 抱歉。 如果使用安裝程序,則此限制不適用。
- 添加%XUGGLE_HOME%\ bin ; 到PATH環(huán)境變量的開頭。
- (可選)將%XUGGLE_REPO%設(shè)置到您希望螞蟻安裝已發(fā)布的常春藤jar的目錄(如果未設(shè)置,則默認(rèn)在構(gòu)建目錄中為dist / ivy)。
然后,我們必須構(gòu)建并安裝xuggler 。
ant run-tests sudo ant install現(xiàn)在你已經(jīng)xuggler安裝在$ XUGGLE_HOME
完成安裝后,我們必須編寫完成此技巧的代碼。
package com.javacodegeeks.xuggler;import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException;import com.xuggle.xuggler.Converter;public class Transcoder {/*** @param args*/public static void main(String[] args) {String inputStream = "rtmp://wowzahost/live/streamLive3H.263";String outputStream = "rtmp://wowzahost/live/streamLive3H.264";String[] parameters = new String[] { "--acodec", "libfaac", "--vcodec","libx264", "--vpreset","/usr/local/xuggler/share/ffmpeg/libx264-ultrafast.ffpreset",inputStream, outputStream };Converter converter = new Converter();Options options = converter.defineOptions();CommandLine cmdLine;try {cmdLine = converter.parseOptions(options, parameters);converter.run(cmdLine);System.out.println("Finish!!!");} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}注意事項(xiàng)。
- 在$ XUGGLE_HOME / share / ffmpeg目錄中,您會找到所有x264可用的預(yù)設(shè)。更好的質(zhì)量意味著更多的延遲。 您將必須選擇適合您的需求。
- 您將不必更改acodec和vcodec
- FFMPEG的最新版本可以讀取和寫入RTMP流。
示例項(xiàng)目在此處可用。
感謝您的時間。 希望您會發(fā)現(xiàn)本文有趣。
最好的祝福
。/拍
翻譯自: https://www.javacodegeeks.com/2010/05/rtmp-to-rtsp-re-stream-using-wowza-and.html
總結(jié)
以上是生活随笔為你收集整理的使用wowza和xuggler将RTMP转换为RTSP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从u盘安装linux系统(从u盘安装li
- 下一篇: 在领域驱动的设计,贫乏的领域模型,代码生