问题标签 [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.
iphone - AVSynchronizedLayer 与 AVAssetExportSession 输出不匹配,为什么?
问题是这样的:我有一个 AVMutableVideoComposition,它有一个 titleLayer (CATextLayer)。
我想使用 AVPlayerLayer 和 AVSynchronizedLayer 向用户显示包含此标题的预览。我这样设置图层:
当我设置组合时,我这样做:
一切都按预期运行,但有一个例外:
当我在 iPhone 模拟器中预览最终结果(视频+标题)时,我得到以下输出:
当我使用 AVAssetExportSession 渲染视频时,我得到了这个输出(所以视频标签在底部):
有谁知道诀窍是什么?我错过了什么/做错了什么?
谢谢!
objective-c - 简单的 AVFoundation 故障排除情况
我有一个包含一些视频编辑工具的应用程序。我混合照片和视频,我遇到了一个奇怪的问题。当我用视频安排视频合成时,然后是照片,然后回到视频,它会正常播放,直到过渡回视频时它会冻结!我仍然听到音频,如果我四处寻找,视频会再次开始播放。我不知道如何错误检查这个!有人有想法么?
ios - AVComposition 中的曲目在暂停时会丢失时间
我创建了一个 AVMutableComposition,它由一堆在特定时间开始的音轨组成。从那里开始,按照 Apple 的建议,我将其转换为 AVComposition,然后再与 AVPlayer 一起播放。
播放这个 AVPlayer 项目一切正常,但如果我暂停它然后继续,合成中的所有轨道似乎相对于彼此滑回大约 0.2 秒(即,它们聚集在一起)。按下暂停和继续几次复合效果,重叠更显着(基本上,如果我打得足够多,我最终会同时播放所有 8 首曲目)。
谢谢
ios - 使用 AVPlayer 和 AVMutableComposition 播放未对齐的声音
我正在尝试使用AVComposition从多个乐器样本中创建一首歌曲。
kCMTimeZero
当我在中播放两个声音资产时AVMutableComposition
,我希望它们同时播放,但有一个非常轻微的偏移。
这只发生在第一次播放时,所以它似乎是某种加载延迟,但无论我尝试什么,它都不会消失。
我已经确保预加载声音资产轨道,预加载合成轨道,等待playerItem
准备好,等待播放器准备好播放。我尝试过预卷播放器、播放/暂停播放器等。第一次播放时,曲目之间总是会有轻微的偏移。
我创建了一个小示例项目来演示这里的效果
主要代码在这里
请注意,当您第一次加载应用程序并点击播放时,声音会稍微偏移。声音的后续重复(以及相同 playerItem 的重放)不存在此问题。
稍微延迟初始声音似乎可以解决问题,但这不是一个很好的选择。
知道这是否可以解决,或者我是否遗漏了什么?
谢谢
ios - 带有 AVPlayer 的多个视频
我正在为 iPad 开发一个 iOS 应用程序,它需要在屏幕的某些部分播放视频。我有几个视频文件需要按照编译时未给出的顺序依次播放。它必须看起来好像只是一个视频播放。当从一个视频切换到下一个视频时,这两个视频的最后一帧或第一帧会显示一些延迟,这很好,但不应该出现没有内容的闪烁或白屏。视频不包含音频。重要的是要考虑内存使用情况。这些视频具有非常高的分辨率,并且可以同时播放多个不同的视频序列。
为了获得这一点,我已经尝试了一些解决方案。它们在下面列出:
1. 带有 AVComposition 的 AVPlayer,其中包含所有视频
在这个解决方案中,我有一个 AVPlayer,它将仅在使用 AVComposition 制作的 AVPlayerItem 上使用,该 AVComposition 包含彼此相邻的所有视频。当转到特定视频时,我会寻找下一个视频开始的合成时间。此解决方案的问题是,在寻找播放器时,它会快速显示它正在寻找的一些帧,这是不可接受的。似乎没有办法直接跳转到构图中的特定时间。我尝试通过制作刚刚完成的视频中最后一帧的图像来解决这个问题,然后在搜索时将其显示在 AVPLayer 前面,最后在搜索完成后将其删除。我正在使用 AVAssetImageGenerator 制作图像,但由于某种原因,图像的质量与视频不同,因此在视频上显示和隐藏图像时会有显着变化。另一个问题是 AVPlayer 使用大量内存,因为单个 AVPlayerItem 包含所有视频。
2.具有多个AVPlayerItems的AVPlayer
此解决方案为每个视频使用 AVPlayerItem,并在切换到新视频时替换 AVPlayer 的项目。这样做的问题是,当切换 AVPlayer 的项目时,它会在加载新项目时短时间显示白屏。要解决此问题,可以使用在加载时将图像放在最后一帧前面的解决方案,但仍然存在图像和视频质量不同且显着的问题。
3. 两个 AVPlayer 相互叠放轮流播放 AVPlayerItem
我尝试的下一个解决方案是让两个 AVPlayer 相互叠加,轮流播放 AVPlayerItems。因此,当播放器完成播放时,它将停留在视频的最后一帧。另一个 AVPlayer 将被带到前面(其 item 设置为 nil,因此它是透明的),并且下一个 AVPlayerItem 将插入到该 AVPlayer 中。一旦加载它就会开始播放,并且两个视频之间的流畅交易的错觉将完好无损。此解决方案的问题是内存使用情况。在某些情况下,我需要同时在屏幕上播放两个视频,这将导致 4 个 AVPlayer 同时加载一个 AVPlayerItem。这只是太多的内存,因为视频可以是非常高分辨率的。
是否有人对上面发布的整体问题和经过尝试的解决方案有一些想法、建议、评论或其他内容。
ios - 使用 AVURLAssets 的 AVPlayer 和渐进式视频下载
我们正在开发一个需要通过AVPlayer播放视频文件的应用程序。文件需要存储在用户的设备上,还必须在下载的同时播放。
目前我们已经构建了一个下载模块,它使用ASIHTTPRequest库通过 PHP 获取视频文件(我们不希望媒体可以通过公共 URL 链接)并将它们异步写入磁盘。
然后,我们根据AV Foundation Programming Guide设置了一个 AVPlayer ,使用 AVURLAsset 获取文件,使用资产创建 AVPlayerItem,使用项目构建 AVPlayer,然后将播放器设置为 AVPlayerLayer。播放器在完全下载的视频文件下运行良好,并且在模拟器中也能很好地运行逐步下载的文件。
不幸的是,在实际设备上,播放器的行为发生了变化,相反,它似乎只加载了一次视频,并没有尝试从磁盘中获取新的数据包。结果是播放器将播放视频和音频,直到视频中标记资源加载时下载进度的位置(例如,如果缓冲 2MB 的数据然后创建播放器,播放器将只播放高达 2MB 的数据)。因为它有视频的标题,播放器会很高兴地继续认为它正在播放整个视频,但没有其他视频被渲染到屏幕上。
最后一个问题是,如果将视频插入 AVComposition 并使用它创建 AVPlayer,则渐进式视频将可以正常播放。这将是一个很好的解决方案(有时对于我们的应用程序来说是必需的),除了我们应用程序的客户端要求视频可以通过 AirPlay 在 Apple TV 上播放,而 AVCompositions 无法做到这一点。
有谁知道是否有一种方法可以使用从 AVURLAssets 构建的 AVPlayer 逐步下载视频文件?有没有办法强制 player/playerItem 使用 AVURLAsset 从磁盘读取它似乎与 AVComposition 一样,而不是看似将视频缓存在内存中?
谢谢!
objective-c - AVComposition 的 AVPlayer 播放速率
我正在使用一个AVPlayer
来处理多个资产的播放,方法是将它们全部放在一个AVMutableComposition
. 一切都适用于正常播放,即[player play]
,但是当我尝试类似的东西时[player setRate:0.5]
,合成中只有一个轨道减慢到一半速度。所以我仍然有两首曲目同时播放,但一首是半速,另一首是全速。
有谁知道如何让他们都放慢到所需的播放速度?谢谢
video - ios AVMutuableComposition 曲目列表及调试
有人可以指出正确的方向来帮助我调试为什么我在 ios 6.1 中的 AVPlayerItem 的 AVMutuableComposition 不能正确加载曲目列表。
我正在做的是创建一个 AVMutableCompositionTrack 并从同一个 mp4 添加时间范围以进行播放。这对我来说与其他文件一起工作正常,但我有一些文件以每秒 30 帧的速度以 720p 编码,它们不会正确创建曲目列表。我想无缝地按顺序显示它们。
这是我的一些代码:
加载曲目:
我们创建这些文件的桌面应用程序按视频文件的帧数和持续时间导出信息。所以我从这些开始并转换为秒以添加到曲目列表中。
这是将时间范围实际添加到 AVMutuableComposition 的方法
所以这段代码适用于一些视频文件,但其中一些可能只加载第一个轨道,然后不加载其他轨道等。只是得到黑帧或视频停止。基本上它没有正确构建曲目列表。那么如何调试从负载返回的任何警告或错误代码,以告诉我 TimeRanges 是否有效等。
除了可以解释加载过程的苹果文档之外,还有其他好的资源吗?苹果文档很少。我也已经看过一些 wwdc 会议。任何帮助将不胜感激。谢谢!
ios - iOS:在 AV 视频上绘图,然后将绘图保存在视频文件中
我正在开发一个使用 AVFoundation 类录制和播放视频的 iPad 应用程序。我已经准备好基本录制/播放的所有代码,现在我想添加一个功能,允许用户在视频上绘制和注释——我相信这不会太难。更难的部分,也是我无法找到任何示例的部分,是将绘图和注释结合到视频文件本身中。我怀疑这部分是通过 AVComposition 完成的,但不知道具体如何。您的帮助将不胜感激。
标记
ios - iOS - 如何使用 avfoundation 播放声音文件
我想使用带有以下代码的av基础播放声音文件(我已将其拖入xcode并复制到项目中),但失败了。
我认为NSURL *url = [[NSURL alloc] initWithString:@"sound.caf"];
这是出错的地方,但除了这种方式,我不知道如何用这个声音文件实例化 AVAsset(当然,出错的地方可能是其他地方)。无论如何,有人可以为我提供一些帮助吗?谢谢