H264解码器源码,移植ffmpeg中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过。

程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。

在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点。

如果采用在底层做Nal分割的方法,可以封装得好看一些,但是每次送的数据有限制,如果送的数据太多,底层可能会一次解码出好几帧视频,但是通知到界面层只能显示一帧,造成丢帧的现象。 如果每次送的数据较少,就会有很多次底层调用没有进行实质解码,很小气的做法,比如有一压缩数据帧需要600字节,如果一次送100个字节给解码器,那么要送6次才会进行实质解码,因为每个数据帧有大有小,所以只能取极小值才不会导致丢帧。

不过所有的编码解码都是各种因素平衡折中的结果,具体用什么方法具体分析。

注意解码库写死了视频大小240x320,其他视频大小要简单修改一下底层的代码。

解码源码下载地址:http://mcodec.cnblogs.com/files/mcodec/H264Android.rar

测试码流下载地址:http://mcodec.cnblogs.com/files/mcodec/butterfly.h264.rar

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android音视频之视频采集(系统API预览)
  5. 使用Android(安卓)Studio+Spring Boot+MySQL数据库实现博客APP
  6. J2ME VS Android
  7. Android屏幕录制并转换gif
  8. Android(安卓)RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存
  9. Android(安卓)studio APP开发 ListView控件的建立和使用

随机推荐

  1. android 调用相机保存拍照后的图片
  2. android vibrator 震动
  3. Android 字体相关内容
  4. Android 学习--ListView 的使用(一)
  5. android 入门学习笔记 Button 常用的弹窗
  6. Android safe mode
  7. Retrofit源码导读
  8. Android 简单的统计图
  9. Android(安卓)Studio Gradle 多渠道打包
  10. 选项菜单、子菜单、上下文菜单的使用