2012-01-21 55 views
26

如何从视频文件获取特定的h264视频信息?我需要知道配置文件(Baseline/Main/High),电影中是否有B帧?如何获得h264视频信息?

+1

只需获取一般信息?听起来这个网站的主题。如果您试图使用代码获取它,请告诉我们更多关于代码的信息。语言,环境等 – David

+0

什么是视频文件?有各种容器格式,可以存储或不存储H.264视频。 –

+0

我正在寻找任何可能的方式来确定这个东西,任何库,任何命令行应用程序。在我的工作中,我使用C#和ffmpeg应用程序,但它不能给我特殊的编解码器信息。 – Zelenov

回答

35

我发现,这样做的最佳方法是使用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] 
+1

在最新的Ubuntu上:'avprobe -show_streams file.mp4' – Pitel

+3

使用哪个工具我可以得到一些信息,比如GOP大小? CRF等的价值? –

3

使用G-Spot来检测信息。

得到它here

+0

但它没有显示任何编号为GOP大小或B框架!? –

10

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

(如果你使用的是Mac,你可以用冲泡轻松安装。>酿造安装媒体信息)

$ 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     : [email protected] 
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 
+0

+1与ubuntu 12.10一起工作'$ sudo apt-get install mediainfo; ' – YumYumYum

+0

mediainfo检查264格式设置(例如CABAC)而ffprobe不 – Harvey

3

ffprobe,作为1.0.7版本提供与-print_format JSON命令开关一个很好的格式化JSON输出。

您可以使用它像这样:

ffprobe -v安静-print_format JSON -show_format斜坡\ - \ Apathy.mp3

它产生follwing输出:

{ 
    "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" 
     } 
    } 
} 
+1

@ρss我用适当的内容更新了答案。 –