使用ffprobe進(jìn)行音視頻流的分析(一)

音視頻流的結(jié)構(gòu)的分析對(duì)進(jìn)行音視頻的處理或者對(duì)直播過(guò)程中的直播流的卡頓等情況的分析處理起到了至關(guān)重要的作用。目前剛剛開(kāi)始接觸這塊兒搜变,還是個(gè)小白,這里根據(jù)平時(shí)使用到的一些ffprobe的命令進(jìn)行一些總結(jié),以作備忘:

ffprobe常用的參數(shù)比較多内边,如果想知道具體的可以使用ffprobe --help來(lái)查看一些詳細(xì)的命令。
我目前涉及到的主要是查看視頻流的時(shí)間戳待锈、編碼格式漠其,主要用得到的命令如下:

  1. ** 使用 -show_frames 參數(shù)查看視頻中的幀信息:**
    {
    "media_type": "video",
    "stream_index": 1,
    "key_frame": 0,
    "pkt_pts": 27275,
    "pkt_pts_time": "45.458333",
    "pkt_dts": 27274,
    "pkt_dts_time": "45.456667",
    "best_effort_timestamp": 27275,
    "best_effort_timestamp_time": "45.458333",
    "pkt_duration": 20,
    "pkt_duration_time": "0.033333",
    "pkt_pos": "4519791",
    "pkt_size": "970",
    "width": 568,
    "height": 320,
    "pix_fmt": "yuv420p",
    "pict_type": "B",
    "coded_picture_number": 1364,
    "display_picture_number": 0,
    "interlaced_frame": 0,
    "top_field_first": 0,
    "repeat_pict": 0
    },
    -show_frames打印出來(lái)的信息都是幀相關(guān)的,包括視頻幀和音頻幀竿音,其中主要的數(shù)據(jù)及其含義如下:

key_frame:是否是關(guān)鍵幀
pkt_pts:幀的pts數(shù)值
pkt_pts_time:通過(guò)time_base計(jì)算出來(lái)的顯示時(shí)間
pkt_dts:幀的dts數(shù)值
pkt_dts_time:通過(guò)time_base計(jì)算出來(lái)的dts時(shí)間
pict_type:幀類型(I和屎、B、P)

  1. 使用 -show_streams 參數(shù)查看視頻中的流信息:
    "index": 1,
    "codec_name": "h264",
    "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
    "profile": "Main",
    "codec_type": "video",
    "codec_time_base": "464/27825",
    "codec_tag_string": "avc1",
    "codec_tag": "0x31637661",
    "width": 568,
    "height": 320,
    "coded_width": 568,
    "coded_height": 320,
    "has_b_frames": 0,
    "sample_aspect_ratio": "0:1",
    "display_aspect_ratio": "0:1",
    "pix_fmt": "yuv420p",
    "level": 30,
    "color_range": "tv",
    "color_space": "bt709",
    "color_transfer": "bt709",
    "color_primaries": "bt709",
    "chroma_location": "left",
    "refs": 1,
    "is_avc": "true",
    "nal_length_size": "4",
    "r_frame_rate": "30000/1001",
    "avg_frame_rate": "27825/928",
    "time_base": "1/600",
    "start_pts": 0,
    "start_time": "0.000000",
    "duration_ts": 29696,
    "duration": "49.493333",
    "bit_rate": "705282",
    "bits_per_raw_sample": "8",
    "nb_frames": "1484",
    "disposition": {
    "default": 1,
    "dub": 0,
    "original": 0,
    "comment": 0,
    "lyrics": 0,
    "karaoke": 0,
    "forced": 0,
    "hearing_impaired": 0,
    "visual_impaired": 0,
    "clean_effects": 0,
    "attached_pic": 0,
    "timed_thumbnails": 0
    },
    "tags": {
    "creation_time": "2016-12-22T03:35:39.000000Z",
    "language": "und",
    "handler_name": "Core Media Video"
    }
    以上便是打印出來(lái)的信息春瞬,主要的就是編碼格式柴信、原始數(shù)據(jù)格式、time_base和碼率等信息是使用較多的宽气。
  2. ** 使用 -show_packets 參數(shù)查看包信息:**
    {
    "codec_type": "video",
    "stream_index": 1,
    "pts": 28676,
    "pts_time": "47.793333",
    "dts": 28675,
    "dts_time": "47.791667",
    "duration": 20,
    "duration_time": "0.033333",
    "size": "1199",
    "pos": "4737832",
    "flags": "__"
    },
    同上随常,主要輸出的都是關(guān)于流類型和pts、dts等信息萄涯。

上面的參數(shù)可以獲得音視頻相關(guān)的各種參數(shù)绪氛,但是顯示的可能比較亂,所以可以使用下面的參數(shù)進(jìn)行輸出的格式化:

-of 或者 -print_format + compact/csv/flat/ini/json/xml

同時(shí)窃判,可以通過(guò)使用如下參數(shù)進(jìn)行視頻流或者音頻流的選擇:

-select_streams + a(音頻) / v(視頻)

利用好這個(gè)工具钞楼,可以在進(jìn)行音視頻編解碼的時(shí)候?qū)r(shí)間戳等信息進(jìn)行更好的校對(duì);同時(shí)在進(jìn)行音視頻流卡頓的分析的時(shí)候也很有用處袄琳,比如可以通過(guò)觀察pts等信息查看是否有時(shí)間戳回退等問(wèn)題的存在询件。

后續(xù)如果有新的收獲還會(huì)繼續(xù)更新。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唆樊,一起剝皮案震驚了整個(gè)濱河市宛琅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逗旁,老刑警劉巖嘿辟,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異片效,居然都是意外死亡红伦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門淀衣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)昙读,“玉大人,你說(shuō)我怎么就攤上這事膨桥÷耄” “怎么了唠叛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)沮稚。 經(jīng)常有香客問(wèn)我艺沼,道長(zhǎng),這世上最難降的妖魔是什么蕴掏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任障般,我火速辦了婚禮,結(jié)果婚禮上囚似,老公的妹妹穿的比我還像新娘剩拢。我一直安慰自己线得,他們只是感情好饶唤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著贯钩,像睡著了一般募狂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上角雷,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天祸穷,我揣著相機(jī)與錄音,去河邊找鬼勺三。 笑死雷滚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吗坚。 我是一名探鬼主播祈远,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼商源!你這毒婦竟也來(lái)了车份?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牡彻,失蹤者是張志新(化名)和其女友劉穎扫沼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體庄吼,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缎除,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了总寻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片器罐。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖废菱,靈堂內(nèi)的尸體忽然破棺而出技矮,到底是詐尸還是另有隱情抖誉,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布衰倦,位于F島的核電站袒炉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏樊零。R本人自食惡果不足惜我磁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驻襟。 院中可真熱鬧夺艰,春花似錦、人聲如沸沉衣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豌习。三九已至存谎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肥隆,已是汗流浹背既荚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栋艳,地道東北人恰聘。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吸占,于是被迫代替她去往敵國(guó)和親晴叨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容