2010-07-14 38 views
2

沒有人知道我可以從原始視頻比特流中檢索mpeg4視頻(非h264,即Mpeg4第2部分)的幀尺寸嗎? 我目前正在爲Windows Media Foundation編寫一個自定義媒體源,我必須提供一個需要幀大小的媒體類型。沒有它,它就無法工作。 有什麼想法? 謝謝從原始mpeg4流獲取幀維度?

回答

3

我沒有得到你。您是否想知道正在流式傳輸的視頻的寬度和高度?如果是這樣的(我猜它是「維」你正在尋找)繼承人如何:

  1. 解析流爲這個整數000001B0(十六進制),其總是你流的第一件事。如果沒有,請參閱流的SDP(如果有的話),並搜索config=字段,那裏是...現在只有它是Base16字符串!
  2. 讀取所有字節,直到獲得整數000001B6 (十六進制)
  3. 你應該得到這樣的事情(十六進制):000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. 這是「流配置頁眉」或框架或什麼的,確切的名稱是視頻對象序列它擁有所有的信息解碼器需要。解碼視頻流
  5. 閱讀最後4個字節(在我的例子中它們被一個空格隔開 - A021E0A2
  6. N流觀察這些字節作爲一個32位無符號整數...
  7. 爲了得到寬度讀前8位,然後乘你4
  8. 跳過得到什麼接下來的7位
  9. 要獲得高度讀下一個9個比特
  10. 在僞碼:

    WIDTH = readBitsUnsigned(array, 8) * 4; 
        readBitsUnsigned(array, 7); 
        HEIGHT = readBitsUnsigned(array, 9); 
    

你去...寬度和高度。 (:

+1

這是正確的嗎?我試圖解碼流的幀我知道是1280x1024。有了這個邏輯,寬度不能超過1020,高度不能超過511. – Ninjammer 2013-09-22 23:14:43

+0

WIDTH應該乘以乘以8而不是4,HEIGHT應該乘以2也是從最後5個字節而不是4個字節讀取的整數。 – 2017-05-02 12:56:31