AVAssetWriter:在调用 `finishWriting` 之前预览录制的 .mp4?

问题描述 投票:0回答:2

我正在使用

AVAssetWriter
从 iOS 相机录制视频(带音频)。一切都很好。

我现在希望允许用户在

saving
之前预览视频,也就是说,在
finishWriting
实例上调用
AVAssetWriter
之前预览视频。

我最初的想法是将编写者在重新编码期间写入的当前文件复制到预览网址,然后使用另一个

AVAssetWriter
完成该文件,然后播放它。

但是,我不确定如何正确初始化第二个

AVAssetWriter
以进行预览,因此我可以在预览网址上调用
finishWriting
...

任何人都知道我如何实现预览功能,以允许用户在调用

mp4
之前预览当前录制的
finishWriting

ios swift avfoundation avassetwriter avkit
2个回答
0
投票

有人知道我如何实现预览功能,以允许用户在调用 finishWriting 之前预览当前录制的 mp4 吗?

您必须致电

finishWriting
才能获得可查看的 mp4 文件。

所以调用

finishWriting
,让用户预览生成的文件,然后决定是删除还是保留。


0
投票

考虑到 AVAssetWriter 的限制,在调用 finishWriting 并最终确定文件之前,视频文件确实无法播放。不幸的是,这意味着在写入过程中预览视频文件的任何尝试都将导致文件不完整或损坏。

总结 • 写入期间无法直接播放:由于文件在完成写入后才最终确定,因此在执行此方法之前您无法预览视频。

替代方法

  1. 使用临时预览:不要直接预览正在写入的视频文件,而是考虑使用 AVPlayer 或简单的 UllmageView 渲染视频的几帧(或静止图像)作为临时预览。
  2. 导出到特定位置:视频完全导出后,您可以预览它。这意味着您必须等到整个过程完成。

结论 如果您正在寻找一种在编码过程中播放视频的方法,由于 AVAssetWriter 的工作原理,没有可行的选择。你需要等到写作完成 完成后视频才能成功播放。

© www.soinside.com 2019 - 2024. All rights reserved.