问题标签 [avvideocomposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
361 浏览

swift - 在视频上叠加图像会降低视频分辨率

当我在视频上叠加图像时,视频质量会大大降低。如果我没有设置导出会话的视频合成或将导出质量设置为直通,则视频质量很好(但我显然没有得到覆盖)。

我也传递了一个本地 .mov 视频网址来添加叠加层。我正在使用 PHPhotoLibrary 将视频保存到相机胶卷。使用其他一些功能来转换视频并设置其指令。

这一切看起来都很简单,但有些东西正在扼杀视频质量

0 投票
1 回答
226 浏览

swift - VideoComposition 不遵守说明

自从更新到 iOS 13 以来,我用来淡入和淡出视频的视频合成已损坏。这是我的代码在安装 iOS 13 之前可以正常工作。

现在,当我导出视频时,有声音,只是黑屏。

0 投票
1 回答
566 浏览

ios - 将 CIFilters 切换到视频

有人可以帮助我了解在不重新启动视频播放器的情况下切换 CIFilters 的正确方法吗?

我在视图中播放本地视频。如果我在集合视图中点击一个单元格,视频将更改 CIFilter。

我的代码

代码效果很好,效果正确应用

但我有一个包含许多 CIFilters 的集合视图。在点击一个单元格时,我找不到将过滤器切换到视频的方法。如果我使用新过滤器重新创建一个新播放器并将其添加为当前“addsublayer”的替代品,播放器将重新启动视频。

在不重新启动视频的情况下将 CIFilters 更改为正在播放的视频的最佳方法是什么可以使用新过滤器保存视频吗?

谢谢!

0 投票
1 回答
49 浏览

ios - Equal-Power Crossfade in AVMutableVideoCompositionLayerInstruction

How can I get an equal-power crossfade working in an AVVideoComposition? I'm using something like the following to fade between video tracks, but when looping the same video over and over there is a very noticeable brightness dip during the transition due to whatever curve is being used internally in setOpacityRamp.

0 投票
2 回答
196 浏览

swift - 视频像素化文本上的 CATextLayer

我正在从图像创建视频并向它们添加叠加层。问题是当我尝试将 CATextLayer 添加到视频时。文字像素化,看图

图片

这是用于生成 CATextLayer 的代码:

此代码用于生成带有图像的 CALayer:

由于生成的视频中不同图像层的动画,图像层被隐藏。这是用于层生成的代码:

我尝试将 rasterizationScale 设置为 UIScreen.main.scale,将 shouldRasterize 设置为 true,将 contentsScale 设置为 UIScreen.main.scale,各种不同的选项,甚至尝试拍摄 UILabel 并将其设置为图像(甚至在本地保存图像并检查它,质量很好),但结果又是像素化的书写。

Animate fadeInOut 基本上是三个动画,一个是设置隐藏参数为真或假,另一个是添加 CATransition 显示动画,用于层之间的进入和退出过渡。

在将我的问题标记为已经看到并回答之前,我花了很多时间尝试谷歌搜索可能的结果并尝试了很多东西,但结果仍然相同。

0 投票
1 回答
203 浏览

ios - 使用自定义合成器在图像合成期间出现黑屏

我正在尝试从静止图像制作电影,为此我使用带有自定义指令的自定义合成器。实际上我得到电影并且长度符合预期,但在一帧(5秒)后我得到黑屏(对于另一帧)

我所做的是在我的演示项目中:

https://github.com/satishVekariya/MovideMakerDemo

0 投票
1 回答
208 浏览

ios - 如何在不丢失阴影饱和度的情况下将带有阴影的 UIBezierpath 转换为 UIImage

我正在做一个绘图应用程序,它允许用户在视频帧上绘图,所以在 UIImageView 上绘图时,我将 Bezierpath 添加到 CAShapeLayer 并为其设置阴影路径,它工作得很好,事情就是当我想要要将图层转换为最终将是 ciimage 的 cg 或 uiimage(合成为视频帧),UIGraphicContext 会降低阴影饱和度,就像 CAShapeLayer 中的线没有阴影路径,而只是一个简单的阴影,少得多饱和度 这是使用阴影绘制时的图像

在此处输入图像描述

此图为转成image后阴影相同的路径

在此处输入图像描述

我已经尝试了很多不同的方法,我可以在 SOF 或互联网上的任何其他地方找到,所以基本上有两种方法可以将路径转换为图像(ci,ui,cg),它们都使用某种相同的做法,即UIGraphicContext(如果有任何其他方式请告诉我),所以我尝试将图层转换为 uiimage(通过在 CGContext 上渲染)并尝试直接在上下文上绘制路径,直接绘制路径给了我(只是)一点比在上下文上渲染层的改进。这是直接在上下文中绘制路径的代码:

我真的很感激任何帮助或提示,我可以在转换后得到相同的阴影结果。

更新

这是在图层上生成阴影的代码,它在视图(第一张图片)上运行良好,在渲染或绘制上下文后我需要相同的结果。

0 投票
0 回答
55 浏览

ios - 使用 Core Image 和 AVFoundation 创建幻灯片

我有许多将在幻灯片中显示的图像,每个图像使用 AVPlayer 显示 1 秒或更长时间。我之前(大约在 iOS 6 时代)使用了以下我想改进的技术。

  1. 将每个图像缩小到更小的尺寸以进行播放,

  2. 制作了一个CALayer,根据幻灯片中的时间为每个图像出现和消失创建CAAnimation,并将这些动画添加到CALayer,

  3. 使用具有单个黑框的虚拟视频创建了 AVMutableComposition,将其时间范围扩展到幻灯片的持续时间,

  4. 创建了一个 AVSynchronizedLayer 并将这个 CALayer 添加到它以与播放同步。对于渲染,我创建了一个 AVVideoComposition 对象并添加了使用 AVVideoComposition 的 coreAnimationTool 属性来将幻灯片渲染到视频文件中。

现在在 iOS 13 或更高版本的时代,当我们在 AVVideoComposition 中有 customVideoCompositor 时,我们可以使用 Core Image 对其进行改进吗?具体来说,给定文件系统中存储的 100 个图像,其中每个图像都可以是全分辨率 12 MP 图像,那么在启动时从 url 创建 100 个 CIImage,对每个图像应用下采样变换,并在运行时在自定义合成器中渲染它们是否正确?我相信每次我们加载渲染存储在磁盘上的新 CIImage 时,性能都会受到影响。可能需要在加载时间之前预加载图像,如果用户将播放器搜索到不同的时间,则取消加载。什么是正确/最好的方法来实现这一点而不会由于内存压力或图像加载缓慢而崩溃?我相信即使是 Apple 在 AVPlayer 中播放 AVMutableComposition 时也可能会解决其中的一些问题。

0 投票
1 回答
33 浏览

ios - 第二次导出 AVAsset 使视频空白

我正在使用AVMutableComposition()添加这样的轨道将多个视频文件拼接成一个:

然后将它们导出AVAssetExportSession(asset: mainComposition, presetName: AVAssetExportPresetMediumQuality)到 .mov 文件中。

这会将拼接的视频保存到 url,我可以使用 AVAsset 访问并显示给用户。之后,我尝试将图像叠加层添加到视频中并再次导出。

在第二种方法中,我从 url 实例化 AVAsset AVAsset(url: fileUrl)。并创造新的AVMutableComposition(). 我将视频和音频轨道添加到资产的合成中:

然后我使用图层将叠加层添加到视频中,AVVideoCompositionCoreAnimationTool()如下所示:

然后我以与第一次导出相同的方式导出视频。

问题是当我结合它时。 如果我只使用第二种方法导出一些示例视频,则会添加到视频的叠加层,并且一切都符合预期。如果我使用第一种方法拼接视频,那么视频就会完美拼接。但是,当我结合这些方法时,生成的视频是黑色的空白屏幕(音频和叠加效果很好,生成的视频持续时间也很合适)。

0 投票
0 回答
111 浏览

ios - 如何将不同 AVCompositions 的 AVVideoCompositions 合并为一个

我有多个AVAsset视频,我使用 timeRanges 在AVComposition. 每个视频都有一个关联AVVideoComposition,它使用animationTool向视频添加覆盖层。我希望能够以AVVideoCompositions类似于的方式将它们串在一起,AVComposition以便与每个 AVAsset 关联的层在指定的开始/结束时间显示/隐藏。我怎样才能做到这一点?

我目前使用此代码创建具有单个 AVAsset 的 for AVVideoCompositionAVComposition

这是我用于创建AVComposition具有多个资产的代码: