一款强大的音视频处理工具--FFmpeg-1--认识FFmpeg

发布于:2025-06-22 ⋅ 阅读:(14) ⋅ 点赞:(0)

1、简介

FFmpeg是一个开源的多媒体框架,能够记录、转换和流式传输音视频内容。
它包含了一系列的工具和库,支持大量的多媒体格式。
FFmpeg是跨平台解决方案,能够在多种平台上运行,包括Linux、macOS和Windows。
FFmpeg是由Fabrice Bellard发起的项目,现在由Michael Niedermayer领导的开发者团队维护。

2、主要功能

(1)、转换格式:可以将一种格式的媒体文件转换为另一种格式(如从AVI转换为MP4)。
(2)、流媒体处理:支持RTSP、RTMP、HLS等多种协议,可用于接收和发送实时流媒体。
(3)、视频编辑:提供基本的剪辑、拼接、缩放等功能。
(4)、音频处理:可以提取、合并音频轨道,调整音量等。
(5)、图像处理:支持从视频中提取帧作为图片输出,或者将一系列图片合成为视频。
(6)、编解码支持:内置了丰富的编码器和解码器,支持H.264, HEVC, VP8/9, AAC, MP3等多种格式。

3、使用场景

(1)、视频转换与压缩:将不同格式的视频文件转换为目标格式,并根据需要调整分辨率、比特率等参数以适应特定用途。几乎支持所有流行的音视频格式的转换。
(2)、直播推流:使用FFmpeg作为推流工具,将本地或远程的音视频源推送到CDN或者直接推送至直播平台。
(3)、视频剪辑与合成:利用FFmpeg的命令行接口实现批量化的视频剪辑任务,比如裁剪片段、拼接、添加水印等。
(4)、音频处理:从视频中提取音频轨道,或者将多个音频文件合并成一个新的音频文件。
(5)、多媒体分析:获取媒体文件的详细信息,如编码格式、分辨率、时长等。
(6)、视频录制:可以从摄像头、屏幕录制或者其他视频设备中捕获视频。
(7)、音视频分析:使用ffprobe可以方便地获取音视频文件的详细信息。

4、主要组成部分

(1)、ffmpeg:用于音视频转换的主要命令行工具。
(2)、ffplay:简单的播放器,基于SDL和FFmpeg库,可以用来播放本地或在线的音视频流。
(3)、ffprobe:用于显示多媒体文件的信息,比如编码格式、时长、帧率等。
(4)、libavcodec:包含了各种音频和视频编解码器的库。
(5)、libavformat:用于处理多媒体容器格式的库。
(6)、libavutil:包含了各种辅助功能函数的库,如数学运算、逻辑操作等。
(7)、libswscale:用于图像缩放及色彩空间和像素格式转换的库。
(8)、libavfilter:提供了对输入视频进行过滤的功能,包括裁剪、旋转、添加文字等操作。

5、FFmpeg安装

  • Linux:可以通过包管理器安装,例如在Ubuntu上:
    sudo apt update && sudo apt install ffmpeg

  • macOS:使用Homebrew安装:
    brew install ffmpeg

  • Windows:
    下载地址:https://github.com/BtbN/FFmpeg-Builds/releases
    在这里插入图片描述

6、视频常用命令示例

(1)、查看视频信息

ffmpeg -i 1.mp4

在这里插入图片描述
如上图,可以看到视频长度1分钟,25帧,3200*1800的分辨率。其中的音频是48000Hz的采样率,单声道等信息。
同样,也支持视频流的基本信息查看。
如:

ffmpeg -i 'rtsp://用户名:密码@IP:554/Streaming/Channels/101'

在这里插入图片描述

(2)、转换视频格式

将1.mp4转换为2.avi。几乎所有视频格式都支持,如:MP4、AVI、MKV、MOV、FLV、WMV、WebM 等。

ffmpeg -i 1.mp4 2.avi

在这里插入图片描述

(3)、视频剪辑

从第00:00:30开始,截取10秒长度的视频片段。

ffmpeg -ss 00:00:30 -i 1.mp4 -t 10 -c copy output_clip.mp4

在这里插入图片描述

(4)、音频提取

从视频文件中提取音频到文件。

ffmpeg -i 1.mp4 -vn -acodec copy output_audio.avi

在这里插入图片描述

(5)、视频拼接

拼接两个视频文件:
首先创建一个文本文件 filelist.txt,内容如下:

file 'clip1.mp4'
file 'clip2.mp4'

在这里插入图片描述
然后执行以下命令进行拼接:

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output_concat.mp4

在这里插入图片描述

(6)、将图片序列转换为视频

假设有一系列名为 image1.jpg, image2.jpg, … 的图片,这个命令会将它们合并成一个MPG格式的视频。

ffmpeg -f image2 -i image%d.jpg video.mpg

(7)、给视频添加水印

在1.mp4上叠加一个水印1.jpg,位置在距离左上角10x10像素的地方。图片和视频都放到当前目录下

ffmpeg -i 1.mp4 -i 1.jpg -filter_complex "overlay=10:10" output2.mp4

在这里插入图片描述
生成output2.mp4的效果如:
在这里插入图片描述
如果添加文字水印的话,需要提前准备字体ttf文件。

ffmpeg -i input.mp4 -vf "drawtext=fontfile=/path/to/font.ttf: \
text='Your Text Here':x=10:y=10:fontsize=24:fontcolor=white:shadowy=2" \
-c:a copy output.mp4

解释:

  • fontfile=/path/to/font.ttf: 指定用于文字的字体文件路径。请确保提供实际存在的字体文件路径。
  • text=‘Your Text Here’: 你想要显示的文字内容。
  • x=10:y=10: 文字位置,这里是距离左上角 10 像素的位置。
  • fontsize=24: 字体大小为 24。你可以根据需求调整这个值。
  • fontcolor=white: 字体颜色为白色。可以更改为其他颜色名称或以 #FFFFFF 格式的颜色代码。
  • shadowy=2: 给文字添加一个y方向偏移量为2的阴影效果,使文字更加突出。这个参数是可选的。

向阳而生,Dare To Be!!!


网站公告

今日签到

点亮在社区的每一天
去签到