最近,我使用Apple Core Audio C++ API完成了音頻解碼任務。OSX Native API視頻解碼C++
現在我有興趣使用C++(Windows操作系統上的DirectShow或Media Foundation的模擬)與本地OSX API再次解碼和獲取視頻文件幀的原始未壓縮數據。
我已經看過可用的API(AVFoundation,Core Video等),但找不到可以完成這項工作的框架,並且可以通過C++訪問。
所以我的問題是最適合這個任務的框架?
最近,我使用Apple Core Audio C++ API完成了音頻解碼任務。OSX Native API視頻解碼C++
現在我有興趣使用C++(Windows操作系統上的DirectShow或Media Foundation的模擬)與本地OSX API再次解碼和獲取視頻文件幀的原始未壓縮數據。
我已經看過可用的API(AVFoundation,Core Video等),但找不到可以完成這項工作的框架,並且可以通過C++訪問。
所以我的問題是最適合這個任務的框架?
您可以使用AVFoundation
的AVAssetReader
從文件中讀取原始視頻數據。
您創建一個AVAssetReader
,添加AVAssetReaderTrackOutput
與nil
輸出設置,然後調用copyNextSampleBuffer()
直到完成。
但是,除非你有非常特殊的需求,否則你不可能找到非常有用的原始編解碼器視頻數據。你想要顯示視頻嗎?在這種情況下,AVPlayerLayer
/AVPlayer
(AVFoundation
再次)可能是你正在尋找的。如果你想要更低的水平,CoreMedia
/VideoToolbox
可能適合你。 AVFoundation
是一個客觀的c框架,因此您將使用objective-C++,而CoreMedia
和VideoToolbox
是C框架。
感謝您的回答。我不得不把這個項目擱置一段時間,現在我正在重新開始我的工作。我只需要逐幀獲取像素的原始未壓縮rgb值。我想對視頻執行自定義過濾器(我自己實現的過濾器),所以原始像素數據正是我需要從輸入文件獲得的數據。我會嘗試一下你的建議,並讓你知道結果。謝謝。 – mbaros
啊,對於需要傳遞非零選項的幀數據,指定rgba(可能)。我可以更新我的答案。 –
那太棒了。謝謝 – mbaros