Android 写一个属于自己的音视频播放器详解手机开发

基本概况

利用Android的SurfaceView + JNI + OpenGL + OpenSL +ffmpeg所做的一个本地视频播放器;

其实去年底在学习音视频知识的时候就做完了这个Demo,但一直想找时间改进并且拖着没有记录成博客,最近在复习音视频知识,希望能够把这个项目重新熟悉一下,顺便记录下来

Android 写一个属于自己的音视频播放器详解手机开发
Android 写一个属于自己的音视频播放器详解手机开发

完成功能:
  1. 解析本地视频音频和视频
  2. 音视频同步
  3. 暂停恢复播放
  4. 支持拖动播放
基本结构:

在这里插入图片描述

  1. MediaPlayerController 负责对外jni接口
  2. MediaSynchronizer 同步模块
  3. TextureQueue 内部有队列缓存视频帧,负责存入VideoFrame、转换为TextureFrame和对外提供TextureFrame
  4. AudioQueue 内部有队列缓存音频帧
  5. MediaDecoder 音视频解码器
  6. VideoOutput 视频输出
  7. AudioQueue 音频输出
前期知识点:

OpenGL、多线程知识、简单的音视频知识

遇到的难点:
  1. 音视频同步问题
  2. 音频解码速度和视频解码速度差距很大
  3. 播放的速度远远小于解码的解码速度
  4. OpenSL音频播放线程、OpenGL视频渲染线程、ffmpeg解码线程怎么协调,还有先后顺序
  5. 不同格式视频解码对齐问题,会造成花屏错位问题
源码:

云图网

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/6257.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论