2012-04-10 72 views
0

我只有正常的文本/二進制文件的經驗。現在,我想要處理更高級的文件格式,例如媒體文件(視頻/音頻),而無需使用外部庫,如libavffmpeg。目的是瞭解處理這些文件的原則。如何在C/C++中使用正常的文件讀取功能讀取媒體文件?

但是,我似乎無法找到關於在互聯網上學習這個主題的基本教程。有人知道一些有用的資源嗎?另外,如何處理它從文件中「原始」,如「.mp4」,「.mp3」...

+2

不同的文件有不同的標題。例如,一個bmp文件在文件中首先有一個位圖文件頭,而一個wav有一個頭後跟數據塊序列。您需要閱讀文件格式的規範,然後根據規範解析文件。例如:http://en.wikipedia.org/wiki/BMP_file_format和https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ – Cyclonecode 2012-04-10 14:16:47

+1

對於音頻,最簡單的格式是WAV,它存儲未壓縮的聲波。我在同一時間自己製作了一個簡單的WAV播放器...本文可能是一個很好的資源:http://www.sonicspot.com/guide/wavefiles.html – Imp 2012-04-10 14:21:46

回答

2

這是一個廣泛的問題。你到底想做什麼?你有一個特定的目標,你需要完成(從一個格式到另一個)?在這種情況下,使用FFmpeg/Libav進行轉碼。爲了學習的目的,你是否有興趣學習如何做這些東西?這也很酷。請繼續閱讀。

聽起來你已經有了音頻格式。一個任務可能是採用簡單的音頻編解碼器(例如,ADPCM的變體)編碼的簡單音頻格式(如.WAV或.AIFF),然後處理(如打開文件,解析標頭,解碼數據,並且可選地將其發送到音頻輸出接口以播放它)。

The MultimediaWiki是一個免費的在線資源技術多媒體信息(披露:我運行該網站)。它應該有一些信息來幫助你。讓我知道你是否想深入研究多媒體技術。

UPDATE: 下面是一些具體的,面向音頻的目標,你可以嘗試:看一些從這個目錄中的文件:http://samples.mplayerhq.hu/A-codecs/libsndfile-samples/(我在幾年前產生這些; here's information about how I did it)。我建議學習以下文件:aif-ima-adpcm.aif,wav-ima-adpcm.wav和wav-ms-adpcm.wav。找出如何解析它們,解碼裏面的音頻,並將它們輸出到計算機上的音頻設備。一些資源來幫助您開始:

祝你好運!並且不要猶豫提出更多問題(儘管它們應該是單獨的SO問題,所以這個入口不會太難處理)。

+0

謝謝。是的,我想這樣做只是爲了學習。但是,我想要實現一些簡單的格式,以便了解多媒體在計算機中的實際處理方式。就像我們在大學學到的許多科目一樣,我們可能不會直接使用它,但稍後當我們真的需要去研究時,它會很有用,我們有基礎去挖掘這個領域。我想從頭開始學習它,而不是使用庫。 – Amumu 2012-04-11 03:59:58

+0

我贊成你對知識的渴求。我會用一些具體的例子更新我的答案。 – 2012-04-11 06:49:38