1

Objective cを使用してIOS(iphone / ipod / ipad)でビデオ処理を行っています。AVFoundationFrameworkを使用してビデオをキャプチャしています。ffmpeg-libx264を使用してこれらのビデオフレームをエンコード/デコードしたい。iOS用のffmpeg-x264libをコンパイルしました。AVFoundationからkCVPixelFormatType_32BGRAを入手しました。

私の問題は1.avcodec_encode_videoを使用してenode
に変換 kCVPixelFormatType_32BGRAする方法ですか?AVFrame

2. AVFrameをavcodec_decode_video2からkCVPixelFormatType_32BGRA@デコード側に変換する方法は?

上記のプロセスを開始するか、チュートリアルを実行するためのパスを提供するのを手伝ってください。よろしくお願いします。

4

1 に答える 1

1

FFMpeg を使用しようとしている場合は、 kCVPixelFormatType_32BGRAではなく kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange を使用する必要があり、AVFrame に押し込むことができます。おそらく、iOS カメラ ( YUVNV12 ) から取得したものをYUV420Pに変換して、iOS以外のデバイスで受信できるようにすることもできます。iOS デバイスを使用しているだけで、それだけに関心がある場合は、色変換のこの側面をスキップして、AVFrame にパックするだけでかまいません。

すでに YUV 形式に変換しているため、CVPixelBufferGetBaseAddressOfPlane(buf,0)を使用してそのアドレスをエンコードするだけです。

画像をデコードしたら、色をYUV420PからBGRAに変更する必要があります。エンコードする前に最初に色を適切に交換しなかった場合は、YUVNV12 を BGRA に変更するだけです。

これが少し役立つことを願っています。適切な色変換アルゴリズムはオンラインで見つけることができます。

于 2012-04-05T22:46:55.707 に答える