如何使用avassetreader在音频轨道中搜索?

Wil*_*ill 4 objective-c core-audio

我熟悉如何使用AVAssetReader从ipod库中流式传输音频数据,但我对如何在轨道内进行搜索感到茫然.例如,从中间点开始播放等.从头开始然后顺序获取连续样本很容易,但肯定有办法随机访问?

Ste*_*tto 5

AVAssetReader具有属性timeRange,该属性确定将从中读取媒体数据的资产的时间范围.

@property(nonatomic) CMTimeRange timeRange
Run Code Online (Sandbox Code Playgroud)

此属性的值与CMTimeRangeMake(kCMTimeZero,asset.duration)的交集确定将从中读取媒体数据的资产的时间范围.

默认值为CMTimeRangeMake(kCMTimeZero,kCMTimePositiveInfinity).阅读开始后,您无法更改此属性的值.

因此,如果你想寻找轨道的中间位置,你需要从asset.duration/2创建一个CMTimeRange到asset.duration,并将其设置为AVAssetReader上的timeRange.

  • 这意味着要在AVAsset中进行搜索,您必须重新创建AVAssetReader. (4认同)