快乐的搬砖生活总是短暂的,按照道理讲,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 媒体信息字幕超时
不要问我为啥要重复造轮子,在下不知道,告辞。