Android 8.0以上 MTK Camera视频画质分辨率配置以及media_profiles.xml解析

从Android 8.0开始,media_profiles.xml/media_profiles_ducam.xml(双摄项目)成为了配置视频画质、格式、帧率等参数的文件了,而不同于之前7.0上放在MediaProflie.cpp中配置了。

1.确认codec格式及目前的支持情况

//支持mp4/3gp这两种文件格式
<!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED>
//帧率30、60
<!ATTLIST EncoderProfile duration (30|60) #REQUIRED>
//摄像头id 0、1、2
<!ATTLIST EncoderProfile cameraId (0|1|2) #REQUIRED>
//视频编码格式
<!ATTLIST Video codec (h264|h263|m4v) #REQUIRED>
//视频输出文件格式mp4、3gp
<!ELEMENT EncoderOutputFileFormat EMPTY>
<!ATTLIST EncoderOutputFileFormat name (mp4|3gp) #REQUIRED>

2.CamcorderProfiles

0是后摄 1是前摄 2是双后摄中的副摄像头 3是双前摄中的副摄像头如果需要添加cameraId,直接copy整个cameraID目录下的item并按需要修改特定的item即可




每一个都是一个组合,包含了很多item,里面包含很多组参数

3.具体参数

在Android O中,在CamcorderProfiles组合中如果要添加新的item,quality的值一定要在/frameworks/av/media/libmedia/MediaProfiles.cpp的const MediaProfiles::NameToTagMap MediaProfiles::sCamcorderQualityNameMap[]中能够找到,而且不能自行在此map表中添加,否则会VTS 测试fail。

<CamcorderProfiles>
        //format表示文件格式,格式可以直接改为MPEG4,duration在limitation限制的APP中有用(比如彩信),30代表30s
        <EncoderProfile quality="qcif" fileFormat="3gp" duration="30">
            <Video codec="h263" //codec格式h263,可改成支持的格式h263、h264、MPEG4
                   bitRate="192000"
                   width="176" //宽
                   height="144" //高
                   frameRate="20" /> //视频帧率
             <Audio codec="aac" //audio codec格式
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
        <EncoderProfile quality="qvga" fileFormat="3gp" duration="30">
            <Video codec="m4v"
                   bitRate="1000000"
                   width="320"
                   height="240"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
        <EncoderProfile quality="cif" fileFormat="3gp" duration="30">
            <Video codec="m4v"
                   bitRate="1250000"
                   width="352"
                   height="288"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
        <EncoderProfile quality="480p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="4500000"
                   width="640"
                   height="480"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
        <EncoderProfile quality="720p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="9000000"
                   width="1280"
                   height="720"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
        <EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="17000000"
                   width="1920"
                   height="1080"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
        <ImageEncoding quality="95" /> //用于设置默认image encode的quality,无需关注
        <ImageEncoding quality="80" />
        <ImageEncoding quality="70" />
        <ImageDecoding memCap="20000000" /> //跟image decode相关,无需关注
</CamcorderProfiles>
<EncoderOutputFileFormat name="3gp" />
<EncoderOutputFileFormat name="mp4" />
    <VideoEncoderCap name="h264" enabled="true" //格式h264
        minBitRate="64000" maxBitRate="40000000"
        minFrameWidth="176" maxFrameWidth="1920"//要设置比maxFrameWidth还大的分辨率,要同步修改
        minFrameHeight="144" maxFrameHeight="1080"//要设置比maxFrameHeight还大的分辨率,要同步修改
        minFrameRate="15" maxFrameRate="30" /> //帧率范围
    <VideoEncoderCap name="h263" enabled="true"  //格式h263
        minBitRate="64000" maxBitRate="2000000"
        minFrameWidth="176" maxFrameWidth="800"
        minFrameHeight="144" maxFrameHeight="480"
        minFrameRate="15" maxFrameRate="30" />
    <VideoEncoderCap name="m4v" enabled="true"  //格式m4v
        minBitRate="64000" maxBitRate="4000000"
        minFrameWidth="176" maxFrameWidth="720"
        minFrameHeight="144" maxFrameHeight="480"
        minFrameRate="15" maxFrameRate="30" />

4.视频画质分辨率配置

先根据camera id来判断修改具体的item。

diff --git a/media_profiles.xml b/media_profiles.xml
index 2bfc0e1..72bbb1b 100755
--- a/media_profiles.xml
+++ b/media_profiles.xml
@@ -134,8 +134,8 @@
         <EncoderProfile quality="cif" fileFormat="3gp" duration="30">
             <Video codec="m4v"
                    bitRate="1250000"
-                   width="352"
-                   height="288"
+                   width="320"
+                   height="240"
                    frameRate="30" />
             <Audio codec="aac"
                    bitRate="128000"
@@ -156,7 +156,7 @@
         <EncoderProfile quality="720p" fileFormat="3gp" duration="30">
             <Video codec="h264"
                    bitRate="9000000"
-                   width="1280"
+                   width="1440"
                    height="720"
                    frameRate="30" />
             <Audio codec="aac"
@@ -167,8 +167,8 @@
         <EncoderProfile quality="1080p" fileFormat="3gp" duration="30">
             <Video codec="h264"
                    bitRate="17000000"
-                   width="1920"
-                   height="1080"
+                   width="2048"
+                   height="1024"
                    frameRate="30" />
             <Audio codec="aac"
                    bitRate="128000"

************************
    <CamcorderProfiles cameraId="0">   //camera 为 0
        <EncoderProfile quality="low" fileFormat="mp4" duration="30"> // 质量low  视频格式mp4
            <Video codec="h263"
                   bitRate="192000"
                   width="176"  
                   height="144"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="128000"
                   sampleRate="48000"
                   channels="2" />
        </EncoderProfile>
*******************

你可能感兴趣的:(Android,Camera)