我有一個有趣的問題,我需要研究與非常低級別的視頻流相關的問題。將原始數據轉換爲適用於iOS的可顯示視頻
有沒有人有任何經驗轉換成一個低分辨率視頻流的原始字節流(分成每個像素信息,但不是標準格式的視頻)?我相信我可以將數據映射爲每像素字節的RGB值,因爲與原始數據中的值對應的顏色值將由我們確定。我不知道該從哪裏出發,或者每個像素需要RGB格式。
我看過FFMPeg,但它的文檔很龐大,我不知道從哪裏開始。
我所包含的具體問題是否可以用該像素數據創建CVPixelBuffer?如果我這樣做,我需要將每像素數據的格式轉換爲什麼格式?
此外,我是否應該更深入地研究OpenGL,如果是的話,哪裏可以找到關於此主題的信息?
CGBitmapContextCreate呢?例如,如果我去了,我去了this,典型的像素字節需要看起來像什麼?這是否足夠快以保持幀率高於20fps?
編輯:
我想與你兩個優秀的幫助,並以我個人的一些更多的研究,我已經把如何構建原始RGBA數據,然後構建一個CGImage計劃從這些數據開始,從這個CVPixelBuffer from CGImage的CGImage中創建一個CVPixelBuffer。
但是,要在數據進入時播放那些數據,我不確定我會看到什麼樣的FPS。我將它們繪製到CALayer,還是有一些類似於AVAssetWriter的類,我可以在添加CVPixelBuffers時使用它來播放它。我擁有的經驗是使用AVAssetWriter將構建的CoreAnimation層次結構導出到視頻,因此視頻總是在開始播放之前構建的,而不是作爲實時視頻顯示。
有一個deeeeeeeeep看AVFoundation,尤其是AVAssetWriter。閱讀完該文檔後,一個好的起點可能是「[如何將UIImage數組導出爲電影](http://stackoverflow.com/questions/3741323/how-do-i-export-uiimage-array-as -a-電影/ 3742212)」。 – Till
我已經使用AVAssetWriter完成了相當多的工作,但是目前的問題是我不知道如何構建原始像素數據。 –
確實是這個問題。您必須弄清楚如何使用您從流中接收的原始數據構建像素緩衝區。這將取決於傳入數據的格式,編碼等。一旦你有了,請檢查@Till推薦的推薦和AVAssetWritter。這可能有幫助 CVPixelBufferRef buffer =(CVPixelBufferRef)[self pixelBufferFromCGImage:theImage size:CGSizeMake(image.size.width,image.size.height)]; if(buffer) if(![adapter appendPixelBuffer:buffer withPresentationTime:CMTimeMake(frame,fps)]){ –