从AVCaptureVideoDataOutput视频帧保存电影

时间:2010-07-13 15:21:12

标签: iphone video video-encoding

借助iOS4附带的AVFoundation中的新视频功能,可以使用AVCaptureVideoDataOutput访问相机捕获的原始视频帧。

我想在这些帧之上叠加文本和其他信息,然后将它们输出到电影文件中,该文件在某些​​时候会保存到资产库中。

不幸的是,似乎Apple没有给我们提供一种简单的方法来将这些帧保存到电影文件中。

将帧保存到与资产库兼容的电影文件有哪些选择?

有没有办法只使用iPhone SDK来实现这一目标?

如果没有,哪些第三方库与iPhone兼容并可用于实现此目的?

4 个答案:

答案 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自身的挣扎。