Android7.1修改录制视频文件的I帧间隔

说明

android Camera API1默认的视频I帧间隔是1s,我们目前项目中需要修改I帧间隔。

实现

frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp

frameworks/base/media/java/android/media/MediaRecorder.java

MediaFormat.KEY_I_FRAME_INTERVAL这个参数是设置I帧间隔的,值为“i-frame-interval”,全局搜索“i-frame-interval”,发现在StagefrightRecorder.cpp中有设置这个值,最后追踪原始的地方在MediaRecorder.java中有个privite接口setParameter可以设置“video-param-i-frames-interval”的值来设置I帧间隔。

 修改方法一:MediaRecorder.java的prepare中加:setParameter("video-param-i-frames-interval=10");设置I帧间隔为10s。或者在MediaRecorder.java中添加接口给应用自由设置;新增接口如下:

zhoujinyan@zhoujinyan-virtual-machine:~/public/sc826_cn_01_00/Car8953System/frameworks/base$ git diff
diff --git a/frameworks/base/media/java/android/media/MediaRecorder.java b/frameworks/base/media/java/android/media/MediaRecorder.java
index f221019..f74ffbe 100755
--- a/frameworks/base/media/java/android/media/MediaRecorder.java
+++ b/frameworks/base/media/java/android/media/MediaRecorder.java
@@ -836,6 +836,9 @@ public class MediaRecorder
         mFd = null;
         mPath = path;
     }
+    public void setIFrameInterval(int interval) {
+        setParameter("video-param-i-frames-interval="+interval);
+    }

 修改方法二:其他地方不变,修改StagefrightRecorder.cpp中修改的mIFramesIntervalSec 默认值:原默认值为1,改为10即可。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值