2017-10-10 64 views
0

最近,我使用Apple Core Audio C++ API完成了音頻解碼任務。OSX Native API視頻解碼C++

現在我有興趣使用C++(Windows操作系統上的DirectShow或Media Foundation的模擬)與本地OSX API再次解碼和獲取視頻文件幀的原始未壓縮數據。

我已經看過可用的API(AVFoundation,Core Video等),但找不到可以完成這項工作的框架,並且可以通過C++訪問。

所以我的問題是最適合這個任務的框架?

回答

1

您可以使用AVFoundationAVAssetReader從文件中讀取原始視頻數據。

您創建一個AVAssetReader,添加AVAssetReaderTrackOutputnil輸出設置,然後調用copyNextSampleBuffer()直到完成。

但是,除非你有非常特殊的需求,否則你不可能找到非常有用的原始編解碼器視頻數據。你想要顯示視頻嗎?在這種情況下,AVPlayerLayer/AVPlayerAVFoundation再次)可能是你正在尋找的。如果你想要更低的水平,CoreMedia/VideoToolbox可能適合你。 AVFoundation是一個客觀的c框架,因此您將使用objective-C++,而CoreMediaVideoToolbox是C框架。

+0

感謝您的回答。我不得不把這個項目擱置一段時間,現在我正在重新開始我的工作。我只需要逐幀獲取像素的原始未壓縮rgb值。我想對視頻執行自定義過濾器(我自己實現的過濾器),所以原始像素數據正是我需要從輸入文件獲得的數據。我會嘗試一下你的建議,並讓你知道結果。謝謝。 – mbaros

+1

啊,對於需要傳遞非零選項的幀數據,指定rgba(可能)。我可以更新我的答案。 –

+0

那太棒了。謝謝 – mbaros