How to get h264 video info?
Asked Answered
W

4

35

How can I get specific h264 video information from video file? I need to know profile (Baseline/Main/High) and is there B-Frames in movie?

Wheeling answered 21/1, 2012 at 16:28 Comment(5)
Just getting the information in general? Sounds off-topic for this site. If you're trying to get it in code, tell us more about the code. Language, environment, etc.Dosh
What is video file? There are various container format, capable or not of storing H.264 video.Coolant
I'm looking for any possible way to determine this things, any library, any command-line application. In my work I use C# and ffmpeg app, but it can't give me special codec information.Wheeling
@RomanR. It will be perfect, if solution works with all possible containers.Wheeling
for a specific attributes, if you already know variable names for them, to process in a batch for example, it's better to use show_entries with ffprobe and not show_format or show_streams. I just answered similar question hereKuchen
W
56

I've found out that the best way for this is using FFprobe with -show_streams parameter. It shows both h.264 profile and B-frames usage for video streams of the movie.

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]
Wheeling answered 31/12, 2012 at 10:22 Comment(2)
With which tool I can get some information like GOP size?! Value for CRF and etc?!Boredom
how do u select specific streams only?Proconsulate
T
15

Does mediainfo provide the output you need? http://mediainfo.sourceforge.net/en

(if you're on a Mac, you can install easily with 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                   : [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
Toponym answered 21/1, 2012 at 16:38 Comment(2)
+1 worked with ubuntu 12.10 $ sudo apt-get install mediainfo; Justification
mediainfo inspects the 264 format settings (e.g. CABAC) while ffprobe does notBornie
P
9

ffprobe, as of version 1.0.7 provides a nicely formated JSON output with the -print_format json command switch.

You can use it like this:

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

Which produces the follwing output:

{
    "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"
        }
    }
}
Prance answered 28/5, 2013 at 22:52 Comment(1)
@ρss I have updated the answer with the proper content.Prance
N
3

Use G-Spot to detect the information.

Get it here

Nudnik answered 21/1, 2012 at 16:36 Comment(1)
But it doesn't show any number for GOP size or B Frame!?Boredom

© 2022 - 2024 — McMap. All rights reserved.