【问题标题】:Saving Movies from AVCaptureVideoDataOutput Video Frames从 AVCaptureVideoDataOutput 视频帧保存电影
【发布时间】:2010-07-13 15:21:12
【问题描述】:

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

我想在这些帧的顶部覆盖文本和其他信息,然后将它们输出到电影文件中,该文件将在某个时候保存到资源库中。

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

我有哪些选择可以将帧保存到与资源库兼容的电影文件中?

有没有办法只使用 iPhone SDK 来完成这个?

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

【问题讨论】:

    标签: iphone video video-encoding


    【解决方案1】:

    您现在可以使用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 的斗争。

    【讨论】:

    • 请举例说明如何使用它而无需打开链接
    【解决方案2】:

    我没有找到用于编码使用AVCaptureVideoDataOutput 捕获的帧或将它们写入 Quicktime .mov 文件的方法。

    您可能想查看 ffmpeg 以了解它是否满足您的需求 - 它可以处理容器格式和编码。

    【讨论】:

    • 除了 ffmpeg 之外还有什么其他我应该看的选项吗?
    【解决方案3】:

    AVCaptureMovieFileOutput 可让您将数据捕获到 QuickTime 电影中,也许这会有所帮助...

    【讨论】:

    • 是的,但是如果我使用 AVCaptureMovieFileOutput,那么我不能使用 AVCaptureVideoDataOutput 来操作帧数据。
    【解决方案4】:

    嘿!如果您只需要在视频上添加某种水印,那么只需使用相机捕捉电影然后使用 AVVideoComposition 的 AVVideoCompositionCoreAnimationTool 就很容易了。您可以添加任何类型的动画、文本作为视频的叠加层。

    【讨论】:

    猜你喜欢
    • 2013-03-06
    • 2018-12-14
    • 2023-03-16
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多