2012-02-08 101 views
1

我在IOS工作視頻處理(iphone/ipod/ipad)使用目標c。我正在使用AVFoundation框架捕獲視頻。我想用ffmpeg-libx264對這些視頻幀進行編碼/解碼。我已經爲ios編譯了ffmpeg-x264庫。我從AVFoundation獲得了kCVPixelFormatType_32BGRA。ffmpeg-X264 encode --BGRA to AVFrame(ffmpeg)and viceversa?對於IOS

我的問題是
1.How使用avcodec_encode_video到kCVPixelFormatType_32BGRA轉換爲AVFrame的e節點?

2.如何將AVFrame從avcodec_decode_video2轉換爲kCVPixelFormatType_32BGRA @ decode side?

請幫助我開始上面的過程或給出工作教程的路徑。提前感謝。

回答

1

如果你正在嘗試使用FFmpeg的,你需要使用kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange而不是kCVPixelFormatType_32BGRA然後你就可以推入一個AVFrame。您可能還想將您從iOS相機(YUVNV12)獲得的內容轉換爲YUV420P,以便您可以在不是iOS的其他設備上接收它。如果您只是使用iOS設備,並且您只關心這一點,則可以跳過顏色轉換的這一側,並將其打包到AVFrame中。

由於您已經將其放入YUV格式,因此您可以使用CVPixelBufferGetBaseAddressOfPlane(buf,0)並對該地址進行編碼。

一旦你解碼圖像,你需要從YUV420P改變顏色來BGRA。如果您在編碼之前沒有正確交換顏色,則只需將YUVNV12更改爲BGRA即可。

希望這會有所幫助。您可以在線找到適當的顏色轉換算法。