由於Android 不像iPhone有http live streaming的端到到方案(方便提供海量服務),暫時用開源的feng(http://lscube.org/feng,支援mp4(H264+AAC))搭建一個RTSP/RTP直播伺服器用來測試,feng相對於darwin、live555等流媒體伺服器的優勢很容易增加新的媒體檔案解析器,按照其中demux_avf.c結構利用ffmpeg API就可以demux出不同container媒體檔案(如avi,3gp,mov),將音視頻資料分別傳到用戶端。
1. 先安裝feng streaming server的依賴庫
1) 安裝glib-2.20.0 , ./configure --prefix=/usr && make && sudo make install
2) 安裝AAC的編解碼faac/faad2 (http://www.audiocoding.com/downloads.html) ./configure --prefix=/usr , make && make install
3) 安裝ffmpeg-0.6 ./configure --prefix=/usr --enable-libfaac --enable-gpl --enable-libfaad --enable-nonfree CXXFLAGS=-D__STDC_CONSTANT_MACROS , make && sudo make install
4) 安裝libev-4.01, ./configure=prefix=/usr make & sudo make install
5) 安裝netembryo-0.1.1, ./configure --prefix=/usr make &make install
2. 安裝feng-2.1.0_rc1.和 flux-1.1 ( ./configure --prefix=/usr , make & make install )
feng 負責RTSP/sdp/RTP協議解析和音視頻資料的RTP封包工作,flux負責RTP直播流的管理,如將網路攝影機的即時資料流映射到某個連接埠上去,flux -c udp://2900*live*mq:///audio -c udp://2902*live*mq:///video
3.啟動feng, 如果傳輸媒體檔案,直接把檔案放到/usr/var/feng/avroot
sudo feng -v 出現如下資訊表示啟動成功:
feng - Feng 2.1.0_rc1
LScube Project - Politecnico di Torino
[Fri Dec 24 00:05:04 2010] Listening to port 554 (TCP) on all interfaces
[Fri Dec 24 00:05:04 2010] [warning] Cannot get group feng id, Success
[Fri Dec 24 00:05:04 2010] [warning] Cannot get user feng id, Success
1)先用vlc播放器測試下RTSP串連:
就可以通過feng的log資訊清晰的看到RTSP協議控制完整流程(OPTIONS,DESCRIBE,SETUP,PLAY),其中OPTIONS階段主要是通過sdp協議傳遞媒體參數資訊,如h264的payload type=96(a=rtpmap:96 H264/90000)
2)在用戶端可以用Android 的測試程式(通過VideoView控制項實現媒體播放器)開始播放
updating....