欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-27 22:32:46
说明android Camera API1默认的视频I帧间隔是1S,我们目前项目中需要修改I帧间隔。实现frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cppframeworks/base/media/java/android/media/MediaRecorder.javaMediaFormat.KEY_I_FRAME_INTERVAL这个参数是设置I帧间隔的,值为“i-frame-interval”,全局搜索...

说明

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