AVAssetExport 设置恒定帧率

Sin*_*imi 5 video cocoa-touch objective-c avfoundation ios

我正在使用 AVAssetExport 导出资产轨道的组合。但问题是我不能让帧率模式保持不变,导出的视频的元数据如下:

视频
ID:1
格式:AVC
格式/信息:高级视频编解码器
格式配置文件:Main@L3.0
格式设置,CABAC:是
格式设置,ReFrames:2 帧
编解码器 ID:avc1
编解码器 ID/信息:高级视频编码
持续时间:3s 502ms
比特率:684 Kbps的
宽度:480个像素
高度:480个像素
显示纵横比:1.000
帧速率模式:可变
帧速率:30.000 fps的
最小帧速率:28.571 fps的
最大帧速率:30.000 fps的
色彩空间:YUV
色度二次采样:4: 2:0
位深:8 位
扫描类型:渐进式
位/(像素*帧):0.099
流大小:292 KiB (90%)
标题:核心媒体视频
编码日期:UTC 2013-11-22 00:27:28
标记日期:UTC 2013-11-22 00:27:32
原色:BT.709
传输特性:BT.709
矩阵系数:BT. 601

我用于导出的代码如下:

AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetPassthrough];
session.outputURL = [NSURL fileURLWithPath:finalVideoPath];
session.outputFileType = AVFileTypeMPEG4;
[session exportAsynchronouslyWithCompletionHandler:^{
    switch ([session status]) {
        case AVAssetExportSessionStatusFailed:
            LogError(@"Export failed: %@", [session error]);
            break;
        case AVAssetExportSessionStatusCancelled:
            Log(@"Export canceled");
            break;
        case AVAssetExportSessionStatusCompleted:
            Log(@"Export successfully");
            break;
        default:
            Log(@"Export session status unknown");
            break;
    }
}];
Run Code Online (Sandbox Code Playgroud)

set*_*eth 0

这意味着导出的资源的帧持续时间不是恒定的。如果所有帧的持续时间完全相同,那么您将看到“帧速率模式”报告为“恒定”。