2017-09-05 55 views
0

我的應用程序需要切換之間的兩個(或更多個)在輸入流,同時只有一個輸出(你能想到作爲流多路複用器)。來自輸入的幀將被解碼,然後由於覆蓋物而再次重新編碼。調整PTS之間切換時流

所以安排AVFrame PTS我編碼幀之前計算的間隔。但是,當我在RTMP流和MP4文件之間切換時,每次切換時視頻都會延遲一點。所以,在第三個交換機上,結果流不同步。

如果我失去了一些東西我有編碼之前修改框架上,我不知道。我也是關於在輸出中爲幀創建一個獨立的PTS,但我不知道如何創建它。

的輸入流可以有不同的FPS,時基或編解碼器和應用程序必須能夠處理所有的人。

回答

0

我發現根本原因。

問題是MP4文件。使用這種類型的文件(出於某種原因),視頻和音頻數據包以bug串(即:20個視頻數據包,然後20個音頻數據包)讀取,而在RTMP流上更像(2個視頻,然後是2個音頻數據包)。 所以問題閱讀完所有的一堆前的開關被應用於(即:20個視頻包和10個音頻數據包),因此該點產生的數據流是不同步的,無論你以後做什麼了。

溶液我實現等待直到解碼的幀的類型是比前一個不同。然後是當我執行開關。