问题:在视频采集后,通过Mediacodec编码生成h264视频文件,播放时出现马赛克较多,无论调整帧率、码率、还是分辨率都不能解决问题

出现问题的原因:编码时传入的时间戳不对。时间戳是视频播放的标准,应该以采集一帧画面时的时间为准,而不应该是编码时的时间,所以编码时传入的时间戳可以使用采集该帧数据时的时间。

关于网上用固定步长增加的变量作为时间戳的方式,个人认为不是很准确。

个人认为比较准确的方法就是在获取摄像头采集到的原始数据之后,可以通过long stamptime = System.nanoTime()获取到当前时间戳,然后在编码时将stamptime传入queueInputBuffer(........)中,就可保证编码后的视频没有马赛克。

切忌stamptime在编码时才获取,因为在采集到编码之间,可能需要转换YUV格式(如采集的是YV12格式,编码需要传入的是YUV420sp格式),这会耗时(时间长短可能是变化的),就造成了此时的时间与原始画面的时间间隔存在差异,如果在此时获取stamptime传入queueInputBuffer(........),编码的帧在时间上不连续,形成马赛克

最新文章

  1. DateUtil工具类
  2. 解决ADB server didn't ACK问题,连上手机问题
  3. 深入理解JVM—JVM内存模型
  4. fackbook的Fresco的Image Pipeline以及自身的缓存机制
  5. jbpm3.2中jbpm.jpdl.mysql.sql文件运行报错的问题
  6. c#索引器的简单用法
  7. (转)Vim用法小结
  8. 数据结构&&算法基础知识
  9. Linux服务器SNMP常用OID (转)
  10. Android开发中出现cannot be resolved to a variable错误,也就是R文件不能生成。
  11. Linux-jdk1.7-tomcat7 简易安装
  12. CentOS7使用dnf安装mysql
  13. combinations(组合)
  14. 【视频】设计模式(C++)视频讲解
  15. 生成3位的序列号_仅仅CASE WHEN的简单应用
  16. IDEA将项目上传至码云/GitHub托管
  17. ABAP 中的搜索帮助
  18. 【Python】【辅助程序】练手小程序:记录外网动态IP地址
  19. Magento2与Magento1的区别有哪些
  20. sql help cs

热门文章

  1. [BZOJ1163&1339]Mafia
  2. 清北学堂模拟赛d1t2 火柴棒 (stick)
  3. P1656 炸铁路 洛谷
  4. Ubuntu 16.04安装Insight实现汇编的调试
  5. Android: MediaRecorder start failed
  6. 3.1-HDLC/PPP
  7. objc_setAssociatedObject 1
  8. Codeforces Round #311 (Div. 2)A Ilya and Diplomas
  9. 360p以上
  10. LeetCode241——Different Ways to Add Parentheses