问题标签 [avcomposition]
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.
ios - 如何使用 AVAsset 合并多个视频和音频
您好我正在尝试使用 AVMutableComposition 将视频合并在一起。我遇到的问题是 AVAsset trackingWithMediaTypes 方法返回一个空数组并且应用程序崩溃了。
有人可以指出我做错了什么。谢谢
这是我到目前为止所拥有的:
这是错误的屏幕截图:
ios - 正确的 AVComposition 的 TimeMapping
我有一个AVComposition
多段和可变速度,我想获得CMTime
视频的正确位置。
如果我做:
时间不合适,因为构图速度不同,我已经尝试了几天,但我找不到如何去做。
我也尝试过使用samplePresentationTimeForTrackTime
,但它的作用是将目标(组合)时间映射到源(资产)时间,我需要相反,将我在源(资产)上知道的位置映射到目标(组合)上的映射位置)。
有任何想法吗?
ios - AVPlayer 的奇怪行为
我正在合并多个视频并在 AVPlayer 中播放。视频开始正常,但一段时间后视频冻结并且只播放音频。我有一个UISlider
有助于在视频中前进或后退的seekToTime:
.
所以奇怪的是,在视频冻结后,如果我使用滑块前进或后退,视频开始播放得非常好。我已经在多个设备上尝试了我的应用程序。
所以基本上我必须使用seekToTime:
方法在每次冻结时给视频一个轻推。
我用于合并视频和播放的代码如下:
更新:找到描述类似问题的链接。但他的解决方案并没有得到很好的理解。
ios - AVPlayer 不播放超过 2 个剪辑的 AVComposition
我正在尝试根据此处的代码使用 AVComposition 将视频资产拼接在一起: https ://developer.apple.com/library/mac/samplecode/AVCompositionDebugViewer/Introduction/Intro.html
在 OSX 上它可以完美运行,但是在 iOS 上通过 AVPlayer 播放时它只能使用 1 或 2 个输入剪辑。如果我尝试添加第三个,AVPlayerLayer 将不会播放任何内容。奇怪的是,如果我使用 addPeriodicTimeObserverForInterval 观察 AVPlayer 播放时间,视频似乎正在播放正确的持续时间,但图层上没有播放任何内容。有谁知道为什么会这样?
ios - 带有 AVComposition 的自定义资源加载器
有没有办法将自定义资源加载器与 AVComposition 一起使用?当我在 AVURLAsset 上设置 resourceLoader 并使用该资产创建 AVPlayerItem 时,我得到了 AVAssetResourceLoaderDelegate 回调。但是,如果我在 AVComposition 中使用相同的 AVURLAsset,我不会得到委托回调。事实上,它永远不会从将资产插入组合的调用中返回。
用 AVURLAsset 调用的 AVAssetResourceLoaderDelegate 方法:
AVAssetResourceLoaderDelegate 方法未在 AVURLAsset 插入 AVComposition 时调用:
(实际上,它挂在 insertTimeRange:ofAsset:atTime:error 处。我猜它当时试图从 munged url 加载 - 但不使用委托。)
调整 url 方案以便调用资源加载器委托的方法:
ios - 如何使用多段编辑 AVMutableCompositionTrack?
我有在 iPhone 的视频编辑器中的 AVMutableCompositionTrack 中添加多个片段的功能。我正在使用以下方法
一切正常。现在,我需要增加 compositionTrack 中每个已添加段的 startTime。到目前为止,我没有发现任何机制,只能删除所有段并从头开始在新位置重写它们。
- 我试图在 compositionTrack 中获取所有 AVCompositionTrackSegment 并更改目标的 startTime 但它是不可分配的。
- 我努力了
[self.compositionVideoOneTrack removeTimeRange:videoSegmentData.videoTimeRange];
删除一个段,然后将其重新插入到合适的位置。但是这个调用使删除段旁边的所有段向左移动。位于良好位置的插入与向左移动的段重叠。
期待解决方案。
ios - 使用 CoreAnimations 渲染 CALayers
如何将具有大量动画的 CALayer 渲染到 mov 文件?
我知道如何渲染它,AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer
但因此我需要一个虚拟视频(我有一个 1x1px),但我想知道如何在没有 mp3/mov 的情况下做到这一点,所以只需将 CALayer 渲染到没有任何其他资源的视频。
有任何想法吗?甚至可能是代码示例?
ios - 自定义 AVVideoCompositing 类未按预期工作
我正在尝试将 CIFilter 应用于 AVAsset,然后将其与应用的过滤器一起保存。我这样做的方式是使用AVAssetExportSession
带有自定义类videoComposition
的对象。AVMutableVideoComposition
AVVideoCompositing
我还将instructions
我的AVMutableVideoComposition
对象设置为自定义组合指令类(符合AVMutableVideoCompositionInstruction
)。这个类被传递了一个轨道 ID,以及一些其他不重要的变量。
不幸的是,我遇到了一个问题——startVideoCompositionRequest:
我的自定义视频合成器类(符合AVVideoCompositing
)中的函数没有被正确调用。
当我将passthroughTrackID
自定义指令类的变量设置为轨道 ID 时,startVideoCompositionRequest(request)
我的函数AVVideoCompositing
不会被调用。
然而,当我没有设置passthroughTrackID
自定义指令类的变量时,startVideoCompositionRequest(request)
会调用,但不正确 - 打印request.sourceTrackIDs
会导致空数组,并request.sourceFrameByTrackID(trackID)
导致 nil 值。
我发现有趣的是,cancelAllPendingVideoCompositionRequests:
在尝试使用过滤器导出视频时,该函数总是被调用两次。它要么在之前和之后调用一次,要么在未调用startVideoCompositionRequest:
的情况下连续调用两次。startVideoCompositionRequest:
我创建了三个用于导出带有过滤器的视频的类。这是实用程序类,它基本上只包含一个export
函数并调用所有必需的代码
这是另外两个类 - 我会将它们放在一个代码块中以使这篇文章更短
我一直在查看Apple 的 AVCustomEdit 示例项目以获取相关指导,但我似乎无法在其中找到发生这种情况的任何原因。
我怎样才能让request.sourceFrameByTrackID:
函数正确调用,并CVPixelBuffer
为每一帧提供一个有效的?
ios - AVAsset 具有单独的视频和音频 url (iOS)
是否可以创建一个具有两个 urlAVAsset
的对象,一个用于音频,另一个用于视频轨道?
我已经尝试过,AVMutableComposition
但它似乎首先加载整个内容并在开始视频+音频播放之前将其缓冲到某处。在 的文档中AVComposition
,它说可以组合基于文件的资产,但我需要一种组合基于 url 的资产的方法。
或者是否可以设置一个选项AVComposition
以便在加载整个内容之前开始播放?
编辑
这就是我尝试的方式: