FFMpeg使用介绍

1. 介绍

FFmpeg是一个跨平台的开源多媒体框架,可以用于处理和转换各种音视频格式。它提供了必要的工具和库来进行音视频的录制、转码、播放、流媒体传输等操作,还可以抓取实时的音频/视频流。

FFmpeg 主要包括三块:FFmpeg、FFplay、FFprobe。</br>

使用FFmpeg的常见应用和产品

  1. 视频转码器:通过 FFmpeg,可以将视频文件从一个格式转换为另一个格式,例如将 AVI 转换为 MP4、MKV 转换为 MOV 等。

  2. 音频转码器:类似于视频转码器,FFmpeg可用于转换音频文件的格式,例如将 MP3 转换为 WAV、AAC 转换为 FLAC 等。

  3. 视频编辑软件:一些视频编辑软件,如Adobe Premiere Pro、Final Cut Pro等,使用 FFmpeg 来处理视频文件,包括剪辑、合并、添加字幕、调整画质等功能。

  4. 媒体播放器:许多媒体播放器,包括VLC媒体播放器、MPlayer等,使用FFmpeg 解码和渲染音视频文件。

  5. 流媒体服务器:FFmpeg 可以用来构建流媒体服务器,将音视频文件以流的方式传输给客户端,实现实时播放或直播功能。

  6. 视频截图工具:FFmpeg 提供了截取视频缩略图的功能,可以用来生成视频预览图、视频封面等。

  7. 视频压缩工具:通过 FFmpeg,你可以调整视频的分辨率、比特率、帧率等参数,以减小文件大小,实现视频压缩。

2. 安装

下面是一些常用平台的安装指南

2.1 Linux

  1. 使用包管理器安装FFmpeg
- Debian/Ubuntu: `sudo apt-get install ffmpeg`
- CentOS/Fedora: `sudo yum install ffmpeg`

  1. 编译安装FFmpeg
- 下载最新的源代码:`wget https://ffmpeg.org/releases/ffmpeg-<version>.tar.gz`
- 解压源代码:`tar -zxvf ffmpeg-<version>.tar.gz`
- 进入解压后的目录:`cd ffmpeg-<version>`
- 配置和编译:`./configure && make && sudo make install`

2.2 macOS

使用Homebrew安装FFmpeg:

brew install ffmpeg

3. 基本用法

命令介绍

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件...

  1. [全局选项]: 适用于整个转码过程,如设置日志级别、指定硬件加速器等。
  2. [输入选项]: 用于指定输入文件的参数,如输入文件的格式、分辨率、帧率等。
  3. [输出选项]: 用于指定输出文件的参数,如输出文件的格式、编码器、比特率等。

常用选项

  • -c:v: 指定视频编码器。
  • -c:a: 指定音频编码器。
  • -b:v: 设置视频比特率。
  • -b:a: 设置音频比特率。
  • -s: 设置输出分辨率。
  • -r: 设置输出帧率。
  • -ss: 剪切输入文件的起始时间。
  • -t: 设置输出文件的持续时间。
  • -vf: 应用视频滤镜。
  • -af: 应用音频滤镜。

处理过程

  • 读取输入源
  • 进行音视频的解封装
  • 解码每一帧音视频数据
  • 编码每一帧音视频数据
  • 进行音视频的重新封装
  • 输出到目标
ffmpeg-process.jpg

转码

转换一个音视频文件的格式或编码:

ffmpeg -i input.mp4 output.avi

剪切

剪切一个音视频文件的时间段:

ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c copy output.mp4

修改分辨率

修改一个视频文件的分辨率:

ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

提取音频

从一个视频文件中提取音频:

ffmpeg -i input.mp4 -vn -acodec copy output.aac

添加水印

在一个视频文件上添加水印:

ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4

图片合成视频

将一系列图片合成为视频:

ffmpeg -framerate 25 -pattern_type glob -i 'input*.png' -c:v libx264 output.mp4

4. 高级用法

视频编解码——视频编码

使用不同的视频编码器对视频进行编码:

ffmpeg -i input.mp4 -c:v libx264 output.mp4  # 使用H.264编码
ffmpeg -i input.mp4 -c:v libvpx output.webm  # 使用VP8编码

视频编解码——视频解码

使用不同的视频解码器对视频进行解码:

ffmpeg -i input.mp4 -c:v rawvideo output.avi  # 将视频解码为无压缩的原始视频
ffmpeg -i input.mp4 -c:v mjpeg output.avi  # 使用MJPEG解码器将视频转换为MJPG格式

编解码——音频编码

使用不同的音频编码器对音频进行编码:

ffmpeg -i input.wav -c:a aac output.m4a  # 使用AAC编码器将音频编码为M4A格式
ffmpeg -i input.wav -c:a libopus output.opus  # 使用Opus编码器将音频编码为Opus格式

编解码——音频解码

使用不同的音频解码器对音频进行解码:

ffmpeg -i input.mp3 -c:a pcm_s16le output.wav  # 将MP3音频解码为无压缩的PCM音频
ffmpeg -i input.aac -c:a pcm_s16le output.wav  # 将AAC音频解码为无压缩的PCM音频

常用滤镜

  • crop:裁剪视频,可以指定裁剪的起始和结束时间,以及裁剪的宽度和高度。
  • scale:缩放视频,可以指定缩放的宽度和高度,以及是否保持纵横比。
  • rotate:旋转视频,可以指定旋转的角度。
  • flip:翻转视频,可以指定是否水平翻转或垂直翻转。
  • contrast:调整视频的对比度。
  • brightness:调整视频的亮度。
  • saturation:调整视频的饱和度。
  • hue:调整视频的色调。
  • sharpness锐化:锐化视频,提高图像的清晰度。
  • noisereduction降噪:降低视频中的噪声,提高图像的质量。
  • deinterlace去隔行:去除视频中的隔行扫描,使图像更加流畅。
  • Watermark水印:在视频中添加水印,可以指定水印的位置、大小和透明度。

滤镜-基本滤镜

使用滤镜效果来改善视频或音频:

# 调整亮度
ffmpeg -i input.mp4 -vf "scale=640:480, eq=brightness=0.2" output.mp4

# 调整音量
ffmpeg -i input.mp4 -af "volume=2.0" output.mp4

滤镜-复杂滤镜

使用复杂的滤镜图形链来实现更高级的效果:

# 分割、调整对比度和添加暗角效果
ffmpeg -i input.mp4 -vf "split=2[a][b];[a]eq=contrast=1.2[b];[b]vignette" output.mp4

# 提高音量和应用高通滤波
ffmpeg -i input.mp4 -af "volume=1.5,highpass=f=200" output.mp4

流媒体传输-推送到RTMP服务器

将音视频流推送到RTMP服务器进行直播:

# 推送到RTMP服务器
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f flv rtmp://server/live/stream

流媒体传输-拉取RTMP流

从RTMP服务器拉取音视频流进行播放或处理:

# 拉取流并保存为文件
ffmpeg -i rtmp://server/live/stream -c:v copy -c:a copy output.mp4

# 拉取流并在SDL窗口中显示视频
ffmpeg -i rtmp://server/live/stream -vf "scale=640:480" -f sdl "Video Output"

高级选项——编码参数调优

调整编码器的参数以获得更好的音视频质量或压缩率:

# 使用CRF调整视频质量和使用慢速预设以获取更好的压缩
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow output.mp4

# 使用固定比特率设置音频的码率为128kbps
ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a  

高级选项——处理字幕和元数据

提取、添加或修改视频的字幕和元数据:

# 提取视频中的字幕为MOV Text字幕文件
ffmpeg -i input.mp4 -c:s mov_text output.mp4

# 添加英文字幕并设置语言标签
ffmpeg -i input.mp4 -c:s mov_text -metadata:s:s:0 language=eng output.mp4

# 修改视频的标题和艺术家元数据
ffmpeg -i input.mp4 -metadata title="My Title" -metadata artist="Artist Name" output.mp4

5. 文档查找

ffmpeg -h
ffmpeg -muxers #查看支持的音视频复用器
ffmpeg -h muxer=flv
ffmpeg -codecs #查看支持的编解码器、格式和协议
-version         show version
-buildconf       show build configuration
-formats         show available formats
-muxers          show available muxers
-demuxers        show available demuxers
-devices         show available devices
-codecs          show available codecs
-decoders        show available decoders
-encoders        show available encoders
-bsfs            show available bit stream filters
-protocols       show available protocols
-filters         show available filters
-pix_fmts        show available pixel formats
-layouts         show standard channel layouts
-sample_fmts     show available audio sample formats
-dispositions    show available stream dispositions
-colors          show available color names
-sources device  list sources of the input device
-sinks device    list sinks of the output device
-hwaccels        show available HW acceleration methods

视频信息分析神器——FFprobe

  • -show_format 格式相关信息
  • -show_streams 音视频流分析
  • -show_packets 音视频包分析
  • -show_frames 音视频帧分析

6. 资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容