1. 程式人生 > >即時通訊音視訊開發(包含2種NDK環境配置)

即時通訊音視訊開發(包含2種NDK環境配置)

有很多理論和架構方面的資料,像我矇頭寫程式碼寫了這段時間,看看這個,感覺還是能學習很多的,退幾步講,給面試的時候提供了裝B的材料。

大致翻閱了裡面關於音視訊的文章。無非還是那幾樣,先採樣,然後編碼,流式傳送,接收快取,正常速率讀取,然後解碼後,播放語音或者視訊。
這裡的編解碼,涉及到軟解碼和硬解碼,軟解碼的話,一般就要用C程式碼了,這裡就牽扯到了JNI

終於實現了C++程式碼的混用,但是。這個方法還是有點冗餘,比如Android.mk,假如程式碼複雜又不太好用了。

另外用gradle-experimental的方法,始終不行,gradle-experimental始終沒有裝上去。

我的環境是,java1.7 + AS2.1.2

畫了整整一天的時間折騰環境,還真是麻煩。接下去聊聊音訊的開發。

首先明確,這個專案是p2p的語音聊天。因此過程其實不復雜,當兩個ip對接後,一方,採集,編碼,傳送,另一方,接收,解碼,播放就行。編碼,有一個C語言下的xmpp協議,還有一個不錯demohttp://blog.csdn.net/zgyulongfei/article/details/7753330可以研究下。

接著是視訊聊天開發調研。這個編解碼是必不可少了。不編碼的話,例如,200*200大小的視訊,圖片傳送,一張就是200*200*3*8?差不多,比UDP最大包還大,所以沒法發。

目前已經實現了,把他的so拿過來,然後編寫一個測試程式碼,基本上按照他的步驟走。最後佈局調整下,gradle.properties後面加一句android.useDeprecatedNdk=true(普通JNI也需要),build.gradle(app)那個加上sourceSets.main{
jniLibs.srcDir 'src/main/libs'
jni.srcDirs=[]
}(這部分,普通JNI也需要),這樣就能編譯通過了

ndk需要和ffmpeg聯合編譯貌似,所以。。

剛剛給他點贊。。然後就博主就放棄了。。看看雷神的吧

還有個JavaVc的方案

暫時實現了一個Mediacodec的方案。會有一篇文章專門講這個心酸歷程