问题标签 [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 投票
0 回答
212 浏览

swift - 显示带有非身份快速转换的preferredTransform的过滤视频文件

对于我正在开发的应用程序,我需要提供一个功能,让用户将过滤器应用于他们的视频(不是实时的,在保存的视频上应用过滤器并提供 filePath)。

addFilterToVideo当用户点击过滤器时调用,视频合成作为参数传递给initPlayer函数,如果点击“无”视频过滤器,则传递 nil

每当点击新过滤器时,我只需更改 playerItem 的视频组成,并且文件仅在第一次加载

所以问题是视频正在像这样旋转: 检查屏幕录制here 但是当我尝试使用我添加到项目中的示例视频时,它工作正常 检查屏幕录制here

所以我通过将它们作为 AVAssets 导入来检查preferredTransform

对于设备录制的视频文件:

(lldb) po videoTrack?.preferredTransform

(lldb) po videoTrack?.naturalSize

对于我添加到项目中的视频

(lldb) po videoTrack?.preferredTransform

(lldb) po videoTrack?.naturalSize

所以问题出在filePath上的视频,它有一个preferredTransform,应该将视频旋转90度,甚至高度和宽度都关闭。我不知道该怎么做。我尝试将 CGAffineTransform 应用于 playerLayer,但它不起作用它确实旋转了视频,但纵横比仍然关闭,当资产具有不是身份的首选变换时,这意味着什么?

0 投票
1 回答
368 浏览

ios - 如何在 iOS 中修剪持续时间超过 30 秒的视频?

我想从图库中选择视频,但用户最多只能从应用程序中选择 30 秒的视频。

那么如何在一定时间内实现视频修剪呢?

通过使用 AVFoundation,我已经完成了选择视频,但我不知道如何修剪视频?

是否有任何第三方库或任何其他方式?

0 投票
1 回答
1418 浏览

swift - 无法使用 AVVideoCompositionCoreAnimationTool 在视频中显示动画 CALayer

更新 6:我已经设法完全解决了我的问题,但我仍然想要一个比我猜测的更好的解释,因为如果我不正确,它就不起作用

我一直在尝试在视频上制作精灵表动画,但每次导出视频时,最终结果都是我开始的示例视频。

这是我的代码:

首先我的自定义 CALayer 来处理我自己的精灵表

Gif 是一个基本类,没有什么花哨的,而且工作得很好。gif.Strip是一个UIImage表示 gif 的垂直精灵表。

现在是应该导出新视频的方法(它是用于导出的更大类的一部分。

编辑:我的代码基于以下链接

更新1:我尝试删除CABasicAnimation我的部分代码并使用我的CALayer但无济于事。我什至无法显示图像。为了进行测试,我尝试在 Xcode Playground 中使用CAKeyframeAnimationon为这个 sprite sheet 设置动画contentsRect,效果很好,所以我认为问题不在于 CABasicAnimation,甚至可能不在于CALayer它本身。我真的可以在这方面使用一些帮助,因为我不明白为什么我什至无法在导出的示例视频上显示图像。

更新 2:为了回应马特的评论,我尝试暂时忘记精灵表,并将其更改为CATextLayer但在我的视频上仍然看不到任何内容(它有深色图像,所以白色文本应该完全可见)

更新 3:根据马特的要求,我尝试更改parentLayer.addSublayer(aLayer)为,但仍然没有任何改变,但我想了videoLayer.addSublayer(aLayer)很多,因为文档AVVideoCompositionCoreAnimationTool如下

这意味着我parentLayer的就是它animationLayer,并且可能意味着任何动画都应该在这一层中完成。

更新4:我开始在这里发疯,我现在已经放弃了显示文本或动画图像的想法,我只想以任何可能的方式影响我的视频,所以我改为aLayer

好吧,这绝对没有任何作用,我仍然可以在 outputUrl 上获得我的示例视频(如果你想“玩”,我开始在操场上用下面的代码测试这个)

请有人帮我理解我做错了什么......

更新 5:我正在运行除了 iPad Air 2(所以没有模拟器)的游乐场测试之外的所有内容,因为我使用相机拍照,然后将它们拼接成一个精灵表,然后我计划在我将通过电子邮件发送的视频上制作动画。我开始做 Playground 测试,因为 iPad 上的每个测试都要求我完成整个应用程序周期(倒计时、照片、表单、电子邮件发送/接收)

0 投票
1 回答
657 浏览

ios - 带有 CIFilters 的 AVVideoComposition 崩溃

我正在以这种方式使用 CIFilters 创建一个 AVVideoComposition:

然后为了正确处理旋转,我创建了一个直通指令,它在直通层上设置身份转换。

问题是它因错误而崩溃:

我的问题是,如果我不指定此 passThroughInstruction,如果输入资产的视频轨道包含指定旋转 90 度的 preferredTransform,则输出不正确。如何将视频合成与正确处理视频轨道的首选转换的核心图像过滤器一起使用?

编辑:这个问题看起来很相似,但与其他涉及播放的问题不同。就我而言,播放效果很好,但渲染会产生失真的视频。

0 投票
0 回答
288 浏览

ios - AVVideoComposition、CIFilter、CIImage 的 iOS 视频过滤器非常慢

我想从照片中过滤选定的视频,所以使用 CIFilter 和 AVVideoComposition 但这需要太多时间。

30秒的视频需要3分钟。

如何减少过滤时间。

0 投票
1 回答
369 浏览

ios - 在物镜 c 的 x 轴上水平翻转视频

我有两个在一个视图上同时播放两个视频。两个视频都是一样的。

现在,我担心的是右边的视频实际上是沿 x 轴水平翻转,然后保存在照片库中。我尝试了很多谷歌搜索,发现 CGAFFineRotateTransform 可以提供帮助,但我无法在我的代码中使用它。请帮助我水平翻转视频,同时保持比例和移动相同。

在这个方向上的任何帮助或指导都将是可观的。提前致谢!

检查左右视频的区别,左边的视频是完整的,但右边的视频只显示半个视频

0 投票
1 回答
896 浏览

ios - 我想对视频应用 CIFilter 并保存该过滤器应用的视频。[导出耗时太长]

我想对视频应用 CIFilter 并保存该过滤器应用的视频。

我正在使用 AVMutableVideoComposition(也尝试使用 AVVideoComposition)对视频应用过滤器,并且它与 AVPlayer 一起工作正常,但是当我导出过滤后的视频时,需要花费太多时间在本地保存(20 秒视频大约需要 6-8 分钟)。请指导我做错了什么...谢谢!

0 投票
1 回答
455 浏览

ios - 从 Swift 中的 UImage 数组创建视频的内存崩溃问题

我正在使用视频,我从 Uimage 数组创建视频。它适用于少量图像,但大量(例如:100 多张图像)由于内存问题而崩溃。

我在创建视频时进行了测试,内存在增长,但在进程完成后内存仍然是大小,而不是释放。

任何帮助将不胜感激谢谢

这是我的代码:

//创建像素缓冲区

0 投票
0 回答
268 浏览

ios - 如何使用 CATextLayer 根据时间范围在视频上显示不同的文本?

我正在开发一个视频应用程序,它需要在一定时间内在视频上显示文本,我需要在不同的时间范围内显示不同的文本。

我已经创建了一个文本图层并将其组合到视频合成中。但我的问题是我不知道如何根据时间范围更改文本。

这是我到目前为止所做的。

我想为视频的 x(让它是 30.0)秒到 y(假设 50.0)秒显示“一些其他文本”。

编辑:我已阅读此将带有 AVMutableVideoComposition 的文本覆盖添加到特定时间范围

但是使用 CAKeyframeAnimation 我可以显示或隐藏特定时间范围的文本,我可以使用动画更改文本,还是需要使用多个文本层来实现这一点。

我将不胜感激任何提示或解决方案。TIA。

0 投票
0 回答
682 浏览

swift - AVAssetExportSession 大大降低了视频质量

我有一个本地视频网址,我正试图在上面叠加。一切正常,但视频质量在导出后急剧下降。

我缩小了范围,发现它发生在我设置 AVAssetExportSession.videoComposition (我需要为覆盖做)时。如果我将导出预设质量设置为直通,则视频不会丢失质量,但不会出现叠加层。