iOS mp3播放 CoreMediaErrorDomain Code=-12939

0x00 错误信息

byte range length mismatch - should be length 16384 is length 82338

play error:Error Domain=NSURLErrorDomain Code=-1 "未知错误" UserInfo={NSLocalizedDescription=未知错误, NSUnderlyingError=0x283a26f70 {Error Domain=CoreMediaErrorDomain Code=-12939 "byte range length mismatch - should be length 16384 is length 82338" UserInfo={NSDescription=byte range length mismatch - should be length 16384 is length 82338, NSURL=https://xxx/xxx/xxx.mp3}}}

通过浏览器调试查看请求信息:

Response Headers:
Content-Length: 82338

只有这个对得上
然而也没什么实际作用


0x01 相关代码

// 对应 mp3 资源
AVPlayerItem *item = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:url]];

// 监听状态
[item addObserver:self forKeyPath:@"status" 
		 options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) 
		 context:nil];

// 添加到播放器
[_player replaceCurrentItemWithPlayerItem:aa];		 

0x02 解决方案

经过不断地调试,调试,调试…
发现了一个解决方案!
通过AVURLAsset来请求资源
再创建AVPlayerItem就不会有之前的错误了
即使有
可以重新播放一次
也能解决问题

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:url] options:nil];
AVPlayerItem *aa = [[AVPlayerItem alloc] initWithAsset:asset];

居然就这样搞定了!


一个有趣点赞动画

https://github.com/xjh093/JHLikeButton


猜你喜欢

转载自blog.csdn.net/xjh093/article/details/107615674