Lesliewjm 2021-06-15 13:59 采纳率: 0%
浏览 31

IOS 关于视频的本地处理以及播放

现在有个需求,我需要从相册获取视频进行本地保存,然后再在别的页面进行播放视频,这个需要什么样的逻辑呢?本人现在从相册获取了视频后,获取的url转为了Data类型,然后保存到本地数据库中,然后在其他页面用AVPlayerViewController进行播放时,对Data处理转为String时有的方法会出错,或者会播放失败,这个会是什么原因呢。或者我这种方法可行吗?

 

  • 写回答

1条回答 默认 最新

  • 又做饿梦了吗 2024-03-29 19:54
    关注

    从相册获取视频并进行本地保存,然后在其他页面进行播放,这个需求可以通过几个步骤来实现。你的当前方法将视频转为Data类型保存到数据库可能不是最优的选择,因为视频文件通常较大,直接存储为Data可能会导致性能问题和内存占用过高。

    以下是实现这个需求的一个更合理的逻辑:

    1. 从相册获取视频

      • 使用UIImagePickerController来让用户从相册中选择视频。
      • 在代理方法中获取用户选择的视频URL。
    2. 保存视频到本地

      • 不需要将视频转换为Data保存到数据库,而是直接保存视频的URL或者文件路径。
      • 如果需要确保视频文件不会被删除,可以考虑将视频文件复制到应用的沙盒目录中的某个位置,并保存这个新路径。
    3. 在其他页面播放视频

      • 在需要播放视频的页面,使用保存的视频URL或文件路径来初始化一个AVPlayer
      • AVPlayerAVPlayerViewController关联,然后展示这个控制器来播放视频。

    对于你当前遇到的问题,将视频转为Data然后转为String时出错或播放失败的原因可能有以下几点:

    • 数据损失:在转换过程中可能会损失视频数据,导致播放失败。
    • 编码问题:转为String时使用的编码方式可能不适合视频数据,导致数据损坏。
    • 内存问题:大视频文件转换为Data会占用大量内存,可能导致应用崩溃。

    因此,不建议将视频转换为Data类型存储。相反,直接保存视频文件的URL或路径是更合理且高效的做法。

    如果你确实需要将视频数据以某种形式存储到数据库(例如,需要加密或压缩视频数据),那么你应该使用更专业的库来处理视频的编码和解码,而不是简单地转换为String。但这通常不是必要的,除非你有特定的安全或存储需求。

    总之,通过保存视频文件的URL或路径,并在需要时直接使用这些路径来播放视频,是更直接和高效的方法。

    评论

报告相同问题?