Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 什么';在录制的视频上合成基于帧的动画贴纸的最佳方法是什么?_Ios_Objective C_Swift_Video_Avfoundation - Fatal编程技术网

Ios 什么';在录制的视频上合成基于帧的动画贴纸的最佳方法是什么?

Ios 什么';在录制的视频上合成基于帧的动画贴纸的最佳方法是什么?,ios,objective-c,swift,video,avfoundation,Ios,Objective C,Swift,Video,Avfoundation,我们希望允许用户将动画“贴纸”放置在他们在应用程序中录制的视频上,并考虑采用不同的方式合成这些贴纸 使用AVAssetWriter从基于帧的动画贴纸(可以旋转,并对其应用翻译)创建代码中的视频。问题在于AVAssetWriter只写入文件,不保持透明。这将防止我们使用AVMutableComposition在视频中过度使用它 提前为我们的基于框架的贴纸创建.mov文件,并使用AVMutableComposition和layer指令以及转换将其合成。问题是没有工具可以轻松地将基于PNG的帧转换为.

我们希望允许用户将动画“贴纸”放置在他们在应用程序中录制的视频上,并考虑采用不同的方式合成这些贴纸

  • 使用
    AVAssetWriter
    从基于帧的动画贴纸(可以旋转,并对其应用翻译)创建代码中的视频。问题在于
    AVAssetWriter
    只写入文件,不保持透明。这将防止我们使用
    AVMutableComposition
    在视频中过度使用它

  • 提前为我们的基于框架的贴纸创建
    .mov
    文件,并使用
    AVMutableComposition
    layer
    指令以及
    转换将其合成。问题是没有工具可以轻松地将基于
    PNG
    的帧转换为
    .mov
    ,同时维护alpha通道,我们必须编写自己的

  • 为贴纸动画中的每个帧创建单独的
    CALayers
    。这可能会在视频的每帧速率中创建大量层

  • 还有更好的主意吗


    谢谢。

    我建议你看看我关于这个特定主题的报告。基本上,此示例显示如何从附加到应用程序资源的文件加载RGBA视频数据。这是从桌面上包含动画RGBA数据的.mov导入的。将数据从桌面获取到iOS需要一个转换步骤,因为普通H.264不能直接支持Alpha通道(正如您所发现的)。请注意,较旧的硬件可能会在解码H.264用户录制的视频时出现问题,然后再解码另一个用户录制的视频,因此这种使用CPU而不是H.264硬件制作标签的方法实际上更好