FFmpeg — 应用程序中强大的视频音频助手
点击下方“AI算法与图像处理”,一起进步!
重磅干货,第一时间送达
什么是FFmpeg? 人们为什么使用 FFmpeg? 如何在 Windows、Ubuntu 和 macOS 中设置 FFmpeg。 FFmpeg 中提供了用于媒体操作的库。 FFmpeg 为命令行应用程序提供的工具。 FFprobe 和 FFplay 的用法和示例。
什么是FFmpeg?
人们为什么使用 FFmpeg?
在 Windows、Ubuntu 和 macOS 中设置 FFmpeg
苹果系统
打开终端并输入 brew — version
。如果 Homebrew 安装成功,你应该会在终端中看到 brew 版本。
对于 x86 架构的 macOS,请使用命令 brew install ffmpeg
,而对于 M1,请使用命令aarch arm64 brew install ffmpeg
。
安装完成后,你可以在终端输入 ffmpeg -version
。如果打印出 FFmpeg 版本,则表示 FFmpeg 安装成功。
Windows
git full
– 从具有大量库的主分支构建。git essentials
– 从带有常用库的主分支构建。release full
– 从具有大量库的最新版本分支构建。release essentials
– 使用常用库从最新版本分支构建。
在此处下载 FFmpeg 发布版:https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip 将文件解压缩到将来要使用它们的地方。就我而言,我将它们放在我的 E盘中。
里面的bin文件夹包含这些可执行文件。
将bin文件夹添加到Windows环境路径变量中,这样我们就可以运行这个工具而不必每次都指定完整路径。在搜索栏中搜索环境变量,然后单击环境变量。
单击用户变量中的路径,单击新建,并粘贴bin的完整路径文件夹。
打开命令提示符并键入 ffmpeg -version
. 如果你看到打印出 FFmpeg 版本,则表示 FFmpeg 安装成功。我们还可以检查ffprob -version
和ffplay -version
。
FFmpeg 库
libavcodec — 包含 FFmpeg 支持的所有编码器和解码器。 libavformat — 拥有处理各种容器格式的所有复用器和解复用器。 libavfilter — 由许多过滤器组成,你可以根据需要使用它们来修改音频或视频。 libavdevice——支持多种不同的输入和输出设备。 libavutil — 辅助便携式多媒体编程。 libswscale — 执行高度优化的图像缩放以及色彩空间和像素格式转换操作。 libswresample — 执行高度优化的音频重采样、重新混合和样本格式转换操作。
FFmpeg 工具
FFmpeg — 主要转码引擎。它通常从命令行或其他进程调用。 ffplay — 播放音频或视频的最小工具。 ffprobe — 快速检查媒体以提取有价值的信息,例如媒体中有多少流、视频的帧速率等。
FFprobe 用法和示例
用法
ffprobe [OPTIONS] [INPUT_FILE]
man ffplay
— 请参阅手册。ffplay -h
— 显示帮助。-v error
— 除非出现错误,否则隐藏日志。-show_format
— 使用标签显示格式化的视频元数据。show_streams
— 显示文件中的所有流(视频和音频)。-print_format
— 以特定格式(CSV/XML/JSON)打印元数据。select_streams
-show_entries stream
= 仅显示特定实体及其嵌套依赖项。-show_entries stream= default-noprint_wrappers=1
— 仅显示特定实体。
示例
$ ffprobe -v error -show_format -show_streams input.mp4
Output:
[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=1/50
codec_tag_string=avc1
codec_tag=0x31637661
width=320
height=240
has_b_frames=2
sample_aspect_ratio=1:1
display_aspect_ratio=4:3
pix_fmt=yuv420p
level=13
color_range=N/A
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
timecode=N/A
refs=4
is_avc=1
nal_length_size=4
id=N/A
r_frame_rate=25/1
avg_frame_rate=25/1
time_base=1/12800
start_pts=0
start_time=0.000000
duration_ts=384000
duration=30.000000
bit_rate=34761
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=750
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
TAG:language=und
TAG:handler_name=VideoHandler
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
profile=LC
codec_type=audio
codec_time_base=1/44100
codec_tag_string=mp4a
codec_tag=0x6134706d
sample_fmt=fltp
sample_rate=44100
channels=1
channel_layout=mono
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/44100
start_pts=-1024
start_time=-0.023220
duration_ts=1324024
duration=30.023220
bit_rate=56517
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=1293
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
TAG:language=und
TAG:handler_name=SoundHandler
[/STREAM]
[FORMAT]
filename=input.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=-0.023220
duration=30.024000
size=368644
bit_rate=98226
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:title=FFprobe Tips
TAG:encoder=Lavf56.15.101
[/FORMAT]
$ ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1 input.mp4
Output: size=368644
$ ffprobe -v error -show_entries format=size -of default=noprint_wrappers=1:nokey=1 input.mp4
Output: 368644
$ ffprobe -v error -select_streams v:0 -show_entries stream=height,width -of csv=s=x:p=0 input.mp4
Output: 1280x720
ffplay [OPTIONS] [INPUT_FILE]
man ffplay
— 参考手册。ffplay -h
— 显示帮助。ffplay
— 全屏播放视频。-x -y
—播放具有特定高度和宽度的视频,在中间弹出窗口大小。如果弹出窗口和视频的纵横比不同,它将自动填充视频区域和窗口区域之间的额外空间。-noborder
—在弹出窗口中播放视频时隐藏标题栏。-[top/left/bottom/right]
— 在特定坐标中创建弹出窗口。默认情况下,它会在屏幕中央弹出。
示例
$ ffplay video.mp4
$ ffplay video.mp4 -x 600 -y 600 -noborder
$ ffplay video.mp4 -x 600 -y 600 -noborder -top 0 -left 0
结论
参考
https://ffmpeg.org/documentation.html https://trac.ffmpeg.org/wiki/FFprobeTips https://ffmpeg.org/ffplay-all.html https://ffmpeg.org/ffprobe.html FFmpeg Complete Guide by Syed Andaleeb Roomy
交流群
欢迎加入公众号读者群一起和同行交流,目前有美颜、三维视觉、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群
个人微信(如果没有备注不拉群!) 请注明:地区+学校/企业+研究方向+昵称
下载1:何恺明顶会分享
在「AI算法与图像处理」公众号后台回复:何恺明,即可下载。总共有6份PDF,涉及 ResNet、Mask RCNN等经典工作的总结分析
下载2:终身受益的编程指南:Google编程风格指南
在「AI算法与图像处理」公众号后台回复:c++,即可下载。历经十年考验,最权威的编程规范!
下载3 CVPR2021 在「AI算法与图像处理」公众号后台回复:CVPR,即可下载1467篇CVPR 2020论文 和 CVPR 2021 最新论文
评论