ffmpegのlibav*ライブラリを使用してiPhoneのカメラフレームをH.264ビデオにエンコードしようとしています。この Appleの記事で、CMSampleBufferをUIImageに変換する方法を見つけましたが、ffmpegのAVPictureに変換するにはどうすればよいですか?
ありがとう。
ffmpegのlibav*ライブラリを使用してiPhoneのカメラフレームをH.264ビデオにエンコードしようとしています。この Appleの記事で、CMSampleBufferをUIImageに変換する方法を見つけましたが、ffmpegのAVPictureに変換するにはどうすればよいですか?
ありがとう。
私自身の質問に答える:
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
// access the data
int width = CVPixelBufferGetWidth(pixelBuffer);
int height = CVPixelBufferGetHeight(pixelBuffer);
unsigned char *rawPixelBase = (unsigned char *)CVPixelBufferGetBaseAddress(pixelBuffer);
// Do something with the raw pixels here
// ...
// Fill in the AVFrame
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
AVFrame *pFrame;
pFrame = avcodec_alloc_frame();
avpicture_fill((AVPicture*)pFrame, rawPixelBase, PIX_FMT_RGB32, width, height);
pFrame
これで、ピクセル形式を使用しているサンプルバッファの内容が入力されますkCVPixelFormatType_32BGRA
。
これで私の問題は解決しました。ありがとう。