objective-c – 使用OpenGL-ES在iOS上播放视频

objective-c – 使用OpenGL-ES在iOS上播放视频,第1张

概述我正在尝试在iOS上播放视频(MP4 / H.263),但结果非常模糊. 这是初始化资产阅读的代码: mTextureHandle = [self createTexture:CGSizeMake(400,400)];NSURL * url = [NSURL fileURLWithPath:file]; mAsset = [[AVURLAsset alloc] initWithURL: 我正在尝试在iOS上播放视频(MP4 / H.263),但结果非常模糊.
这是初始化资产阅读的代码:
mTextureHandle = [self createTexture:CGSizeMake(400,400)];NSURL * url = [NSURL fileURLWithPath:file];    mAsset = [[AVURLAsset alloc] initWithURL:url options:NulL];NSArray * tracks = [mAsset tracksWithMediaType:AVMediaTypeVIDeo];mTrack = [tracks objectAtIndex:0];NSLog(@"Tracks: %i",[tracks count]);Nsstring* key = (Nsstring*)kCVPixelBufferPixelFormatTypeKey;NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];NSDictionary * settings = [[NSDictionary alloc] initWithObjectsAndKeys:value,key,nil];mOutput = [[AVAssetReaderTrackOutput alloc]             initWithTrack:mTrack outputSettings:settings];mReader = [[AVAssetReader alloc] initWithAsset:mAsset error:nil];[mReader addOutput:mOutput];

对于读者init来说,现在是实际的纹理:

CMSampleBufferRef sampleBuffer = [mOutput copyNextSampleBuffer];    CVImageBufferRef pixelBuffer = CMSampleBufferGetimageBuffer(sampleBuffer);CVPixelBufferLockBaseAddress( pixelBuffer,0 );glBindTexture(GL_TEXTURE_2D,mTextureHandle);glTexImage2D(GL_TEXTURE_2D,GL_RGBA,600,400,GL_BGRA_EXT,GL_UNSIGNED_BYTE,CVPixelBufferGetBaseAddress( pixelBuffer ));    CVPixelBufferUnlockBaseAddress( pixelBuffer,0 );    CFRelease(sampleBuffer);

一切都很好……除了渲染的图像看起来像这样;切片和歪斜?

我甚至尝试过调查AVAssetTrack的首选转换矩阵,但无济于事,因为它总是返回CGAffinetransformIDentity.

侧注:如果我将源切换到相机,图像会变得很好.我错过了一些减压步骤吗?这不应该由资产读者处理吗?

谢谢!

代码:https://github.com/shaded-enmity/objcpp-opengl-video

解决方法 我认为CMSampleBuffer出于性能原因使用填充,因此您需要为纹理选择合适的宽度.

尝试使用以下命令设置纹理的宽度:CVPixelBufferGetBytesPerRow(pixelBuffer)/ 4(如果您的视频格式每像素使用4个字节,则更改为其他)

总结

以上是内存溢出为你收集整理的objective-c – 使用OpenGL-ES在iOS上播放视频全部内容,希望文章能够帮你解决objective-c – 使用OpenGL-ES在iOS上播放视频所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1242268.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存