ffmpeg ts固定位元速率個人見解

2022-06-01 12:24:08 字數 764 閱讀 4322

編碼ts的固定位元速率時候,也許你會遇見這樣的問題。

pcr < dts 的 warning,或者vbv的overflow。這時,十分詭異的問題來了,如果你輸入不同的輸入,編碼引數都是一樣。但乙個可以,乙個不行。通過觀察,你會發現,不行的那個出現乙個明顯的畫面晃動,或者畫質本身較高。

這時,你猜想是不是**出現了問題了呢?

通過檢視原始碼在mpegtsenc.c裡我們可以看到那個異常

pcr的計算是通過了get_pcr(ts,s->pb)計算所得的。

這裡我們不難看到計算方式就是通過計算檔案的寫入的偏移,通過轉換成ts的muxrate的timebase下,加上一開始的pcr得到。這時,注意到,如果偏移量跟本身你寫入的dts的時間對比就知道乙個關鍵問題了。那就是在那個ts的位元速率下,我們本身的寫入的大小這時對應的dts應該是乙個大於等於pcr的存在的。因為你要知道那時的pcr代表了當前由檔案偏移計算出來的時間dtstmp,而你卻小於上乙個dtstmp。這樣不出warning才怪!

這時我們知道問題**了。

要麼你當前的pts是自己計算錯了,如果不是。恭喜你,獲得跟我一樣的處境。

就是x264編碼出來的質量高於你本身的封裝的質量了。說到這裡,相信你也知道了解決方案了。至此,困擾了接近2個星期的問題close。

用固定大小的堆查詢Top N個元素

輸入一串行的整數 共n個 找出前十個元素 top 10 可以用heap實現 在堆滿時,如果要插入乙個新的元素,則需比較該元素是不是當前堆中最小的元素,如果不是,則需要將該新元素替換最小的元素,從而維護乙個top n的堆。通常最小的元素查詢需要線性時間,因為只需要查詢葉子節點 這是由堆的orderin...

自己寫的乙個固定表頭JS函式

用於固定表頭 固定表頭使用方法 1.新增固定表頭容器控制項divheader top expression this.offsetparent.scrolltop 82 數字82是該表頭到頁面頂部的距離,目前該數值須根據具體情況手動加入 2.定義原顯示表頭如 要在該表頭標籤內新增 注釋表頭,在程式執...

以乙個固定 全域性次序獲取多個鎖

當兩個或多個執行緒互相等待時被阻塞,就會發生死鎖。例如,第乙個執行緒被第二個執行緒阻塞,它在等待第二個執行緒持有的乙個資源。而第二個執行緒在獲得第乙個執行緒持有的某個資源之前不會釋放這個資源。由於第乙個執行緒在獲得第二個執行緒持有的那個資源之前不會釋放它自己所持有的資源,而第二個執行緒在獲得第乙個執...