很多人對直播軟件開發還是抱有想法的,但是在這個資本冷靜的市場下,直播平臺該怎麼玩,在直播軟件開發過程中哪些功能是必須具備的,這都是值得關注的話題。今天我們給大家分享一份詳細的直播軟件開發關於Android 、iOS音視頻採集步驟講解。
直播軟件開發
手機直播軟件開發過程中,Android 音頻幀採集步驟:
與Camera 的配置相比,AudioRecord 簡單了很多,在實例化 AudioRecord 時需要指定採集源,筆者設定為了麥克風,然後指定採樣率,筆者採用兼容性非常強的 44100Hz ,也就是每秒採集 44100 次,接著是配置音頻通道,由於筆者對音頻要求不是很高所以採用了 AudioFormat.CHANNEL_IN_MONO 代表單通道,當然也是支持雙通道立體聲採集的,只需傳入 AudioFormat.CHANNEL_IN_STEREO 即可,然後再設置採樣的數據格式,也就是每個採樣值所佔空間的大小,筆者選擇了 16位 也就是 2 byte ,最後再配置上緩衝器大小,這個值一般不是寫死的可以通過 AudioRecord.getMinBufferSize 來獲取一個最小值。
接著只需要調用AudioRecord.read 即可獲取採集到的 PCM 視頻。
手機直播軟件開發過程中,Android 視頻幀採集步驟:
對於Android直播軟件開發者來說Camera 這個類並不陌生,我們只需要一些簡單配置以後就可以配合 SurfaceView 來瀏覽攝像頭所捕捉到的畫面,我們這次的部分配置也許與往常的不同,因為我們需要自己處理每一幀視頻,比如需要設置一個採樣格式: Camera.Parameters.setPreviewFormat,點進源碼你會發現裡面所支持的格式有很多,但是不幸的是 5.0 以前只支持 NV12 與 YV12 ,關於這兩種採樣模式等下會細講。除此之外你還需添加緩衝區來存放臨時的視頻數據,並設置採樣回調,如:
這裡的buffSize 大小與採樣格式息息相關,不過 NV12 與 YV12 的每幀大小倒是剛好一樣大的,都是3/2HW,在 TODO 的位置我們就可以對視頻進行編碼與或者其他操作,但是千萬別直接編碼或者操作,很關鍵!你可以使用一個隊列來儲存數據,然後開啟一個線程去讀這個隊列裡面的數據,然後進行操作,因為你直接操作很可能阻塞這個線程,這個線程是主線程,雖然一般不會導致 ANR ,但是很可能造成丟幀,比如你採集的幀率是 30fps ,採集到第一幀的時候你阻塞了一會兒,那麼很可能第二第三幀就會丟,然後你處理第四幀,第五第六幀就會丟,最後播放視頻的時候就會像按了快進一樣,並且處理完後我們需要及時把 buffer 歸還給 Camera。
直播軟件開發
手機直播軟件開發過程中,iOS音視頻採集的步驟
1、創建並初始化 AVCaptureSession。
2、創建並初始化 AVCaptureVideoDataOutput。
3、設置 AVCaptureVideoDataOutput的videoSettings,videoSettings 中的 Key and value 包含了輸出圖像與視頻格式定義。
4、調用 AVCaptureVideoDataOutput 對象的 setSampleBufferDelegate 方法,設置採樣數據緩衝區的代理。這樣當從輸入設備採集到數據後,系統就會自動調用AVCaptureVideoDataOutputSampleBufferDelegate 協議中的 captureOutput 方法,從而獲取到視頻數據。
5、將 AVCaptureVideoDataOutput 對象添加到 AVCaptureSession對象中。
6、根據視頻類型 AVMediaTypeVideo,創建 AVCaptureDevice 對象。(可以創建視頻設備也可以創建音頻設備)。
7、以 AVCaptureDevice 為參數,創建 AVCaptureDeviceInput 對象。
8、將 AVCaptureDeviceInput 對像添加到 AVCaptureSession 對象中。
9、調用 AVCaptureSession 對象的 setSessionPreset 方法進行屬性設置。如 設置 quality level, bitrate, 或其它 output 的 settings。
10、調用 Output 對象的 connectionWithMediaType 方法,建立 Input與Output之前的連接。
11、調用 AVCaptureSession 對象的 startRunning() 方法,開始視頻採集。12、調用 AVCaptureSession 對像的 stopRunning() 方法,停止視頻採集。
直播軟件開發
以上音視頻採集步驟主要是直播軟件開發過程中app開發基本功能展示,除此之外還會包好管理後臺功能。其實,直播平臺如何搭建這個問題並不困難,大多數服務商會免費提供直播平臺搭建部署服務,如果是自己搭建網上也有很多參考教程,對於後期運營而言直播軟件開發時的功能確立反而更為重要。
聲明:本篇文章為雲豹kj的小編原創文章,轉載請帶鏈接並表明名稱。