H264 비디오를 rgb24 파일로 변환하면 Windows에서 제대로 표시 될 수 있지만 UIImage를 사용하여 UIImageView에서 표시 할 때 색상이 올바르지 않습니다. . 나는이로 사용 코드 :RBG24는 Windows에서 잘 재생할 수 있지만 iOS에서는 재생할 수 없습니다.
- (UIImage *)imageFromAVPicture:(const UInt8 *)pict width:(int)width height:(int)height
{
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CFDataRef data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, pict, width*height*3,kCFAllocatorNull);
CGDataProviderRef provider = CGDataProviderCreateWithCFData(data);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGImageRef cgImage = CGImageCreate(width,
height,
8,
24,
width*3,
colorSpace,
bitmapInfo,
provider,
NULL,
YES,
kCGRenderingIntentDefault);
CGColorSpaceRelease(colorSpace);
UIImage *image = [self scaleImage:cgImage];
//UIImage *image = [[UIImage alloc] initWithCGImage:cgImage];
CGImageRelease(cgImage);
CGDataProviderRelease(provider);
CFRelease(data);
return image;
}
그러나 이전이의 CGImage를 만들 다음과 같은 코드를 추가, 그 쇼가 잘 될 것이다, 이렇게 다음 어떤 코드 betweent RGB 및 BGR 변환입니다.
UInt8 tmpBuff1,*tmpBuff2;
tmpBuff2 = (UInt8 *)pict;
for(int i =0;i<height;i++)
{
for(int j=0;j<width;j++)
{
tmpBuff1 = *tmpBuff2;
*tmpBuff2 = *(tmpBuff2+2);
*(tmpBuff2+2) = tmpBuff1;
tmpBuff2 += 3;
}
}
rgb에서 bgr로 변환 한 후 해당 쇼가 올바르다.
그래서 왜 RGB24 파일이 PC에서 잘 재생되는지, 왜 RGB24에서 BGR24로 변환하기 전에 iOS에서 잘못 재생되는지에 대해 알고 싶습니다.
오, 정말 고마워요! – zhzhy