MP3格式播放出來居然是視頻,這是為什麼?

今天下載了幾個音頻,格式是MP3,播放之後居然是視頻。這是為什麼?


只有只用過Windows的人才會有這樣的疑問,在Windows下為了簡便將文件後綴當做識別文件類型的,並且將不同文件類型關聯到不同的文件打開(當然有些文件如.exe/.bat/.com是自執行的),但這是Windows下的一種圖省事的辦法。

其實每個文件都有文件頭信息的,一般是形如「FFD8FF」的一個十六進位字元串,常見的有如下:

JPEG (jpg),文件頭:FFD8FF

PNG (png),文件頭:89504E47

GIF (gif),文件頭:47494638

TIFF (tif),文件頭:49492A00

Windows Bitmap (bmp),文件頭:424D

CAD (dwg),文件頭:41433130

Adobe Photoshop (psd),文件頭:38425053

Rich Text Format (rtf),文件頭:7B5C727466

XML (xml),文件頭:3C3F786D6C

HTML (html),文件頭:68746D6C3E

Email [thorough only] (eml),文件頭:44656C69766572792D646174653A

用程序打開或執行文件時,會檢查這些文件頭信息。也就是說你可以將一個jpg文件的後綴由「my.jpg」改為"my.mp3",在Windows下默認會將mp3文件關聯到WMP之類的視頻影音軟體打開,但實際上打不開,你可以用Windows自帶的看圖軟體打開(在打開中選擇「所有文件」格式或者直接拖到看圖軟體中去)。

如果用過Linux軟體,Linux下很多文件都是沒有後綴的,無法根據文件後綴來決定用什麼軟體打開,只要知道文件的文件頭信息一樣可以用相應的軟體打開或者直接執行。

各種文件的頭信息 - CSDN博客


圖片,視頻,音頻都是玩的很成熟的技術了,

其擴展名並不是解釋器判斷其類型的依據,依據是文件開頭的標識欄位.

像gif圖片擴展名改為jpg,會顯示第一幀,改回gif還是動畫,百度下的動圖都是jpg的,改回gif什麼都不影響.

其他的也一樣


只要文件的編碼方式不變,那用什麼軟體打開是不會對文件本身產生影響的,文件的後綴名並不是判斷文件類型的最有效最可靠的方式。

Moving Picture Experts Group Audio Layer III ,也就是經常說的MP3,是一種音頻壓縮格式,如果源文件(原始視頻)經過了MP3編碼方式進行編碼後是不可以保留視頻信息的。

如果你的*.mp3文件播放的時候出現了圖像信息,也就是說,你這個MP3文件的後綴可能是假的,可能是別的視頻媒體格式然後修改了後綴。如果是這樣的話,再用播放器打開的時候,有的播放器是通過文件後綴來確定文件的編碼格式然後用對應的解碼器去解碼文件然後播放。但是好的播放器應該會判斷一下文件的編碼格式而不是通過後綴名。所以這時候播放器打開你的「假的MP3」文件的時候實際上它已經知道你這個MP3文件應該是什麼視頻格式,然後用對應格式的視頻解碼器去播放,然後就出現了視頻。

以上的是我猜的,如果題主有興趣驗證一下的話,試著把文件的後綴名改為123或者其他的字元(MP4,3gp什麼的都試一下吧我也不確定這種情況下的軟體的邊界用例是什麼樣的~)


點詳細信息 please


如果你使用過Linux就會知道,後綴不重要,文件內部的magic number才是重點。


八成是發給你這個mp3的人本來只有視頻格式,但是你們是需要mp3的,圖省事直接改個後綴就相當於轉碼了,你愉快的聽到了音頻,他愉快的省了轉碼的過程。只有愛奇藝一臉懵逼,我們發現一個老實人,快欺負她


之所以以為他是mp3,是因為你看他的擴展名叫mp3

然而計算機並不關心文件的擴展名,無論是圖片音頻還是視頻文件,他們的文件內容本體開頭的一部分會標名了這個文件是什麼類型以及其他相關信息,大部分的計算機軟體在識別文件類型的時候只以這個為準

簡單來說,就是你把一個xxx.rmvb改名叫xxx.mp3了


要麼,是擴展名寫錯了,要麼就是播放器誤識別。


因為在Windows下有時候是按照文件擴展名識別文件的,但是文件自身的內容並不受擴展名影響,文件類型是寫在文件頭部的,So,一個文件是視頻還是音頻還是啥的,並不受擴展名影響;

同時軟體在打開這些文件的時候,也不會以擴展名作為文件類型的判斷依據;

擴展名有時候為了方便系統綁定默認軟體的,或者作為軟體篩選目標文件的過濾器;

你信不信你把後綴名改成.mp30,打開後仍然是個視頻……


推薦閱讀:

計算機視覺(Computer vision)在傳統行業有怎樣的應用?
如何看待谷歌deeplearning團隊新開發的DNC(可微分神經計算機)?
C++里有哪些處理鍵盤和滑鼠消息的函數?如何使用?
給非計算機專業學生提供一份較為全面的書單以自學計算機專業知識,你有哪些好書值得推薦?
零基礎入行圖像演算法工程師需要學習哪些課程?

TAG:計算機技術 | MP3 |