Google你能把Android的多媒體搞得再爛一些嗎
搞了幾年Android多媒體了,最感受就是Android的多媒體真的非常爛!
@Google,你做的再爛一點嗎?
最近在搞Android視訊編碼,真是快被折騰瘋了,最早用FFmpeg x264編碼,雖然做了很多優化,但是效率還是一個問題;最後採用硬編碼去搞,在解決了一系列的問題後算是跑通了,但是最後發現畫面質量low的讓我懷疑是不是我眼瞎!!!
同樣的位元率,在Android編出來的和IOS沒法比,差好幾個量級,完全不是一個時代的東西,和FFmpeg設定SuperFast編出來的效果有的一拼了。我當時就想,壞了!!估計又掉谷歌的坑裡了,最後發現果然如此,谷歌還真沒讓人失望(#‵′)凸!!
Android硬編碼採用的是H264,通過檢視錄製的視訊,發現採用的全是H264 Baseline,Baseline這是哪個年代的玩意了,這特麼不是坑爹嗎!在往上還有MainProfile,HighProfile,更別提HighProfile還有多個版本了。
在相同配置情況下,Highprofile(HP)可以比Mainprofile(MP)節省10%的碼流量,比MPEG-2 MP節省60%的碼流量,具有更好的編碼效能。
上面是大家比較認可的一組資料,其中壓根就沒有提到Baseline,我目前的測試情況是:
IOS視訊引數為720P,FPS = 30,GopSize = 30,BitRate = 1.65Mb/s
Android平臺採用除BitRate之外的相同引數,硬編碼要達到同等級的畫面質量位元率差不多需要3Mb/s(目前只是初步分析,還未採用專業的視訊畫質評測工具進行分析)這意味什麼…………這意味著:如果要達到相同畫質的話,Android錄製的視訊檔案幾乎是IOS的兩倍!!!
面對這種結果我接受不了,老闆更接受不了,只能調研下Android到底能不能設定MediaCodec Profile。
首先看的是Android原生攝像機,太扯淡了……
先看720P的視訊:
位元率約為11.6Mb/s
再看看4k的:
位元率約40Mb/s
這裡解釋下位元率,我們看到的檔案大小都是按照位元組計算的,比如1GB,1MB,1KB,位元組和位元的換算是1:8,即把位元率除以8等於每秒視訊需要的儲存空間。
幾個例子吧:以前我們看到的720P的電影大小約為2G,時長約為2個小時,每秒大小0.57MB,位元率約為4.5Mb/s。如果按照Google那玩意編碼,同樣的電影其大小差不多得5個G!!!而且還不能保證達到原有的效果!!!
調研了半天發現Google MediaCodecInfo API有設定Level和Profile的介面:
MediaCodecInfo.CodecProfileLevel
我有些懷疑……………………
繼續查,發現這個功能在API 16上就是一假的,壓根不能用只能用Baseline,在Android M上才實現:
KEY_LEVEL was added in Android 6.0 (API 23)
但是還有問題:
There are additional issues with profile selection. E.g. PROFILE is set to baseline profile for AVC as of Android 6.0 even if specified. This is planned to be fixed in the future.
不論是過去還是現在,多媒體是手機上非常重要的一個功能,只是Google做的太爛了,看看現今比較流行的多媒體應用(Snapchat,Instagram,映客,陌陌,快手等等),IOS的效果要遠遠好於Android,這並不是說Android開發人員能力的問題,Android平臺相當一部分多媒體功能的實現還是依賴於FFmpeg,但是FFmpeg的效率始終是個問題。相比於IOS的AVFoundation來說,在Android平臺往往需要花費數倍的投入,而且最終效果可能還不急IOS,對於Android開發人員來說實在是個悲哀,因為老闆只看最終結果,而結果卻是Android投入更多,開發時間更長,效果卻最次。
Google自從5.0之後就開始狂發版本,但是有個卵用,7.0引入和分屏功能看似很炫,但是又有何用,真正使用者需要的比如許可權控制,效能優化,續航,穩定性等等這些又在哪裡?其PPT簡直就是在扯淡,和當年畝產萬斤簡直有著異曲同工之妙!!
截至3月6日,在過去7天的時間內對訪問Google Play的所有裝置進行統計彙總:[1]
參考文獻
[1] Android三月版本分佈圖出爐:Nougat環比增加133%
相關文章
- 新媒體運營發展方向多嗎?影片新媒體剪輯軟體
- 給你一臺伺服器,你能把你寫的程式碼部署到線上嗎?伺服器
- Android 多執行緒:你的 Handler 記憶體洩露 了嗎?Android執行緒記憶體洩露
- Android多媒體之Camera的相關操作Android
- 基於 VLC 的 Android 多媒體解決方案Android
- Android多媒體框架中幾個重要的類Android框架
- Android入門(十六):手機多媒體Android
- Android車載多媒體與MediaSession框架AndroidSession框架
- Android掃描多媒體檔案剖析Android
- 新媒體運營加班多嗎?新媒體與互動設計學習
- 用來寫爆文的自媒體工具,你有在用嗎?
- Android多媒體之認識MP3與內建媒體播放(MediaPlayer)Android
- 我真的能做好自媒體嗎?這幾年我做自媒體的經驗,分享給你
- 自媒體多平臺同步,自媒體多平臺分發,自媒體多平臺管理
- Android多媒體之Camera2的相關操作Android
- Android多媒體之SoundPool+pcm流的音訊操作Android音訊
- Android 多媒體之 Silk 格式音訊解碼Android音訊
- 微軟:調查發現Z世代員工被遠端工作搞得焦頭爛額微軟
- 你的Android裝置有惡意軟體嗎?Android
- 打造你的泛娛樂多媒體應用開發核心能力
- Linux下的多媒體軟體(轉)Linux
- 入門新媒體運營,這些事情你都瞭解嗎?
- Android多媒體之視訊播放器(基於MediaPlayer)Android播放器
- Android多媒體應用開發-控制攝像頭拍照Android
- 行了! 學會「看電影」的AI, 你能讓編劇別再拋給我們雷劇、爛劇、不知所云劇嗎?AI
- 關於流媒體的一些常識
- 你的程式碼寫的很爛
- 你真的懂Android的TextView嗎?AndroidTextView
- 多媒體互動展廳設計中的多媒體應用一般都有哪些?
- 學新媒體運營有用嗎?新媒體運營入門
- 女生適合做新媒體運營工作嗎?新媒體營銷
- 如何做好新媒體運營工作?新媒體工作多嗎?
- 多工處理:這是媒體環境下你的大腦–資訊圖
- 同一篇自媒體原創文章可以在多平臺釋出嗎?這篇文章為你解答
- Android Media(多媒體)獲取手機記憶體卡下的音樂並播放Android記憶體
- 自媒體平臺有哪些?這些平臺你都認識嗎?
- Emby for Mac多媒體影音庫Mac
- C# DirectShow 播放多媒體C#