【问题标题】:Playing Audio and Video of a mp4 file separately using AVFoundation Framework使用 AVFoundation 框架分别播放 mp4 文件的音频和视频
【发布时间】:2011-09-09 00:30:13
【问题描述】:

我使用 AVFoundation for iOS 开发了一个媒体播放器。我正在使用 AVPlayer 播放音频视频文件(例如 mp4 文件)。使用 AVPlayer 播放文件似乎很简单,直接调用播放、暂停 API。

现在我想将音频和视频分开并作为单独的实体同时播放。我想这样做是因为,我可能会对音频或视频轨道进行一些编辑,然后播放文件。

我可以使用 AVAssetTracks 将两者分开,但我不知道如何播放曲目。另外,我想同时播放两个曲目,这样就不会出现 AVSync 问题。

请指导我如何实现这个目标,即没有AVSync问题的音频和视频渲染。

谢谢..

【问题讨论】:

    标签: objective-c ios4 avfoundation


    【解决方案1】:

    实现这一点的最简单方法是拥有多个播放器项目。我将创建一个 playerItem,其中包含所有原始形式的曲目(即 mp4 文件)。然后使用 AVMutableComposition(AVAsset 的子类)创建另一个资产。这允许您仅将某些轨道放入合成中(即仅音频轨道)。当您只想播放音频时,播放具有仅音频轨道的可变组合的 playerItem (AVPLayer setCurrentItem:)。当您只想播放视频时,播放具有可变组合的 playerItem 与仅视频轨道。如果您想同时播放两者,请使用原始资产播放 playerItem。

    我假设您想同步播放编辑后的版本。为此,您必须创建另一个 AVMutableComposition 并添加所有已编辑的曲目。然后使用新创建的 AVMutableComposition 调用 setCurrentItem:。

    如果您只想编辑不同的曲目,而不必自己播放它们,则可以使用一个 AVMutableComposition 来完成。只需添加音频和视频 AVMutableCompositionTrack 并进行编辑,直到您心满意足为止。无论您分别对其进行多少编辑(假设您的编辑逻辑正确),它们都将始终同步播放。只要确保您在播放时不要尝试进行编辑。为此,您必须创建一个副本并编辑该副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多