如何以最少的重新压缩将新创建的 AVMutableComposition 写入磁盘?
How do I write a newly-created AVMutableComposition to disk with minimal recompression?
我构建了一个带有视频轨道和音频轨道的 AVMutableComposition
,并连接(顺序插入)AVAssets
来自我从磁盘加载到的一堆 .mp4
文件它。
现在我想将生成的合成写到磁盘,使用与源完全相同的设置 material(它们都是由同一个应用程序生成的,一个安全摄像头系统)。
AVAssetExportSession
需要命名预设。我可以只选择 AVAssetExportPresetHEVCHighestQuality
之类的东西,但这意味着重新编码,我觉得应该有一种方法可以以更无损的方式做到这一点。
当我检查与我的作品兼容的预设时,我得到
["AVAssetExportPreset1920x1080", "AVAssetExportPresetLowQuality",
"AVAssetExportPresetAppleM4V720pHD",
"AVAssetExportPresetAppleM4VAppleTV", "AVAssetExportPresetAppleM4A",
"AVAssetExportPresetHEVCHighestQuality", "AVAssetExportPreset640x480",
"AVAssetExportPresetAppleProRes422LPCM",
"AVAssetExportPreset3840x2160", "AVAssetExportPresetHEVC3840x2160",
"AVAssetExportPresetAppleM4VWiFi",
"AVAssetExportPresetHighestQuality",
"AVAssetExportPresetAppleM4VCellular", "AVAssetExportPreset1280x720",
"AVAssetExportPresetMediumQuality",
"AVAssetExportPresetAppleM4V1080pHD",
"AVAssetExportPresetAppleM4V480pSD", "AVAssetExportPreset960x540",
"AVAssetExportPresetAppleM4ViPod", "AVAssetExportPresetHEVC1920x1080"]
有没有更好的方法?
尝试使用 AVAssetExportPresetPassthrough
。
正如文档所述,它不会出现在 exportPresetsCompatibleWithAsset
的结果中(出于未提及的原因),但它通常在从兼容的源资产编写 mp4 或 movs 时有效,并且它只是收集和写入样本数据而没有任何重新编码。
我构建了一个带有视频轨道和音频轨道的 AVMutableComposition
,并连接(顺序插入)AVAssets
来自我从磁盘加载到的一堆 .mp4
文件它。
现在我想将生成的合成写到磁盘,使用与源完全相同的设置 material(它们都是由同一个应用程序生成的,一个安全摄像头系统)。
AVAssetExportSession
需要命名预设。我可以只选择 AVAssetExportPresetHEVCHighestQuality
之类的东西,但这意味着重新编码,我觉得应该有一种方法可以以更无损的方式做到这一点。
当我检查与我的作品兼容的预设时,我得到
["AVAssetExportPreset1920x1080", "AVAssetExportPresetLowQuality", "AVAssetExportPresetAppleM4V720pHD", "AVAssetExportPresetAppleM4VAppleTV", "AVAssetExportPresetAppleM4A", "AVAssetExportPresetHEVCHighestQuality", "AVAssetExportPreset640x480", "AVAssetExportPresetAppleProRes422LPCM", "AVAssetExportPreset3840x2160", "AVAssetExportPresetHEVC3840x2160", "AVAssetExportPresetAppleM4VWiFi", "AVAssetExportPresetHighestQuality", "AVAssetExportPresetAppleM4VCellular", "AVAssetExportPreset1280x720", "AVAssetExportPresetMediumQuality", "AVAssetExportPresetAppleM4V1080pHD", "AVAssetExportPresetAppleM4V480pSD", "AVAssetExportPreset960x540", "AVAssetExportPresetAppleM4ViPod", "AVAssetExportPresetHEVC1920x1080"]
有没有更好的方法?
尝试使用 AVAssetExportPresetPassthrough
。
正如文档所述,它不会出现在 exportPresetsCompatibleWithAsset
的结果中(出于未提及的原因),但它通常在从兼容的源资产编写 mp4 或 movs 时有效,并且它只是收集和写入样本数据而没有任何重新编码。