翻译、编辑:Alex

技术审校:刘歧

本文来自OTTVerse,作者为Krishna Rao Vijayanagar。

Easy-Tech #038#

在我的视频处理工具箱里,ffprobe有着非常重要的地位!在FFmpeg库中,ffprobe堪称视频信息提取或视频检测的“瑞士军刀”。下面是FFmpeg文档对ffprobe的简单描述:

ffprobe从多媒体流中收集信息并将它们以人类和机器可读的形式输出。

你可以使用ffprobe输出详细且便捷的视频信息(如pts、dts、帧率和像素格式、图像类型等等)。你也可以使用命令行提取高级信息(编解码器类型、持续时间和视频尺寸)或者数据包的相关信息。

这些优势使ffprobe成为每个视频工程师工具箱里不可或缺的工具。在本文中,我们将学习如何使用ffprobe分析视频和提取视频信息。

在哪里获取ffprobe?

=====================================

你可以在OTTVerse的FFmpeg bulid页面下载ffprobe:

https://ottverse.com/ffmpeg-builds/。下载适用于Windows 64位的FFmpeg静态程序的压缩包,解压缩文件后,你会发现三个可执行文件:ffmpeg、ffprobe和ffplay。你只要打开命令提示符,就可以使用ffprobe。

如果你使用的是Mac,可以通过Homebrew安装ffprobe(和FFmpeg一起安装)。

brew install ffmpeg

而在Linux上,你可以使用操作系统的包管理工具(**审校者注:**Redhat下面是dnf或者yum,Ubuntu下面是apt)安装FFmpeg,同时也会安装ffprobe。比如,在Ubuntu上:

sudo apt-get install ffmpeg

更多安装指南,你可以参考这篇文章:https://ottverse.com/install-ffmpeg-windows-macos-ubuntu/

如何使用ffprobe?

====================================

ffprobe的使用非常简单。你只需在命令行上调用它,并指定你要分析的视频。如下所示:

$ ffprobe simpsons_1080p2398_clip.mp4Output
-------ffprobe version N-100618-gdb738f51de-gca21cb1e36+2 Copyright (c) 2007-2021 the FFmpeg developersbuilt with gcc 10.2.0 (Rev6, Built by MSYS2 project)configuration:  --cc='ccache gcc' --cxx='ccache g++' --disable-autodetect --enable-amf --enable-bzlib --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --enable-sdl2 --enable-ffnvcodec --enable-nvdec --enable-cuda-llvm --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-libaom --disable-debug --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libopenmpt --enable-version3 --enable-librav1e --enable-libsrt --enable-libgsm --enable-libvmaf --enable-libsvtav1 --enable-librtmp --enable-mbedtls --extra-cflags=-DLIBTWOLAME_STATIC --extra-libs=-lstdc++ --extra-cflags=-DLIBXML_STATIC --extra-libs=-liconv --disable-w32threadslibavutil      56. 63.100 / 56. 63.100libavcodec     58.116.100 / 58.116.100libavformat    58. 65.101 / 58. 65.101libavdevice    58. 11.103 / 58. 11.103libavfilter     7. 95.100 /  7. 95.100libswscale      5.  8.100 /  5.  8.100libswresample   3.  8.100 /  3.  8.100libpostproc    55.  8.100 / 55.  8.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'simpsons_1080p2398_clip.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41title           : The Simpsons Movie - Trailerartist          : 20th Century Foxdate            : 2007encoder         : Lavf58.56.100genre           : TrailerDuration: 00:00:19.99, start: 0.007007, bitrate: 4898 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x800, 5277 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)Metadata:handler_name    : GPAC ISO Video Handlervendor_id       : [0][0][0][0]Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)Metadata:handler_name    : GPAC ISO Audio Handlervendor_id       : [0][0][0][0]

从输出中可以看到,ffprobe提供了很多视频高级信息。它告诉你视频包含多少个流、视频流和音频流数量、编解码器细节、帧率和视频持续时间等。

记住,这些信息非常有用,在接下来的部分,我们将学习如何使用ffprobe深入并获取帧相关信息。

=======

如何隐藏ffprobe Banner?

如果你只想要ffprobe中的特定信息,那么输出所有FFmpeg相关信息(版本信息、build信息等)就很讨厌。幸运的是,有一个可以阻止ffprobe输出所有信息的选项——banner。你可以执行下面的操作:

ffprobe -hide_banner <options_follow_...>

这就是启用hide_banner所输出的结果。因为没有FFmpeg及其build选项信息,所以它更容易阅读。

$ ffprobe crowdruncrf35.mp4 -hide_banner
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'crowdruncrf35.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf58.59.100Duration: 00:00:10.00, start: 0.000000, bitrate: 4710 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 4704 kb/s, 50 fps, 50 tbr, 12800 tbn, 100 tbc (default)Metadata:handler_name    : VideoHandlervendor_id       : [0][0][0][0]

你想去掉更多信息吗?你想去除所有关于输入、元数据和持续时间的信息吗?

接着你可以使用 -v error 或者 -v panic,这将进一步减少输出在屏幕上的信息。如果我需要对信息进行后处理或者将信息写入脚本而不需要多余的文本时,我就会经常使用这个命令行。

$ ffprobe crowdruncrf35.mp4 -hide_banner -v panic

酷,现在让我们看下输出并了解我们获取输出的不同格式。

审校者注:

为了排查问题方便,banner信息和必要的调试信息输出是有必要的,或者当你需要带着问题去问别人的时候,为了节省不必要的因反复确认版本信息而造成浪费的时间,是一定要带上banner信息和详细的调试输出信息的。

ffprobe中的流说明符(Stream Specifier)

我们经常会遇到包含多个视频和音频流(比如多种语言)的视频文件。现在我们假设你希望“只”检查音轨,那么通过ffprobe如何才能做到?接下来,就让我们一起来学习!

$$ ffprobe -hide_banner -i simpsons_1080p2398_clip.mp4Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'simpsons_1080p2398_clip.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41title           : The Simpsons Movie - Trailerartist          : 20th Century Foxdate            : 2007encoder         : Lavf58.56.100genre           : TrailerDuration: 00:00:19.99, start: 0.007007, bitrate: 4898 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x800, 5277 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)Metadata:handler_name    : GPAC ISO Video Handlervendor_id       : [0][0][0][0]Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)Metadata:handler_name    : GPAC ISO Audio Handlervendor_id       : [0][0][0][0]

如果你查看本篇文章中我所使用的《辛普森一家》预告片的输出,你就会发现它有两个流:一个视频流(stream #0:0)和一个音频流(stream #0:1)

如果我们想只检查音频流,你需要给ffprobe一个流说明符,告诉它只提供音频流信息。你可以使用下面的-select_streams 说明符完成这一操作。通过提到a:0,我们告诉ffprobe 检查索引=1的音频流。

ffprobe -hide_banner -v panic -select_streams v:0 -show_entries stream=bit_rate

输出如下所示。如你所见,它只提供索引=1的音频流码率。

[STREAM]
bit_rate=5277205
[/STREAM]

隐藏wrapper[STREAM]和[/STREAM]?

如果你查看ffprobe的输出,会发现它将信息放在wrapper[STREAM]和[/STREAM]中提供给你。要去除这个wrapper,你需要使用下列命令行:

noprint_wrappers=1

现在,我们测试一下前一个命令行并看下输出:

$$ ffprobe -v error -hide_banner -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1 simpsons_1080p2398_clip.mp4bit_rate=5277205

如你所见,ffprobe只输出了视频的码率,没有wrapper!

如何使用ffprobe提取关于流、数据包、帧和容器格式的信息?

如你所知,ffprobe能够提供输入视频的每个流、数据包和帧的大量相关信息。为了获取这些信息,你必须执行下列命令:

1. 获取每个流的信息:-show_streams

2. 获取容器格式信息:-show_format

3. 获取每个数据包的信息:-show_packets

4. 获取帧的信息:-show_frames

| 使用ffprobe获取每个流的信息

让我们使用 -show_streams 说明符获取所有流的信息。

$$ ffprobe -v error -hide_banner -select_streams v:0 -show_streams simpsons_1080p2398_clip.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=800
coded_width=1920
coded_height=800
closed_captions=0
has_b_frames=1
sample_aspect_ratio=N/A
display_aspect_ratio=N/A
pix_fmt=yuv420p
level=41
color_range=unknown
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
field_order=unknown
timecode=N/A
refs=1
is_avc=true
nal_length_size=4
id=N/A
r_frame_rate=24000/1001
avg_frame_rate=24000/1001
time_base=1/24000
start_pts=48000
start_time=2.000000
duration_ts=433433
duration=18.059708
bit_rate=5277205
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=433
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:language=und
TAG:handler_name=GPAC ISO Video Handler
TAG:vendor_id=[0][0][0][0]
[/STREAM]

上面的输出包含了很多关于流的关键信息。你可以查看视频高度、宽度、帧率、码率、视频大小、编解码器、编解码器级别和配置文件、像素格式、B帧的呈现等。

我们再进一步,接下来获取每个数据包的信息怎么样?

| 使用ffprobe获取每个数据包的信息

使用下列命令,你可以获取视频中每个数据包的信息,即使用-show_packets。出于演示目的,我只展示了其中一个数据包。你可以看到,它包含了pts、dts、duration和size等的详细信息。

$$ ffprobe -v error -hide_banner -select_streams v:0 -show_packets simpsons_1080p2398_clip.mp4
[PACKET]
codec_type=video
stream_index=0
pts=72024
pts_time=3.001000
dts=72024
dts_time=3.001000
duration=1001
duration_time=0.041708
convergence_duration=N/A
convergence_duration_time=N/A
size=1094
pos=738626
flags=__
[/PACKET]

是不是很棒?现在我们再深入一步来获取帧的信息。

| 使用ffprobe获取每帧信息

现在,让我们使用-show_frames获取每一帧的信息。输出包含大量信息:时间戳、宽度、高度、像素格式、图像类型(I帧、P帧和B帧)、图像序号(显示顺序和解码顺序)、色彩空间、帧是否为隔行扫描、帧是顶场优先还是底场优先,是否为关键帧等。无数关于帧的信息,对吧?

$$ ffprobe -v error -hide_banner -select_streams v:0 -show_frames simpsons_1080p2398_clip.mp4
[FRAME]
media_type=video
stream_index=0
key_frame=0
pkt_pts=53005
pkt_pts_time=2.208542
pkt_dts=53005
pkt_dts_time=2.208542
best_effort_timestamp=53005
best_effort_timestamp_time=2.208542
pkt_duration=1001
pkt_duration_time=0.041708
pkt_pos=283117
pkt_size=33853
width=1920
height=800
pix_fmt=yuv420p
sample_aspect_ratio=N/A
pict_type=P
coded_picture_number=2
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
[/FRAME]

| 使用ffprobe获取容器格式信息

你也可以使用ffprobe命令行中的-show_format选项获取容器格式信息。你可以看到,它包含容器的所有信息、持续时间、视频大小、码率和容器附带的任何标签。

$$ ffprobe -v error -hide_banner -select_streams v:0 -show_format simpsons_1080p2398_clip.mp4
[FORMAT]
filename=simpsons_1080p2398_clip.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.007007
duration=19.993000
size=12242914
bit_rate=4898880
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:title=The Simpsons Movie - Trailer
TAG:artist=20th Century Fox
TAG:date=2007
TAG:encoder=Lavf58.56.100
TAG:genre=Trailer
[/FORMAT]

既然我们已经理解了使用ffprobe可获取的深度信息,让我们来看看如何漂亮地实现输出,然后很轻松地传递给后续操作(比如后处理或者压缩中使用等)。

输出格式:json、csv和xml

ffprobe拥有很多信息输出格式选项,你可以在默认格式(如我们在前例中看到的)、json、csv、xml、flat和ini输出格式中选择。

选择输出格式非常简单,在命令行中使用print_format 即可。下面是几个输出如何查找show_format说明符的示例。

| 来自ffprobe的json输出

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format json -select_streams v:0 -show_format simpsons_1080p2398_clip.mp4{"format": {"filename": "simpsons_1080p2398_clip.mp4","nb_streams": 2,"nb_programs": 0,"format_name": "mov,mp4,m4a,3gp,3g2,mj2","format_long_name": "QuickTime / MOV","start_time": "0.007007","duration": "19.993000","size": "12242914","bit_rate": "4898880","probe_score": 100,"tags": {"major_brand": "isom","minor_version": "512","compatible_brands": "isomiso2avc1mp41","title": "The Simpsons Movie - Trailer","artist": "20th Century Fox","date": "2007","encoder": "Lavf58.56.100","genre": "Trailer"}}
}

| 来自ffprobe的csv输出(也被称为“compact”)

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format csv -select_streams v:0 -show_format simpsons_1080p2398_clip.mp4format,simpsons_1080p2398_clip.mp4,2,0,"mov,mp4,m4a,3gp,3g2,mj2",QuickTime / MOV,0.007007,19.993000,12242914,4898880,100,isom,512,isomiso2avc1mp41,The Simpsons Movie - Trailer,20th Century Fox,2007,Lavf58.56.100,Trailer

| 来自ffprobe的xml输出

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format xml -select_streams v:0 -show_format simpsons_1080p2398_clip.mp4<?xml version="1.0" encoding="UTF-8"?>
<ffprobe><format filename="simpsons_1080p2398_clip.mp4" nb_streams="2" nb_programs="0" format_name="mov,mp4,m4a,3gp,3g2,mj2" format_long_name="QuickTime / MOV" start_time="0.007007" duration="19.993000" size="12242914" bit_rate="4898880" probe_score="100"><tag key="major_brand" value="isom"/><tag key="minor_version" value="512"/><tag key="compatible_brands" value="isomiso2avc1mp41"/><tag key="title" value="The Simpsons Movie - Trailer"/><tag key="artist" value="20th Century Fox"/><tag key="date" value="2007"/><tag key="encoder" value="Lavf58.56.100"/><tag key="genre" value="Trailer"/></format>
</ffprobe>

| 来自ffprobe的ini输出

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format ini -select_streams v:0 -show_format simpsons_1080p2398_clip.mp4
# ffprobe output
[format]
filename=simpsons_1080p2398_clip.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.007007
duration=19.993000
size=12242914
bit_rate=4898880
probe_score=100[format.tags]
major_brand=isom
minor_version=512
compatible_brands=isomiso2avc1mp41
title=The Simpsons Movie - Trailer
artist=20th Century Fox
date=2007
encoder=Lavf58.56.100
genre=Trailer

| 来自ffprobe的flat输出

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format flat -select_streams v:0 -show_format simpsons_1080p2398_clip.mp4
format.filename="simpsons_1080p2398_clip.mp4"
format.nb_streams=2
format.nb_programs=0
format.format_name="mov,mp4,m4a,3gp,3g2,mj2"
format.format_long_name="QuickTime / MOV"
format.start_time="0.007007"
format.duration="19.993000"
format.size="12242914"
format.bit_rate="4898880"
format.probe_score=100
format.tags.major_brand="isom"
format.tags.minor_version="512"
format.tags.compatible_brands="isomiso2avc1mp41"
format.tags.title="The Simpsons Movie - Trailer"
format.tags.artist="20th Century Fox"
format.tags.date="2007"
format.tags.encoder="Lavf58.56.100"
format.tags.genre="Trailer"

使用ffprobe说明符提取信息

在上文中,我们已经学习了格式、流、数据包和帧级别的说明符,还学习了如何以xml、csv、json、flat和ini格式实现ffprobe输出。

现在,如果你希望使用ffprobe只提取编解码器细节,或者帧的大小,或图像类型,该怎么做呢?

ffprobe的流说明符同样也支持你指定和提取你所需的信息而不是输出所有信息。要使用这些说明符,你需要先使用format、stream、packet、frame选项,然后使用 -show_entries 以及你想要提取的关键信息。

通过示例会更容易理解。下面让我们输出视频的高和宽。

视频的高度和宽度在流相关信息中,所以我们需要先在命令行中指定选项-show_entries。然后我们使用 stream=width, height 来告诉ffprobe只提供流信息中的高度和宽度细节。

同样,我们也可以使用packet、format、frame和stream,然后指定关键信息(逗号分隔),这样就能输出我们需要的信息。

接下来,让我们看一些实用的示例!

使用ffprobe提取流信息示例

在学习完以上的内容之后,现在让我们看一些使用ffprobe提取信息的示例。

1、使用ffprobe说明符提取视频高度和宽度

为了使用ffprobe提取视频高度和宽度,你需要使用高度和宽度说明符,然后ffprobe便会返回数据。下面是命令行:

# height and width using ffprobe
# output is printed in flat formatffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format flat -select_streams v:0 -show_entries stream=width,height simpsons_1080p2398_clip.mp4streams.stream.0.width=1920
streams.stream.0.height=800

2、显示所有数据包的PTS

为了提取视频中所有数据包的PTS(Picture TimeStamp,图像时间戳),你需要使用修饰符packet=pts_time ,如下所示:

审校者注:

AVPacket的packet里面有pts和pts_time,pts是一个长整型数数,我们直接看pts的时候需要自己根据timebase做一下换算,裸眼看pts信息难度会比较大,所以ffprobe也提供了一个pts_time,这个pts_time是pts与timebase做换算后的一个浮点数,展现形势也就比较直观了。而文中的PTS,还有一个解释是,presentation time stamp。

# PTS of all the packets ffprobe -v error -hide_banner -of default=noprint_wrappers=1 -select_streams v:0 -show_entries packet=pts_time simpsons_1080p2398_clip.mp4pts_time=2.000000
pts_time=2.041708
pts_time=2.208542
pts_time=2.083417
pts_time=2.125125
pts_time=2.166833
pts_time=2.375375
pts_time=2.250250
.
.

3、使用ffprobe查找视频持续时间并以xml格式输出

为了使用ffprobe提取视频持续时间,你需要使用修饰符stream=duration ,如下所示:

# print the duration of the video in XML formatffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format xml -select_streams v:0 -show_entries stream=duration simpsons_1080p2398_clip.mp4<?xml version="1.0" encoding="UTF-8"?>
<ffprobe><programs></programs><streams><stream duration="18.059708"/></streams>
</ffprobe>

4、 使用ffprobe输出图像类型

如果你想知道视频每一帧的图像类型,你需要获得帧相关信息。如果你查看了我们之前输出的帧相关信息,你会发现图像类型信息包含在pict_type 中。所以,让我们将它和修饰符frame 一起使用。

# Print the picture types of every frame in the flat formatffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format flat  -select_streams v:0 -show_entries frame=pict_type simpsons_1080p2398_clip.mp4frames.frame.0.pict_type="I"
frames.frame.1.pict_type="P"
frames.frame.2.pict_type="B"
frames.frame.3.pict_type="B"
frames.frame.4.pict_type="B"
frames.frame.5.pict_type="P"
frames.frame.6.pict_type="B"
frames.frame.7.pict_type="B"
frames.frame.8.pict_type="B"
frames.frame.9.pict_type="P"
frames.frame.10.pict_type="B"
frames.frame.11.pict_type="B"
frames.frame.12.pict_type="P"
frames.frame.13.pict_type="P"
frames.frame.14.pict_type="P"
frames.frame.15.pict_type="P"
frames.frame.16.pict_type="P"
frames.frame.17.pict_type="P"
frames.frame.18.pict_type="P"
frames.frame.19.pict_type="B"
frames.frame.20.pict_type="B"

5、使用ffprobe获取视频码率信息

视频码率输出在流相关信息中。所以,我们需要在命令行中指定 stream=bit_rate 来获取视频码率。

# Extract the bitrate of a video using ffprobe ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format flat  -select_streams v:0 -show_entries stream=bit_rate simpsons_1080p2398_clip.mp4streams.stream.0.bit_rate="5277205"

6、使用ffprobe输出编解码器信息

在哪里获取编解码器细节?在流相关信息中,对吧?所以让我们使用stream说明符获取所有信息。

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format flat  -select_streams v:0 -show_entries stream=codec_name,codec_long_name,profile,codec_tag_string simpsons_1080p2398_clip.mp4streams.stream.0.codec_name="h264"
streams.stream.0.codec_long_name="H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"
streams.stream.0.profile="High"
streams.stream.0.codec_tag_string="avc1"

7、使用ffprobe显示像素格式

ffprobe -v error -hide_banner -of default=noprint_wrappers=0 -print_format flat  -select_streams v:0 -show_entries stream=pix_fmt simpsons_1080p2398_clip.mp4streams.stream.0.pix_fmt="yuv420p"

结语

就到这里了,朋友们。我们已经到了ffprobe教程的尾声,我希望今天的文章对你有帮助。更多关于ffprobe的信息,你可以参考官方文档:

https://ffmpeg.org/ffprobe.html。如果你有任何使用ffprobe的便捷方法,欢迎在评论处补充。

感谢阅读,保重!Happy streaming!

致谢:

本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。

原文链接:

https://ottverse.com/ffprobe-comprehensive-tutorial-with-examples/


ffprobe综合教程(内含7个示例)相关推荐

  1. 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——8 - Fable Of The Lazy Teenager(懒散少年的寓言)

    Unit 8 - Fable Of The Lazy Teenager(懒散少年的寓言) Benjamin Stein weaves a tale to bring home to young Ame ...

  2. 《日语综合教程》第七册 第四課 読み物 初日影のなかで

    为什么80%的码农都做不了架构师?>>>    上外 <日语综合教程> 翻译注解.点击生词后的数字可以跳转到解释,再次点击返回(BackSpace键也可),支持左右键(← ...

  3. 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——5 - A Valentine Story(爱情故事)

    Unit 5 - A Valentine Story(爱情故事) A letter or telephone call comes from someone you have not met, and ...

  4. 大学英语综合教程二 Unit 5 课文内容英译中 中英翻译

    大学英语综合教程二 Unit 5 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  5. 软测项目辅导综合教程

    软测项目辅导综合教程 一. 项目介绍 二. 询问测试过程 三. 一个模块如何测试 四. 介绍印象深刻的缺陷 五. Sql注入测试过程 六. cookie测试过程 七. 后端性能测试过程 八. 自动化测 ...

  6. 大学英语综合教程三 Unit 6 课文内容英译中 中英翻译

    大学英语综合教程三 Unit 6 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  7. 大学英语综合教程三 Unit 5 课文内容英译中 中英翻译

    大学英语综合教程三 Unit 5 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  8. 硕博研究生英语综合教程 郭巍 听力材料(下)

    系列文章目录 硕博研究生英语综合教程 郭巍 听力材料(上) 硕博研究生英语综合教程 郭巍 听力材料(下) 文章目录 目录 系列文章目录 文章目录 unit6 Economic inequality u ...

  9. 大学英语综合教程四 Unit 3 课文内容英译中 中英翻译

    大学英语综合教程四 Unit 3 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

最新文章

  1. linux内核远程漏洞,CVE-2019-11815:Linux内核竞争条件漏洞导致远程代码执行
  2. SQL Server中的锁类型及用法(转载)
  3. js继承的实现(转载)
  4. extjs之TypeError: d.read is not a function解决方案
  5. mysql多条数据合并一条之后取出重复值
  6. Web前端笔记-使用Webpack调用echarts画图
  7. 今天开始进入cdsn~~~
  8. 电脑开机自动推送微信通知
  9. Mybatis 大于小于符号解决
  10. 出海必知:跨境人必须知道的一个跨境电商推广常用渠道
  11. php 网站计数器,php网站计数器
  12. 漫谈广告机制设计 | 广告与自然结果的价值评估与利益分配
  13. 转载:Unofficial Windows Binaries for Python Extension Packages
  14. Spring框架编译报could not resolve plugin artifact io.spring.dependency-management
  15. 第十八届西南科技大学ACM程序设计竞赛
  16. 用MATLAB求解数据拟合问题
  17. 高通5G芯片大全-高通5G芯片资料合集-高通5G芯片资料下载
  18. 实现网站短信验证功能
  19. ES6之与Symbol.match
  20. 大牛谈看文献的方法,共勉之

热门文章

  1. Python Kmeans K均值分类
  2. 百家号搬运电视剧技巧,视频搬运去重技巧
  3. 江西计算机专业高职,全国超八成高职院校开设计算机专业
  4. 关于MySQL数据库当中,字段(或栏位)采用中文命名时的掉坑经历
  5. 新世纪音乐顶尖作品(15首)
  6. 完美解决m1/m1 pro/m1 max版mac安装pyaudio大坑
  7. 小学计算机课程评价,浅谈信息技术在小学课程教学评价中的意义
  8. 2022-2028年中国中低温余热发电行业市场发展潜力及投资前景分析报告
  9. [免签约]微信+支付宝个人收款解决方案
  10. R10-10 给订单量最多的员工,加薪1000元