ffprobe 简介

ffprobe 简介

ffprobe可以从媒体流收集媒体信息,并打印出开发人员可以读的格式,也可以把ffprobe理解为流媒体的分析工具;使用ffprobe可以查看流媒体中包含的容器,以及容器中包含的流媒体的格式和类型。

更为详细的介绍可以参考 https://ffmpeg.org/ffprobe.html

命令使用格式

    ffprobe [选项] [‘输入文件’]

常用命令选项介绍

以下命令主要用于显示信息:

-hide_banner    禁止默认会显示的版权信息、编译选项以及库版本信息等

-formats        显示ffmpeg库支持所有有效的媒体格式
-L              显示 license

-h, -?, -help, --help [arg]  打印帮助信息;可以指定一个参数 arg ,如果不指定,只打印基本选项

可选的 arg 选项:
        long  除基本选项外,还将打印高级选项
        full  打印一个完整的选项列表,包含 encoders, decoders, demuxers, muxers, filters 等的共享以及私有选项
        decoder=decoder_name’ 打印名称为 “decoder_name” 的解码器的详细信息
        encoder=encoder_name’ 打印名称为 “encoder_name” 的编码器的详细信息
        demuxer=demuxer_name’ 打印名称为 “demuxer_name” 的 demuxer 的详细信息
        muxer=muxer_name’ 打印名称为 “muxer_name” 的 muxer 的详细信息
        filter=filter_name’ 打印名称为 “filter_name” 的过滤器的详细信息
        
-version        显示版本信息
-formats        显示有效的格式
-codecs         显示 libavcodec 已知的所有编解码器
-decoders       显示有效的解码器
-encoders       显示有效的编码器
-bsfs           显示有效的比特流过滤器
-protocols      显示有效的协议        
-filters        显示 libavfilter 有效的过滤器
-pix_fmts       显示有效的像素格式
-sample_fmts    显示有效的采样格式
-layouts        显示通道名称以及标准通道布局
-colors         显示认可的颜色名称   
eg:查看FFmpeg支持的编解码格式

    ffprobe -hide_banner -formats
eg:查看FFmpeg支持的网络协议

    ffprobe -hide_banner -protocols
eg:查看FFmpeg支持的像素格式

    ffprobe -hide_banner -pix_fmts

查看详细信息

    ‘-f format’    强制使用的格式
    ‘-unit’        显示值的单位
    ‘-prefix’      显示的值使用标准国际单位制词头
    ‘-byte_binary_prefix’ 对字节值强制使用二进制前缀
    ‘-sexagesimal’ 时间值使用六十进位的格式 HH:MM:SS.MICROSECONDS
    ‘-pretty’      美化显示值的格式。它相当于 "-unit -prefix -byte_binary_prefix -sexagesimal"
    ‘-of, -print_format writer_name[=writer_options]’ 
                  设置输出打印格式。writer_name 指定打印程序 (writer) 的名称,writer_options 
                  指定传递给 writer 的选项。例如:将输出打印为 JSON 格式:-print_format json 
    ‘-select_streams stream_specifier’ 
                  只选择 stream_specifier 指定的流。该选项只影响那些与流相关的选项
                  (例如:show_streams, show_packets, 等)。
                  举例:只显示音频流,使用命令:
                    ffprobe -show_streams -select_streams a INPUT
    ‘-show_data’ 显示有效载荷数据,以十六进制和ASCII转储。与 ‘-show_packets’ 结合使用,它将 
                  dump 包数据;与 ‘-show_streams’ 结合使用,它将 dump codec 附加数据。
    ‘-show_error’    显示探测输入文件时的错误信息
    ‘-show_format’   显示输入多媒体流的容器格式信息
    ‘-show_packets’  显示输入多媒体流中每一个包的信息
    ‘-show_frames’   显示输入多媒体流中的每一帧以及字幕的信息
    ‘-show_streams’  显示输入多媒体流中每一个流的信息
    ‘-show_programs’ 显示输入多媒体流中程序以及它们的流的信息
    ‘-show_chapters’ 显示格式中存储的章节信息
    ‘-count_frames’  计算每一个流中的帧数,在相应的段中进行显示
    ‘-count_packets’ 计算每一个流中的包数,在相应的段中进行显示
    ‘-show_program_version’   显示程序版本及配置相关信息
    ‘-show_library_versions’  显示库版本相关信息
    ‘-show_versions’          显示程序和库版本相关信息。相当于同时设置‘-show_program_version’ 和 
                              ‘-show_library_versions’
    ‘-i input_file’           指定输入文件
    显示输入多媒体流中的每一帧以及字幕的信息
    
    ffprobe -show_frames /Users/hnxf/Desktop/array.mp4
    
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/hnxf/Desktop/array.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 1
        compatible_brands: isom
        creation_time   : 2015-12-03T06:13:13.000000Z
      Duration: 00:05:01.89, start: 0.000000, bitrate: 1718 kb/s
      Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1651 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
        Metadata:
          creation_time   : 2015-12-02T10:41:00.000000Z
          handler_name    : VideoByEZMediaEditor
          vendor_id       : [0][0][0][0]
      Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 62 kb/s (default)
        Metadata:
          creation_time   : 2015-12-02T10:41:00.000000Z
          handler_name    : Audio1-und
          vendor_id       : [0][0][0][0]
    [FRAME]
    media_type=video                帧的类型(视频、音频、字幕等)
    stream_index=0                  帧所在的索引区域
    key_frame=1                     是否是关键帧
    pkt_pts=2000                    Frame包的pts
    pkt_pts_time=0.066667           Frame包的pts的时间显示    
    pkt_dts=2000                    Frame包的dts
    pkt_dts_time=0.066667           Frame包的dts的时间显示
    best_effort_timestamp=2000      
    best_effort_timestamp_time=0.066667
    pkt_duration=1000               Frame包的时长
    pkt_duration_time=0.033333      Frame包的时长时间显示
    pkt_pos=148540                  Frame包所在文件的偏移位置
    pkt_size=1147                   
    width=1920
    height=1080
    pix_fmt=yuv420p
    sample_aspect_ratio=1:1
    pict_type=I                     帧类型
    coded_picture_number=0
    display_picture_number=0
    interlaced_frame=0
    top_field_first=0
    repeat_pict=0
    color_range=unknown
    color_space=unknown
    color_primaries=unknown
    color_transfer=unknown
    chroma_location=left
    [SIDE_DATA]
    side_data_type=H.26[45] User Data Unregistered SEI message
    [/SIDE_DATA]
    [/FRAME]
    以 JSON 格式显示每个流的信息
        ffprobe -print_format json -show_streams /Users/hnxf/Desktop/array.mp4
    显示输入多媒体流中每一个包的信息
        ffprobe -show_packets /Users/hnxf/Desktop/array.mp4
        
        [PACKET]
        codec_type=video        多媒体类型,例如视频包,音频包等
        stream_index=0          多媒体的stream索引;
        pts=12000               多媒体的显示时间值
        pts_time=0.400000       根据不同格式计算过后的多媒体的显示时间
        dts=12000               多媒体解码时间值
        dts_time=0.400000       根据不同格式计算过后的多媒体解码时间
        duration=1000           多媒体包占用的时间值
        duration_time=0.033333  根据不同格式计算过后的多媒体包占用的时间值
        size=703
        pos=157781              多媒体包所在的文件偏移位置
        flags=__                多媒体包标记,关键包与非关键包的标记
        [/PACKET]
    显示输入多媒体流中每一个流的信息
        ffprobe -show_streams /Users/hnxf/Desktop/array.mp4

            [STREAM]
            index=0
            codec_name=h264
            codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
            profile=High
            codec_type=video
            codec_tag_string=avc1
            codec_tag=0x31637661
            width=1920
            height=1080
            coded_width=1920
            coded_height=1080
            closed_captions=0
            has_b_frames=2
            sample_aspect_ratio=1:1
            display_aspect_ratio=16:9
            pix_fmt=yuv420p
            level=40
            color_range=unknown
            color_space=unknown
            color_transfer=unknown
            color_primaries=unknown
            chroma_location=left
            field_order=unknown
            refs=1
            is_avc=true
            nal_length_size=4
            id=N/A
            r_frame_rate=30/1
            avg_frame_rate=30/1
            time_base=1/30000
            start_pts=2000
            start_time=0.066667
            duration_ts=9056000
            duration=301.866667
            bit_rate=1651784
            max_bit_rate=N/A
            bits_per_raw_sample=8
            nb_frames=9056
            nb_read_frames=N/A
            nb_read_packets=N/A
            DISPOSITION:default=1
            DISPOSITION:dub=0
            DISPOSITION:original=0
            DISPOSITION:comment=0
            DISPOSITION:lyrics=0
            DISPOSITION:karaoke=0
            DISPOSITION:forced=0
            DISPOSITION:hearing_impaired=0
            DISPOSITION:visual_impaired=0
            DISPOSITION:clean_effects=0
            DISPOSITION:attached_pic=0
            DISPOSITION:timed_thumbnails=0
            TAG:creation_time=2015-12-02T10:41:00.000000Z
            TAG:language=und
            TAG:handler_name=VideoByEZMediaEditor
            TAG:vendor_id=[0][0][0][0]
            [/STREAM]
统计视频I、B、P帧
    ffprobe -v quiet -show_frames transcoded123.mp4 | grep "pict_type=B" | wc -l
    
如果要查看I帧和P帧,修改pict_type=I或者P即可,如果需要看关键帧,grep “key_frame=1”
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容