大佬教程收集整理的这篇文章主要介绍了iphone – iOS视频:可以同时使用4个以上的AVAssetReader吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_419_7@想象一下屏幕上的24个方块,每个方块显示8个视频池中的一个视频.
@H_419_7@moviePlayer不起作用,因为它只显示一个全屏视频.具有多个AVPlayerLayers的AVPlayer是有限的,因为只有最近创建的图层才会在屏幕上显示它的内容(根据文档和我的测试).@H_419_7@所以,我写了一个简短的视频类,并为我的包中的每个.mp4文件创建了一个实例,使用AVAssetReader来读取它的内容.在更新时,每个视频帧都会被转换为UIImage并根据视频的帧速率显示.此外,这些图像被缓存以便快速访问循环.
@H_419_7@
- (id) initWithAsset:(AVURLAsset*)asset withTrack:(AVAssetTrack*)track { self = [super init]; if (self) { NSDictionary* setTings = [NSDictionary DictionaryWithObjectsAndKeys:[NSnumber numberWithInt:kCVPixelFormatType_32BGRA],(NSString*)kCVPixelBufferPixelFormatTypeKey,nil]; mOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:track outputSetTings:setTings]; mReader = [[AVAssetReader alloc] initWithAsset:asset error:nil]; [mReader addOutput:mOutput]; BOOL status = [mReader startReading]; } return self; } - (void) update:(doublE)elapsed { CMSampleBufferRef buffer = [mOutput copyNextSampleBuffer]; if (buffer) { UIImage* image = [self imageFromSampleBuffer:sampleBuffer]; } [...] }@H_419_7@实际上这很好用,但只适用于4个视频.第五个从未出现过.首先我想到了内存问题,但我在以下设备上进行了测试: @H_419_7@> iPhone 3GS
@H_419_7@我在每台设备上都有相同的行为:4个视频以流畅的循环播放,没有差异.
@H_419_7@如果它本来是一个内存问题,我希望至少iPad 2能够显示5或6个视频(由于它是更好的硬件),或者3GS只能显示1或者某个地方出现崩溃. @H_419_7@在设备上调试显示,那@H_419_7@
BOOL status = [mReader startReading];@H_419_7@视频5,6,7和8返回false.
@H_419_7@那么,是否有某种硬件设置(或限制)不允许超过4个同时AVAssetReaders?因为,我无法真正解释这种行为.我不认为所有设备都具有完全相同的视频内存量.
以上是大佬教程为你收集整理的iphone – iOS视频:可以同时使用4个以上的AVAssetReader吗?全部内容,希望文章能够帮你解决iphone – iOS视频:可以同时使用4个以上的AVAssetReader吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。