我正在使用 AVPlayer 在我的应用程序中显示视频。我想构建一个功能,让用户可以制作自己在播放器中操作视频的视频副本,如果我不损失质量,我会很喜欢它。
此功能的原因是允许用户决定他们想要的播放方式。他们可能想要放开、暂停、快退、快进等。我想在他们向前和向后滑动视频时制作他们的视频副本。
显然,我可以使用屏幕录制 API 来完成此任务,但这意味着视频质量会急剧下降。我什至不确定我正在寻找的东西是否可能。
我正在使用 AVPlayer 在我的应用程序中显示视频。我想构建一个功能,让用户可以制作自己在播放器中操作视频的视频副本,如果我不损失质量,我会很喜欢它。
此功能的原因是允许用户决定他们想要的播放方式。他们可能想要放开、暂停、快退、快进等。我想在他们向前和向后滑动视频时制作他们的视频副本。
显然,我可以使用屏幕录制 API 来完成此任务,但这意味着视频质量会急剧下降。我什至不确定我正在寻找的东西是否可能。
如果原始素材的分辨率和帧速率远低于屏幕的分辨率和捕获速率,那么这当然是可能的。考虑单个 100x100“像素”每秒恰好改变一次颜色的极限情况。当然有可能构建出能够完美保真地捕捉到这一点的东西。
但一般来说,源材料的分辨率和帧速率可能比您的采样更高,并且您将损失质量,通常是实质性的质量(正如您所发现的)。即使它们相等,您也会由于渲染伪影而丢失一些。为此,源的质量必须明显低于捕获系统,这可能不符合您的希望。
如果您控制进行操作的软件,则可以屏幕记录操作,然后以其原始质量(或尽可能接近,考虑到可能较小的目标分辨率)重新插入视频。或者,您可以对屏幕捕获进行后处理,以将视频插入应用程序中。(最后的方法在实践中可能行不通。)