android 視訊通話相關
1.用camera還是mediarecorder來獲得視訊流啊?
都可以,
使用camera的話其實就是繼承AbstractCamera類把獲取的每一幀yuv420sp資料使用ffmpeg中的1ibx264或者直接使用x264編碼 軟編碼 得到h264視訊流,然後把資料傳送出去。
使用mediaRecorder其實就是把硬編碼得到的h264流自己進行處理,得到其手機的sps,pps,然後rtp打包傳送出去。
2.用mediarecorder,怎麼獲得每一幀的資料進行rtp打包實時傳送呢?
參考spydroid原始碼,裡面有具體實現。
3.用mediarecorder錄製視訊的時候設定編碼方式H.264,是不是說錄製出的視訊已經是h.264編碼了
舉個簡單例子,mediarecorder設定編碼格式為h264,容器為3gp或者mp4,那麼如果設定儲存路徑就是採用h264格式的 3gp或者mp4檔案。如果是得到實時流,因為視訊header是在後面回寫得到的,那麼你需要把把得到的流進行處理,比如0001 sps 0001 pps 0001 h264data的形式。
4.伺服器採用什麼比較好,有沒有人可以幫忙推薦一下。red測試通過了,但是要關閉防火牆,視訊也有延遲,主要是android往伺服器燒資料感覺沒經過壓縮,這樣肯定是不行的吧。live555??
red5 的話,請採用rtmp協議,請搜尋網上的一個資源iVideoChat視訊錄製釋出到red5伺服器,這個是我以前網上找的,http://download.csdn.net/detail/xiaoliouc/4933594。其實這個demo沒涉及到h264編碼,只是簡單的把從camera得到的每一幀資料yuv420sp轉換成rgb的形式。
live555的話,請研究rtsp協議,c++語言我不太熟,請參考部落格系列文章 http://blog.csdn.net/column/details/streaming-media.html
5.rtp打包,用的是NALDecoder翻譯過來的打包方式,沒法控制啊,看資料有人說使用jrtplib,下載編譯了c++,測試程式也執行過了,一知半解的。有沒有其他的rtp打包工具呢,或者有什麼資料可以提供給學習下
rtp打包參考spydroid的實現方式
6.還看到很多說ffmpeg移植編解碼的,感覺要學的好多
ffmpeg很強大,採集、編碼、切片、解碼,功能很好很輕大。學習步驟應該是ffmpeg的安裝、移植ffmpeg到android上,jni呼叫等。
<-------------------------------------------------------------------------------------------------------------------------------------------------------------->
視訊通話參考sipdroid實現,可以下載sipdroid原始碼,搭建mini sip server測試參考部落格http://blog.csdn.net/banketree/article/details/7979327
<-------------------------------------------------------------------------------------------------------------------------------------------------------------->
編碼方面:
可以使用mediaRecorder或者Camera來進行錄影,這樣錄影,呼叫的編碼介面是安卓的,使用很簡單,而且效率最高,至於是軟編碼還是硬編碼,這個完全取決於底層的實現,反正你不用管。比用X264等編碼庫效果好的多。
傳輸方面:
一是把編碼後的資料,進行RTSP轉換,就是在編碼的這臺手機上面,搭建一個RTSP伺服器。
二是直接把mediaRecorder的資料通過socket傳,就是在OUTPUTFILE那裡輸出為localSocket方式傳,但是這個傳出去的資料,缺少了一個視訊回寫的動作。所以傳的資料,與儲存為檔案方式的資料,頭部資訊略有一點點差異,你只需要在接收端的那臺手機上,新增一點點資訊就可以了。
解碼方面:
一是直接RTSP播放,可以調安卓介面來播。
二是SOCKET收到的資料,因為缺少視訊回寫,所以頭部資訊不全,你把它補全,然後使用第三方的JLIBRTP之類的RTP庫打包即可。
相關文章
- WebRTC音訊通話升級為視訊通話Web音訊
- Android端實現多人音視訊聊天應用(二):多人視訊通話Android
- Android技術分享| 視訊通話開發流程(一)Android
- Android技術分享| 視訊通話開發流程(二)Android
- 基於Linphone開發Android音視訊通話Android
- WebRTC + WebSocket 實現視訊通話Web
- 視訊通話 - 時信魔方教程
- opencv 視訊處理相關OpenCV
- iOS下WebRTC音視訊通話(一)iOSWeb
- Android 8.0 中如何實現視訊通話的畫中畫模式Android模式
- WebRTC現狀以及多人視訊通話分析Web
- 如何基於 Agora Android SDK 在應用中實現視訊通話?GoAndroid
- webRTC——瀏覽器裡的音視訊通話Web瀏覽器
- Android短視訊開發業務中視訊編解碼的相關知識閱讀Android
- 基於 WebRTC 和 WebVR 實現 VR 視訊通話WebVR
- 技術分享| 小程式實現音視訊通話
- 8┃音視訊直播系統之 WebRTC 信令系統實現以及通訊核心並實現視訊通話Web
- 視訊通訊關鍵技術探索及實踐
- 關於iOS多執行緒通訊的相關總結iOS執行緒
- 聲網視訊通話,視訊直播小程式 SDK 初體驗 | 掘金技術徵文
- Android技術分享| 安卓3行程式碼,實現整套音視訊通話功能Android安卓行程
- Android小知識-Java多執行緒相關(執行緒間通訊)上篇AndroidJava執行緒
- iOS基於Socket.io即時通訊IM實現,WebRTC實現視訊通話iOSWeb
- 如何在微信小程式中實現音視訊通話微信小程式
- 基於聲網 Flutter SDK 實現多人視訊通話Flutter
- 【ROS教程】話題通訊ROS
- 【程式碼】--庫函式學習 ftp通訊 相關函式FTP
- 小程式視訊旋轉的相關問題
- Flutter如何和Native通訊-Android視角FlutterAndroid
- 通過連線檢視資料庫相關資訊資料庫
- 秒懂雲通訊:通訊圈黑話大盤點
- ROS話題通訊和服務通訊的區別ROS
- 構建你的第一個Flutter視訊通話應用Flutter
- WebRTC – Agora (聲網)簡介與實現音視訊通話WebGo
- 黑神話:悟空 通關感言
- Android基於fms的視屏通訊咋做Android
- 如何基於 Flutter 快速實現一個視訊通話應用Flutter
- 手機QQ安卓版6.6.0釋出:視訊通話支援濾鏡安卓