我有一个mp4文件,需要它的配置文件级别。FFmpeg说,它有基线配置文件,这是我需要的,但我也需要level。
以下是我从FFmpeg获得的内容:
ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers
built on Jul 20 2011 13:32:19 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libavdevice 53. 1. 1 / 53. 1. 1
libavfilter 2. 23. 0 / 2. 23. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test-show.mp4':
Metadata:
major_brand : f4v
minor_version : 0
compatible_brands: isommp42m4v
creation_time : 2012-03-21 16:00:00
Duration: 00:56:07.40, start: 0.000000, bitrate: 2004 kb/s
Stream #0.0(eng): Video: h264 (Baseline), yuv420p, 854x480 [PAR 1:1 DAR 427:240], 1904 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2012-03-21 16:00:00
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 96 kb/s
Metadata:
creation_time : 2012-03-21 16:00:00
At least one output file must be specified
除了-i
之外,我还可以使用其他选项来获取级别信息吗?
发布于 2012-05-10 14:16:17
试试ffprobe -show_streams
。
ffprobe
与FFmpeg捆绑在一起,提供了大量关于视频文件的信息,包括级别信息,例如:
$ ffprobe -loglevel error -show_streams Test.mp4
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
codec_type=video
codec_time_base=1001/48000
codec_tag_string=avc1
codec_tag=0x31637661
width=704
height=400
has_b_frames=0
sample_aspect_ratio=N/A
display_aspect_ratio=N/A
pix_fmt=yuv420p
level=51 <== level!
timecode=N/A
is_avc=1
nal_length_size=4
id=N/A
r_frame_rate=24000/1001
avg_frame_rate=1384898760/57761819
time_base=1/44100
start_time=0.000000
duration=6548.959070
bit_rate=701946
nb_frames=157018
nb_read_frames=N/A
nb_read_packets=N/A
TAG:creation_time=2006-08-17 18:14:49
TAG:language=eng
TAG:handler_name=
[/STREAM]
发布于 2016-03-31 03:13:11
带有show_entries命令的ffprobe应该更快,并且它有更多的选项来仅显示相关数据和仅过滤视频流。
仅过滤视频(同时添加:0可仅过滤第一个视频流)
ffprobe -v error -select_streams v:0 -show_entries stream=level -of default=noprint_wrappers=1 <filepath>
例如输出:
level=50
要仅输出值(添加:nokey=1):
ffprobe -v error -select_streams v:0 -show_entries stream=level -of default=noprint_wrappers=1:nokey=1 <filepath>
例如输出:
50
要同时输出轮廓和标高,请执行以下操作:
ffprobe -v error -select_streams v:0 -show_entries stream=profile,level -of default=noprint_wrappers=1 <filepath>
例如输出:
profile=High
level=50
要以json格式输出:
ffprobe -v error -select_streams v:0 -show_entries stream=profile,level -of json <filepath>
输出,例如
:
{
"programs": [
],
"streams": [
{
"profile": "High",
"level": 41
}
]
}
在MS批处理文件中(作为伪函数):
调用:ffprobeGetFormatProfile ffprobe.exe file.mp4 txtFormat
:ffprobeGetFormatProfile <exe> <infile> <outStr>
echo.
echo FILE: %2
set tmpProfile=
set tmpLevel=
for /f "usebackq delims== tokens=1-2" %%a in (`%~s1 -v error -select_streams v:0 -show_entries stream^=profile^,level -of default^=noprint_wrappers^=1 %2`) do (
if /I %%a == profile set tmpProfile=%%b
if /I %%a == level set tmpLevel=%%b
)
if not defined tmpLevel set tmpLevel=??
echo on
set %3=%tmpProfile%@%tmpLevel:~0,1%.%tmpLevel:~1%
@echo off
exit /b %errorlevel%
输出例如
(在作为第三个参数传递的变量txtFormat中):
高@4.1
你可以从ffmpeg.org - Tips得到更多的想法
发布于 2012-05-10 17:47:00
对于这种输出,您可以使用带有选项-info的MP4Box:
Track # 2 Info - TrackID 2 - TimeScale 25000 - Duration 01:29:42.160
Media Info: Language "Undetermined" - Type "vide:avc1" - 134554 samples
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 1280 x 720 - **Profile High @ Level 3.1**
NAL Unit length bits: 32
Pixel Aspect Ratio 1:1 - Indicated track size 1280 x 720
Synchronized on stream 1
https://stackoverflow.com/questions/10242630
复制相似问题