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
上一篇: 降雨绘图(JAVA实现)