快樂的搬磚生活總是短暫的,按照道理講,github 上 諸多大佬的播放器功能齊全,代碼還好看,完全沒有必要自己去搞一搞播放器。但是呢,我們需要每天進步的嘛(老板說那個BFQ體驗沒有騰訊,愛奇藝,優酷等的好,我們也要做得YMYY),于是快樂的搬磚生活就GG了。
ok,作為一個菜雞,我第一時間想到的是重寫大佬播放的UI,嗯?千興萬苦(moyu)改了半天。老板覺得還是不好,嗯?你可以懷疑我,但是不可以懷疑 大佬OK?。但是在學習和工作(wuliao)的壓力下我覺得從Java 播放器的底層開始,為啥不是FFMPEG?嗯,當初學C的時候在打游戲,否則我可能現在不是一個菜雞。
因為Android 的mediaplayer 只負責流(我感覺是),Surface負責顯示內容。有點懵逼,如果是音頻要設置Surface嗎,暫時先放一邊,現在是搬視頻播放器時間。通過谷歌粑粑提供的api 結合國內大佬們的翻譯。
常用的回調:
mediaPlayer.setOnPreparedListener();
mediaPlayer.setOnCompletionListener();
mediaPlayer.setOnBufferingUpdateListener();
mediaPlayer.setOnSeekCompleteListener();
mediaPlayer.setOnErrorListener();
mediaPlayer.setOnInfoListener();
mediaPlayer.setOnVideoSizeChangedListener();
具體含義嘛,請手動搜索“百度翻譯”然后復制進去就好。
setOnInfoListener 這個感覺很重要(不要問我為啥,直覺),那么關鍵字what的意思就很重要了。
MediaPlayer.MEDIA_INFO_UNKNOWN 媒體信息未知
MediaPlayer.MEDIA_INFO_STARTED_AS_NEXT 媒體信息開始作為下一個
MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START 媒體\信息\視頻\渲染\開始
MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING 媒體信息視頻跟蹤滯后
MediaPlayer.MEDIA_INFO_BUFFERING_START 媒體信息緩沖啟動
MediaPlayer.MEDIA_INFO_BUFFERING_END 媒體信息緩沖結束
MediaPlayer.MEDIA_INFO_NETWORK_BANDWIDTH 媒體信息網絡帶寬
MediaPlayer.MEDIA_INFO_BAD_INTERLEAVING 媒體-信息-壞-交錯
MediaPlayer.MEDIA_INFO_NOT_SEEKABLE 媒體信息找不到
MediaPlayer.MEDIA_INFO_METADATA_UPDATE 媒體信息元數據更新
MediaPlayer.MEDIA_INFO_EXTERNAL_METADATA_UPDATE 媒體信息外部元數據更新
MediaPlayer.MEDIA_INFO_AUDIO_NOT_PLAYING MEDIA_INFO_VIDEO_NOT_PLAYING 媒體\信息\音頻\不播放媒體\信息\視頻\不播放
MediaPlayer.MEDIA_INFO_TIMED_TEXT_ERROR 媒體信息計時文本錯誤
MediaPlayer.MEDIA_INFO_UNSUPPORTED_SUBTITLE 媒體信息不支持字幕
MediaPlayer.MEDIA_INFO_SUBTITLE_TIMED_OUT 媒體信息字幕超時
不要問我為啥要重復造輪子,在下不知道,告辭。