借助iOS4附带的AVFoundation中的新视频功能,可以使用AVCaptureVideoDataOutput访问相机捕获的原始视频帧。
我想在这些帧之上叠加文本和其他信息,然后将它们输出到电影文件中,该文件在某些时候会保存到资产库中。
不幸的是,似乎Apple没有给我们提供一种简单的方法来将这些帧保存到电影文件中。
将帧保存到与资产库兼容的电影文件有哪些选择?
有没有办法只使用iPhone SDK来实现这一目标?
如果没有,哪些第三方库与iPhone兼容并可用于实现此目的?
答案 0 :(得分:0)
我发现没有包含对用AVCaptureVideoDataOutput
捕获的帧进行编码或将它们写入Quicktime .mov文件的方法。
您可能需要查看ffmpeg以查看它是否符合您的需求 - 它可以同时处理容器格式和编码。
答案 1 :(得分:0)
AVCaptureMovieFileOutput
可让您将数据捕获到QuickTime电影中,这可能会有所帮助......
答案 2 :(得分:0)
喂!如果你只需要对你的视频做一些水印,那么用你的相机拍摄电影然后使用AVVideoComposition的AVVideoCompositionCoreAnimationTool会很容易。您可以添加任何类型的动画,文本作为视频的叠加层。
答案 3 :(得分:0)
您现在可以使用AVAssetWriter
将帧保存到AVCaptureVideoDataOutput
以下是在Swift 4中如何使用AVAssetWriter
的示例:
assetWriter = AVAssetWriter()
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
let outputURL = URL(fileURLWithPath: documentsPath!).appendingPathComponent("test.m4v")
assetWriter = try! AVAssetWriter(outputURL: outputURL, fileType: .mp4)
assetWriterInput = AVAssetWriterInput(mediaType: .video, outputSettings: videoOutput.recommendedVideoSettingsForAssetWriter(writingTo: .mp4))
assetWriterInput.expectsMediaDataInRealTime = true
if assetWriter.canAdd(assetWriterInput) {
assetWriter.add(assetWriterInput)
} else {
print("no input added")
}
assetWriter.startWriting()
参考文档在这里:AVAssetWriter
我希望这对某人有帮助,我现在也正在经历AVFoundation自身的挣扎。