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

2022-07-30,,,,

说明

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即可。

 

本文地址:https://blog.csdn.net/zjy764219923/article/details/107932277

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

下载本文的Word格式文档,以方便收藏与打印。