问题标签 [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 - 如何在不更改视频 FPS 的情况下提高 iOS 的视频速度?
我制作了一个 30FPS 和 18 秒的视频。我想将视频速度提高 x3 并获得一个 6s (18s/3) 的新视频。
我做了下面的决议:
分辨率正在创建一个新的构图并缩放CMTimeRange
. 但视频结果也有 x3 FPS,结果视频有 90FPS。
我想要一个30FPS和6s的视频结果,可以吗?
ios - AVMutableComposition 调整大小问题
我正在尝试使用 AVMutableComposition将图像渲染为使用前置摄像头拍摄的视频。生成的视频(包括图像)的大小非常好。
但是,初始视频将被调整大小,如下图所示:
我正在使用NextLevelSessionExporter,这是我的代码片段:
这是我的 applyVideoImage() 函数。
编辑 1: 此错误仅在我导出使用前置摄像头捕获的镜像视频时发生。
ios - Swift:向 AVMutableComposition 添加音频
我正在使用此处发布的问题的答案中的代码(在下面添加): Swift 3:如何在视频上添加水印?AVVideoCompositionCoreAnimationTool iOS 10 问题
该代码从录制的视频中剥离视频轨道并添加水印。该代码不会合并音轨,因此输出是没有音频的带水印视频。
如何将音频合并回带水印的视频?
代码:导入 UIKit 导入 AssetsLibrary 导入 AVFoundation 导入照片
ios - 如何实现 iMovie 修剪视图?
我需要先合并多个视频,然后才能修剪视频并将文本覆盖在视频上。我想简单地创建另一个具有所有功能的 iMovie 应用程序。您能否建议 GitHub 中有任何可用的库,或者请分享您对此的想法,我将不胜感激
avasset - Failed to initialize an AVAssetExportSession (iPhone XS, XR, XMax)
When I instantiate an AVAssetExportSession object in new simulators instance with either of the 2 methods:
or
and, run the app on one of the 3 new simulators: iPhone XR, iPhone XS, and iPhone XS MAX, I got exporter = nil
, whereas on all other simulators I got a normal non null exporter object.
I also noticed that ONLY when I set the presetName
parameter to be AVAssetExportPresetPassthrough
, the exporter is not nil. Any other presetName will make the initialization to fail.
Anyone has encountered the similar problems?
swift - 如果 AVAsset 包含延时视频,为什么 AV Export 会话会导出黑色视频?如何解决问题?
我创建了一个根据 AVAsset 持续时间和内容生成 avcompostion 的函数。
如果视频是慢动作或常规视频,它完全可以正常工作,但是当 videoType 是延时视频时,它在导出后显示黑屏。
如果我在 avplayer 上播放 AVAsset,它会显示完美的延时。仅在导出时出现问题。
ios - 尝试读取视频帧时 AVVideoComposition 失败
我有一个源视频,我想通过获取源视频的每一帧的一个区域来从中生成一个新视频。例如,如果我有一个分辨率为A
x B
、内容大小为X
xY
且输出分辨率为C
xD
的视频,那么我想创建一个分辨率为C
x的视频,D
其内容将是原始视频中每帧的前X
x 个像素。Y
为了实现这一点,我使用一个AVAssetReader
用于阅读源视频和一个AVAssetWriter
用于编写新视频。为了仅提取源视频的区域X
x Y
,我使用一个AVAssetReaderVideoCompositionOutput
对象作为资产读取器的输出。设置代码类似于:
然后裁剪视频内容的逻辑发生在以下自定义初始化程序中:
此代码在某些情况下可以正常工作,例如,对于 content size (origin = (x = 0, y = 0), size = (width = 1416, height = 1920))
。但是,如果我将宽度更改为 1417,则它不起作用,并且我收到错误消息:
Error Domain=AVFoundationErrorDomain Code=-11858“源帧格式不支持” UserInfo={NSUnderlyingError=0x283e689c0 {Error Domain=NSOSStatusErrorDomain Code=-12502“(null)”},NSLocalizedFailureReason=视频无法合成,NSDebugDescription=源帧不支持的格式,NSLocalizedDescription=操作停止}
这是一个带有测试视频的示例项目的链接,我得到了错误。这种失败的情况对我来说是随机的,因为它适用于宽度 1416、1421、1422、1423、1429 并且对于 1416 和 1429 之间的所有其他宽度值都失败。这里有什么问题,我该如何解决这个问题?
为什么我使用这种方法?
我使用 anAVAssetReaderVideoCompositionOutput
而不是使用 anAVAssetReaderTrackOutput
然后手动进行裁剪的原因是因为使用前者可以减少应用程序的内存占用,因为在我的用例中,输出渲染大小将比视频原始大小小得多尺寸。当我同时处理多个视频时,这很重要。
ios - 在 iOS 中创建具有模糊背景的 AVComposition
我不太确定如何提出这个问题,如果有任何关于改进这个问题的有用反馈,我将不胜感激。我正在尝试创建一个接受视频 URL 作为输入(本地视频)的函数,而该函数又尝试创建一个背景模糊的视频,原始视频位于其中心并按比例缩小。我的问题是我的代码工作正常,除了当我使用直接从 iPhone 相机录制的视频时。
我试图实现的一个例子如下(取自我的代码):
这里的输入视频是mp4。我已经能够使代码与我在线下载的 mov 文件一起工作。但是当我使用从 iOS 相机录制的 mov 文件时,我最终得到以下结果:
(我怎样才能在问题中发布占用更少空间的图片?)
现在,我不知道如何问这个问题的原因是因为在这个过程中有相当多的代码,我无法完全缩小问题的范围,但我相信它在我将粘贴的函数中以下。我还将发布一个指向 github 存储库的链接,我的项目的准系统版本已经发布给任何好奇或愿意提供帮助的人。我必须承认,我使用的代码最初是由一个名为 TheTiger 的 StackOverflow 用户在以下问题上编写的:AVFoundation - 添加模糊背景到视频。我已经重构了其中的一部分,并且在他们的许可下,被允许在此处发布问题。
我的 github 存储库链接在这里:GITHUB REPO 我的演示设置了 3 个不同的视频,一个从网络下载的 mp4(工作),一个从网络下载的 mov(工作)和一个我在手机上录制的 mov(不是在职的)
我想象的导致问题的代码在这里:
getPreferredTransform() 函数也非常相关:
ffmpeg - 当输入视频是使用 AVComposition 连接的多个剪辑时,ffmpeg HLS 流音频不同步
我在创建 HLS 流时遇到问题,似乎是在 FFMPEG 或 iOS AVFoundation 端。
我目前正在开发一个视频应用程序,它允许用户一起录制、剪切和合并多个剪辑。这是使用AVMutableComposition
和这样的代码完成的:
然后它被导出使用
然后它被上传到服务器,该服务器使用以下代码从视频中创建 HLS 流:
输入使用两个剪辑(第一个是鸟,第二个是兔子)剪辑在一起的视频将生成以下 m3u8 文件(在 safari 中打开以查看它的播放):http ://tomaskohout.cz/bunny/bunny.m3u8
问题是第一次剪辑后音频重叠且不同步(注意坚果击中鸟的声音播放两次),最后一秒只是一个静止帧。
比较的原始视频在这里: http ://tomaskohout.cz/bunny/original.mov
一般来说,这似乎是 AVFoundation 中的一个问题。如果您使用 QuickTime 加入两个剪辑(使用“编辑”>“将剪辑添加到结尾”)并使用生成的视频作为 ffmpeg 的输入,它也会导致音频和视频不同步。似乎它会生成一些奇怪的定时视频,只有 quicktime 知道如何播放。如果您拍摄原始视频并尝试使用 VLC 播放它,它也会不同步,甚至会显示不应该出现在原始剪辑中的部分剪辑。它可能与编码器延迟和同步有关,但我真的不在我这里。
我找到了一种解决方法,即首先将视频转换为 mp4(在我的情况下,它只是将 mp4 转换为 mp4),如下所示:
ffmpeg -i input.mp4 -c:v:0 h264 input.preexport.mp4
然后使用预导出的版本生成m3u8文件。这似乎可以正确地重新定时视频。
这当然不理想,因为我必须浏览视频两次。
所以我想问一下是否有一个选项可以让我在生成 hls 的同时重新定时视频,或者如果有其他解决问题的方法更好。
谢谢!
托马斯