AVAssetReader崩溃:曲目必须都有媒体类型AVMediaTypeAudio'

时间:2013-03-13 22:12:25

标签: ios avassetreader

我正在阅读AVURLAsset并通过以下调用启动阅读器

AVAssetReaderOutput *assetReaderOutput =
[AVAssetReaderAudioMixOutput
 assetReaderAudioMixOutputWithAudioTracks:songAsset.tracks
 audioSettings: nil];

使用MPMediaItems URLAsset属性初始化songAsset(AVURLAsset)。

我在某些资产上遇到了崩溃。

[AVAssetReaderAudioMixOutput initWithAudioTracks:audioSettings:] tracks must all have media type AVMediaTypeAudio'

如果MPMediaItem是音频资产并在iTunes中播放,为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

而不是songAsset.tracks,而是使用[songAsset tracksWithMediaType:AVMediaTypeAudio]。某些资产具有视频和音频轨道,例如iTunes音乐视频。

试试这个

NSArray <AVassetTrack *> *audioTracks = [songAsset tracksWithMediaType: AVMediaTypeAudio];
assetReaderOutput = [AVAssetReaderAudioMixOutput assetReaderAudioMixOutputWithAudioTracks: audioTracks
                                                                            audioSettings: nil];