不同媒體容器封裝層的timebase分析

在使用ffmpeg封裝過程中發現,封裝成mp4文件音視頻是同步的,但是封裝成mpegts文件則有問題,視頻播放正常,但音頻播放異常,且不同步。所以猜測是封裝層的時間基準單位(timebase)在搞鬼。
在此,並沒有去深入的分析ffmepg中的源代碼,而是簡單的修改了一下ffmpeg中的av_dump_format函數,使之把音頻的tbn(即封裝層的timebase)也打印出來,分析瞭如下容器:mpegts, mp4, mov和flv共4中,結果如下:

test.ts
----------------------------------------------------------
Input #0, mpegts, from '/home/b1shen/Videos/test.ts': Duration: 00:01:00.02, start: 1.400000, bitrate: 763 kb/s
  Program 1 Metadata: service_name    : Service01
      service_provider: FFmpeg    
      Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 640x480 [SAR 4:3 DAR 16:9] , 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101](und): Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 128 kb/s, 90k tbn
分析結果: 
    video: tbn:90k
    audio: tbn:90k 
    所以video與audio的封裝層的timebase是一致的,均爲90k

test.mp4
---------------------------------------------------------- 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/b1shen/Videos/test.mp4': Duration: 00:01:00.02, start: 0.000000, bitrate: 680 kb/s 
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 4:3 DAR 16:9], 557 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 115 kb/s, 44100 tbn, 44100 tbc ( default)
    Metadata: handler_name    : SoundHandler 
    分析結果:
    video: tbn:12800
    audio: tbn:44100 
    從結果來看,音頻及視頻的封裝層timebase不一致,視頻爲128000,音頻爲44100(與採樣率一致)

test.mov
----------------------------------------------------------
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/b1shen/Videos/test.mov': Metadata: major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf56.40.101 Duration: 00:01:00.02, start: 0.000000, bitrate: 680 kb/s 
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 4:3 DAR 16:9], 557 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)

    Metadata: handler_name    : DataHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 115 kb/s, 44100 tbn, 44100 tbc ( default)
    Metadata: handler_name    : DataHandler 
    分析結果: 與mp4格式的結果一致

test.flv
----------------------------------------------------------
Input #0, flv, from '/home/b1shen/Videos/test.flv': Metadata: major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    encoder         : Lavf56.40.101 Duration: 00:01:00.02, start: 0.000000, bitrate: 686 kb/s 
Stream #0:0: Video: h264 (High), yuv420p(progressive), 640x480 [SAR 4:3 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc 
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 1k tbn, 44100 tbc 
    分析結果: 
    video: tbn: 1k
    audio: tbn: 1k
    audio與video的封裝層的timebase一致,均爲1k
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章