如何获取 h264 视频信息?

Posted

技术标签:

【中文标题】如何获取 h264 视频信息?【英文标题】:How to get h264 video info? 【发布时间】:2012-02-15 19:08:34 【问题描述】:

如何从视频文件中获取特定的 h264 视频信息?我需要知道配置文件(基线/主要/高)以及电影中是否有 B 帧?

【问题讨论】:

只是获取一般信息?这个网站听起来离题了。如果您想在代码中获取它,请告诉我们更多关于代码的信息。语言、环境等 什么是视频文件?有多种容器格式,可以或不可以存储 H.264 视频。 我正在寻找任何可能的方法来确定这些东西,任何库,任何命令行应用程序。在我的工作中,我使用 C# 和 ffmpeg 应用程序,但它不能给我特殊的编解码器信息。 @RomanR。如果解决方案适用于所有可能的容器,那将是完美的。 对于 specific 属性,如果您已经知道它们的变量名称,例如批量处理,最好使用 show_entries ffprobe 而不是 show_format 或 show_streams。我刚刚回复了similar question here 【参考方案1】:

ffprobe,从 1.0.7 版开始,通过 -print_format json 命令开关提供格式良好的 JSON 输出。

你可以这样使用它:

ffprobe -v quiet -print_format json -show_format Ramp\ -\ Apathy.mp3

产生以下输出:


    "format": 
        "filename": "Ramp - Apathy.mp3",
        "nb_streams": 2,
        "format_name": "mp3",
        "format_long_name": "MP2/3 (MPEG audio layer 2/3)",
        "start_time": "0.000000",
        "duration": "203.638856",
        "size": "4072777",
        "bit_rate": "159999",
        "tags": 
            "title": "Apathy",
            "artist": "Ramp",
            "album": "Evolution Devolution Revolution",
            "date": "1999",
            "genre": "Metal"
        
    

【讨论】:

@ρss 我已经用正确的内容更新了答案。【参考方案2】:

我发现最好的方法是使用 FFprobe 和 -show_streams 参数。它显示了电影视频流的 h.264 配置文件和 B 帧使用情况。

ffprobe -show_streams -i "file.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_time_base=1001/48000
codec_tag_string=avc1
codec_tag=0x31637661
width=1920
height=1080
has_b_frames=0
sample_aspect_ratio=0:1
display_aspect_ratio=0:1
pix_fmt=yuv420p
level=40
timecode=N/A
is_avc=1
nal_length_size=4
id=N/A
r_frame_rate=24000/1001
avg_frame_rate=24000/1001
time_base=1/48000
start_time=0.000000
duration=252.168583
bit_rate=5617233
nb_frames=6046
nb_read_frames=N/A
nb_read_packets=N/A
TAG:creation_time=1970-01-01 00:00:00
TAG:language=und
TAG:handler_name=VideoHandler
[/STREAM]

【讨论】:

用什么工具我可以得到一些信息,比如 GOP 大小?! CRF 等的价值?! 如何只选择特定的流?【参考方案3】:

mediainfo 是否提供您需要的输出? http://mediainfo.sourceforge.net/en

(如果您使用的是 Mac,则可以使用 brew 轻松安装。> brew install media-info)

$ mediainfo Dream.House.sample.mkv 
General
Unique ID                        : 247222296143464620093895254679791638636 (0xB9FD4845398D136BB4A1628DB750986C)
Complete name                    : Dream.House.sample.mkv
Format                           : Matroska
Format version                   : Version 2
File size                        : 126 MiB
Duration                         : 1mn 56s
Overall bit rate                 : 9 042 Kbps
Encoded date                     : UTC 2011-12-15 03:44:07
Writing application              : mkvmerge v3.0.0 ('Hang up your Hang-Ups') built on Dec 12 2009 15:20:35
Writing library                  : libebml v0.7.9 + libmatroska v0.8.1

Video
ID                               : 1
Format                           : AVC
Format/Info                      : Advanced Video Codec
Format profile                   : High@L4.1
Format settings, CABAC           : Yes
Format settings, ReFrames        : 4 frames
Codec ID                         : V_MPEG4/ISO/AVC
Duration                         : 1mn 56s
Bit rate                         : 5 843 Kbps
Width                            : 1 280 pixels
Height                           : 544 pixels
Display aspect ratio             : 2.40:1
Frame rate                       : 23.976 fps
Color space                      : YUV
Chroma subsampling               : 4:2:0
Bit depth                        : 8 bits
Scan type                        : Progressive
Bits/(Pixel*Frame)               : 0.350
Stream size                      : 81.5 MiB (65%)
Language                         : English

Audio #1
ID                               : 2
Format                           : DTS
Format/Info                      : Digital Theater Systems
Codec ID                         : A_DTS
Duration                         : 1mn 56s
Bit rate mode                    : Constant
Bit rate                         : 1 510 Kbps
Channel(s)                       : 6 channels
Channel positions                : Front: L C R, Side: L R, LFE
Sampling rate                    : 48.0 KHz
Bit depth                        : 24 bits
Compression mode                 : Lossy
Delay relative to video          : 67ms
Stream size                      : 21.1 MiB (17%)
Language                         : Russian

Audio #2
ID                               : 3
Format                           : DTS
Format/Info                      : Digital Theater Systems
Codec ID                         : A_DTS
Duration                         : 1mn 56s
Bit rate mode                    : Constant
Bit rate                         : 1 510 Kbps
Channel(s)                       : 6 channels
Channel positions                : Front: L C R, Side: L R, LFE
Sampling rate                    : 48.0 KHz
Bit depth                        : 24 bits
Compression mode                 : Lossy
Delay relative to video          : 67ms
Stream size                      : 21.1 MiB (17%)
Language                         : English

【讨论】:

+1 使用 ubuntu 12.10 $ sudo apt-get install mediainfo; mediainfo 检查 264 格式设置(例如 CABAC),而 ffprobe 不检查【参考方案4】:

使用G-Spot检测信息。

得到它here

【讨论】:

但它没有显示 GOP 大小或 B 帧的任何数字!?

以上是关于如何获取 h264 视频信息?的主要内容,如果未能解决你的问题,请参考以下文章

视频知识点(20)- H264码流如何在SPS中获取宽高信息?

H264视频文件如何打开

如何正确使用带有 YUV_420_888 和 MediaCodec 的 ImageReader 将视频编码为 h264 格式?

如何查看视频文件是不是是mpeg4的,还是h264的?

如何分辨h264和h265

如何从 YouTube 视频中获取比特率信息?