- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个带有 2 个音轨和一个视频轨的 AVMutableComposition。我正在使用该组合从 .mov 文件中串接大约 40 个不同的视频剪辑,将每个剪辑的视频内容放入我的组合的视频轨道中,并将音频放入音轨中。我用于音乐的第二个音轨。我还有一个用于标题图形的同步层。
当我使用 AVPlayer 播放此作品时,音频慢慢变得不同步。开始变得明显需要大约 4 分钟。似乎如果我只将少数较长的剪辑串在一起,问题就不会那么明显,当有很多剪辑较短的剪辑(在我的测试中大约 40 个)时,它会变得非常糟糕。
暂停和播放不会重新同步音频,但搜索会。换句话说,如果我让视频播放到最后,即使我暂停并播放到最后,口型同步也会明显关闭,但是,如果我在接近尾声的时候寻找时间,音频就会恢复同步。
我现在的 hacky 解决方案是每分钟左右寻找 currentTime + 1 帧。由于搜索操作的滞后,这会在视频中造成不愉快的跳跃,因此不是一个好的解决方案。
使用 ExportSession 导出不会出现此问题,音频在输出影片中保持同步。
我想知道 AVPlayer 中新的 masterClock 属性是否就是这个问题的答案,如果是,它是如何使用的?
最佳答案
我遇到了同样的问题并通过以下方式指定时间尺度来修复它,以及许多其他音频和视频问题:
CMTime(seconds: my_seconds, preferredTimescale: CMTimeScale(600))
之前,我的时间尺度是 CMTimeScale(NSEC_PER_SEC)
。这让我在以不同的帧速率创作剪辑时感到紧张,加上 Eddy 在这里提到的这种音频不同步。
尽管看起来像一个神奇的数字,但 600 是 24、30、60 和 120 的公倍数。这些是用于不同目的的常用帧速率。公倍数避免了在组合多个剪辑时绕过舍入问题。
关于ios - 使用 AVPlayer 音频播放 AVMutableComposition 不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983315/
我正在尝试在嵌套层次结构中使用 AVMutableComposition。因此我必须将一个作品放入另一个作品中。这样做会导致以下错误消息: AVCompositionTest[45347:10703]
当源视频为纵向时,此功能会将合并的合成导出为横向。我将原始视频以纵向保存到我的文档目录中,然后将其保存到相机胶卷中并且工作正常。然后,我将保存的视频的 URL 传递给该函数,它会以某种方式将其旋转为横
我在 iOS 应用程序中使用 AVCaptureConnection 捕获视频。之后,我在视频中添加一些图像作为 CALayers。一切工作正常,但在添加图像后,我在生成的视频的最后出现黑框。实际音频
我一直在尝试使用 AVMutableComposition 将音频(录制的)与视频(.mp4)混合,这意味着我需要 2 个文件在混合后并行播放,这是我使用的代码:temporaryRecFile 为录
我正在使用 PryntTrimmerView 来修剪视频文件。有我的导出修剪视频文件和生成视频缩略图的代码: func prepareAssetComposition() throws { g
我有点困惑为什么每次出现这一行都被视为内存泄漏: let asset = AVMutableComposition() 查看 SO 并没有真正找到任何答案。只是想在我提交到应用商店之前清除一些内存泄漏
我的应用程序结合了视频序列,并根据情况将音乐添加到最终序列。添加音乐后,该应用会检查用户是否选择了一段视频作为开场,然后将其组合成最终视频。 在运行 profiler 时,我在第二次和第三次执行此操作
我一天中的大部分时间都在围绕 StackOverflow 进行深入研究,虽然有很多关于该主题的精彩帖子,但我还没有找到解决我的问题的方法。 p> 我正在使用 AVAssetWriter 编写视频文件,
我想在我的 AVMutableComposition 的末尾渲染一些图形,就像电影结尾的演职员表一样。我怎样才能创建一个空白 Assets 来延长合成时间,给我一些可以渲染的空白空间? 最佳答案 我找
我有一个与 AVPlayer 关联的 AVMutableComposition。似乎如果我将轨道添加到这个组合中,AVPlayer 不会播放添加的轨道,除非我再次在播放器上设置组合。现在我只是通过用已
这个问题与AVMutableComposition - Blank/Black frame between videos assets 很相关但由于我没有使用 AVAssetExportSession
我正在使用 AVMutableComposition 和 AVAssetExportSession 来剪辑视频。随机地,我的意思是随机地(我无法始终如一地重现)用户的视频在修剪视频的开头有几个黑框。音
我正在使用 AVMutableComposition 创建视频并使用 AVAssetExportSession 导出它并为其提供预设 AVAssetExportPresetHighestQuality
我正在尝试使用 AVMutableComposition 将图像渲染到使用前置摄像头拍摄的视频中。生成的视频(包括图像)的大小非常好。 但是,初始视频将调整大小,如下图所示: 我正在使用 NextLe
为了修剪视频,我使用了AVMutableCompositionTrack的removeTimeRange方法。 [mCachedCompositionTrack removeTimeRange:CMT
我正在尝试将 4 个音轨组合成一个乐曲,然后将该乐曲导出到一个文件。到目前为止,我的文件已成功创建,但所有音轨都以全音量播放,而不是我尝试设置的音量级别。这是我现在正在做的事情: AVMutableC
我正在尝试合并和裁剪一系列视频。一切正常,但生成的视频旋转了 90 度。我试图应用旋转变换,但没有任何 react 。我已经查看了至少 4 个其他线程,看看他们的解决方案是什么,而且他们几乎都在做和我
我在视频上添加水印。我设置了原点水印层(10;10),但是导出后,水印位于左下角。如果我增加 y,水印会向上移动。好像y轴自下而上增加。 任何人都可以提出一些建议吗? NSString *path =
我在此处发布的问题的答案中使用代码(在下面添加): Swift 3: How to add watermark on video ? AVVideoCompositionCoreAnimationTo
我构建的应用程序需要以下功能: 将视频组合成单个 AVMutableComposition 并将该单个视频组合呈现给用户。 以多个 block 的形式导出视频合成。例如,如果整个作品时长为 60 秒,
我是一名优秀的程序员,十分优秀!