2012-05-13 45 views
1

我注意到,對於一些視頻文件,AVPacket結構內返回的PTS時間戳不會從0開始,但會在一段時間後開始。例如。在3.128什麼的。我測試過的99%的視頻文件都有PTS時間戳,從0開始,但很少有文件有一些奇怪的時間戳,從3.128或1.2開始。我應該如何處理這些情況?我應該只記錄第一個數據包的PTS時間戳,然後從以下所有時間戳值中減去此PTS以獲得基於0的PTS值?或者我應該如何處理這些非基於0的時間戳?謝謝你的幫助!AVCodec PTS時間戳不是從0開始

回答

0

Libavcodec/avformat只是給你在文件中的數據。不幸的是(或者幸運的是,根據你的觀點),許多文件格式不需要時間戳從0開始。事實上,如果幾個文件構成較長的流的一部分,並且你可以讓它們從其他值開始很重要希望能夠非破壞性地將它們放回到一起。

如果您想要基於0的時間戳,那麼就像您所說的那樣,您需要保存最低/第一個時間戳並從所有時間戳中減去該值。但請注意,對於某些非常醜陋的格式(如DVD視頻),時間戳在內容中間重置很常見,這甚至會導致您的方法獲得負面時間戳。如果您希望您可能正在處理這些內容,則需要檢測不連續性並對其進行修補。最後,我與avcodec/avformat一起工作,他們沒有一個功能可以自動爲你做這件事,但現在他們可能會這樣做。如果你認爲你可能需要,我會研究它。