Andrid 8.0/9.0 MTK Camera 录像文件默认为.mp4格式

在mtk项目中,默认Release的代码录像的文件格式为.3gp,而我们可能会需要将录像文件默认为.mp4格式。
mp4格式是一种相对来说应用比较广泛常见的视频格式。

之前碰到一个bug,使用系统相机录制的视频,在QQ对话中,选择本地的相册,会看不到系统录制的视频文件;而对比使用三方美颜相机app,录制的视频可以在QQ对话选择相册时遍历到。区别就在于两者格式不同,系统是3gp,而三方是mp4。这个也与QQ的视频过滤筛选有关,可能没有把3gp格式的视频加入筛选条件,或是某方面出现问题。所以为了解决这个问题,可将系统camera录像文件默认为mp4格式。

Andorid 8.0以前修改方法

文件路径:alps/frameworks/base/media/libmedia/MediaProfiles.cpp
将如下的OUTPUT_FORMAT_THREE_GPP修改为OUTPUT_FORMAT_MPEG_4即可。

MediaProfiles::createMTKCamcorderProfile(camcorder_quality quality, camcorder_mode CamMode, camera_id CamId) {
    .........
    CamcorderProfile *profile = new MediaProfiles::CamcorderProfile;
    profile->mCameraId = CamId;
    profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; //修改处
    profile->mQuality = quality;
    profile->mDuration = 30;
    profile->mVideoCodec = videoCodec;
    profile->mAudioCodec = audioCodec;
    return profile;
}

Android 8.0、8.1、9.0版本修改方法

在项目找到对应的media_profiles.xml中需要修改的resolution对应的fileFormat,改为mp4即可。

如可以将:
<EncoderProfile quality="720p" fileFormat="3gp" duration="30">
修改为:
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">

上层可以直接获取视频录像文件的默认格式来判断:

    /**
     * get the out file type.
     * @return file type
     * @param outputFileFormat the file type
     */
    public String convertOutputFormatToMimeType(int outputFileFormat) {
        if (outputFileFormat == MediaRecorder.OutputFormat.MPEG_4) {
            return "video/mp4";
        }
        return "video/3gpp";
    }
    //outputFileFormat属性是CamcorderProfile.fileFormat.

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