Ios 使用AVAssetWriter而不是AVAssetExportSession导出AVMutableVideoComposition
我有一个Ios 使用AVAssetWriter而不是AVAssetExportSession导出AVMutableVideoComposition,ios,avfoundation,Ios,Avfoundation,我有一个AVMutableVideoComposition,我想把它导出到一个视频文件中 不幸的是,AVAssetExportSession无法进行剪切,因为我需要对输出视频设置(比特率、关键帧等)进行精细控制 如何从AVMutableVideoComposition中提取图像以将其提供给AVAssetWriterInput 到目前为止,我研究了AVVideoCompositionRenderContext和AVAsynchronousVideoCompositionRequest,但两者似乎都
AVMutableVideoComposition
,我想把它导出到一个视频文件中
不幸的是,AVAssetExportSession
无法进行剪切,因为我需要对输出视频设置(比特率、关键帧等)进行精细控制
如何从AVMutableVideoComposition
中提取图像以将其提供给AVAssetWriterInput
到目前为止,我研究了
AVVideoCompositionRenderContext
和AVAsynchronousVideoCompositionRequest
,但两者似乎都是死胡同,因为我找不到一个API来呈现我的AVMutableComposition
,现在我认为这是不可能的
此限制有两种解决方法:
- 放弃
,使用AVMutableVideoComposition
和avassetrader
=>如果你只想观看一些视频,这就是你应该做的avassetradertrackoutput
- 两次通过。使用
导出视频一次,然后再次读写 =>不是最优的,因为我的视频太小,所以我可以侥幸逃脱。 =>如果有转换、AVMutableVideoComposition
和其他复杂操作,编写起来就容易多了CIFilters
希望下次我能找到一个更干净的解决方案:现在我认为这是不可能的 此限制有两种解决方法:
- 放弃
,使用AVMutableVideoComposition
和avassetrader
=>如果你只想观看一些视频,这就是你应该做的avassetradertrackoutput
- 两次通过。使用
导出视频一次,然后再次读写 =>不是最优的,因为我的视频太小,所以我可以侥幸逃脱。 =>如果有转换、AVMutableVideoComposition
和其他复杂操作,编写起来就容易多了CIFilters
希望下次我能找到一个更干净的解决方案:设置一个
avassetrader
从AVMutableVideoComposition
中“读取”视频帧,然后将它们交给AVAssetWriterInput
。您可以使用avassetradervideompositionoutput
设置资产读取器,设置videoComposition
,如果需要,还可以设置customVideoCompositor
。自定义视频合成器是您可以使用自己的CIFILTER和任何您想要的东西的地方。设置一个avassetrader
,从AVMutableVideoComposition
中“读取”视频帧,然后将其交给AVAssetWriterInput
。您可以使用avassetradervideompositionoutput
设置资产读取器,设置videoComposition
,如果需要,还可以设置customVideoCompositor
。自定义视频合成器是您可以使用自己的CIFILTER和任何您想要的东西的地方。哦,天哪,我不知道我怎么会错过它AVMutableVideoComposition
是AVAsset的一个子类!等等,我说得太快了,把我的AVMutableComposition
错当成了我的AVMutableVideoComposition
。虽然AVMutableComposition
是AVAsset
的一个子类,但AVMutableVideoComposition
不是。因此,avassetrader
无法使用。您的评论令人费解。是的,你12月12日的评论错误地说AVMVC是AVAsset的一个子类,实际上它是AV[可变]组合,但这不是问题。。。我所说的一切都是正确的。你还有什么不明白的吗?对不起,又是我的错。我重新检查了两次,看起来你是对的,尽管我还不能实现。天哪,我不知道我怎么会错过AVMutableVideoComposition
是AVAsset的一个子类!等等,我说得太快了,把我的AVMutableComposition
错当成了我的AVMutableVideoComposition
。虽然AVMutableComposition
是AVAsset
的一个子类,但AVMutableVideoComposition
不是。因此,avassetrader
无法使用。您的评论令人费解。是的,你12月12日的评论错误地说AVMVC是AVAsset的一个子类,实际上它是AV[可变]组合,但这不是问题。。。我所说的一切都是正确的。你还有什么不明白的吗?对不起,又是我的错。我重新检查了两次,看起来你是对的,尽管我还不能实现。