FFmpeg(强大的音视频处理工具) - 一些基本实用方法
FFmpeg(强大的音视频处理工具) - 一些基本实用方法
下载安装
官网:ffmpeg.org
下载页面 -> Windows -> Windows builds from gyan.dev 或 Windows builds by BtbN
推荐使用第二个Github@BtbN/FFmpeg-Builds,在最新的一个release
中,搜索win
,下载ffmpeg-master-latest-win64-gpl.zip
或ffmpeg-master-latest-win64-gpl-shared.zip
。
解压.zip
压缩包,将bin
目录添加到环境变量
,重启cmd终端
,输入ffmpeg -version
,看到ffmpeg version n5.1-5-gaba74d7843-20220803 Copyright (c) 2000-2022 the FFmpeg developers
即说明安装配置成功。
使用
最简单的使用方式为:
格式转换
1 |
|
音视频裁剪
1 |
|
其中,-ss
是开始时间,-t
是持续时间。
1 |
|
其中,-ss
是开始时间,-to
是结束时间。
1 |
|
其中,20
代表20秒,0:0:20
代表0时0分20秒。
另外的,若-to
和-t
同时设置,则以-t
为准。
特别提醒:
使用ffmpeg进行视频裁剪时,请务必将-ss
参数放在-i
前面!
虽然先-i
和先-ss
都能正常裁剪,但是先-i
的话,可能会比先-ss
慢很多。
1 |
|
等长分割(批量分割)
1 |
|
将input.mp3分割为数个7秒的小片段,并命名为output001.mp3、output002.mp3、…。
其中:
-acodec copy
instructs FFmpeg to copy the audio codec from the input file without re-encoding it, which means the output files will have the same audio quality.-vn
tells FFmpeg to extract only the audio stream from the input file and ignore the video stream, as this command does not produce any video output.-f segment
sets the output format to segmented files.-segment_time 7
每段7秒
🤫
给视频添加图片文字
所用到素材及结果详见:阿里云盘分享
给视频添加图片
如果想要往某个视频上的某个位置添加一个图片(比如二维码),则可以使用以下命令将0.png
添加到0.mp4
的左上角(10, 10)
的位置:
1 |
|
如果想要0.png仅在第5到10秒出现,则可以:
1 |
|
给视频添加文字
如果想在0.mp4
的(130, 320)
处添加大小为70
的黑
色华文行楷
的欢迎来到我的空间
,则可以:
1 |
|
同时给视频添加图片和文字
ffmpeg中-vf
和-filter_complex
不能同时用于同一个输出流。想要同时往视频中添加图片和文字,可以使用-filter_complex
选项来指定所有过滤器:
1 |
|
合并视频和字幕
假设当前目录下有0.mp4
和0.ass
,则可以:
1 |
|
假设提示“找不到字体”,则可以
1 |
|
提取视频中的一段音频并输出为mp3
1 |
|
使用硬件加速(GPU)
首先确定可用硬件列表:
1 |
|
得到结果:
1 |
|
则说明可以使用cuda
、qsv
等进行硬件加速。
接着只需要:
1 |
|
关于如何在Linux
上编译安装支持CUDA
的FFmpeg
请查看FFmpeg - 如何在Linux(Ubuntu)上安装支持CUDA的FFmpeg。
使用一个视频的格式信息压制另一个视频
首先获取已有视频的格式信息:
1 |
|
得到:
1 |
|
接着按照此格式开始压制即可:
1 |
|
格式转换时保留内挂字幕
1 |
|
其中-c:s
是值字幕,copy
是指复制,也可以修改成-c:s ass
等。
视频倍速
1 |
|
参数详解
ffmpeg
:调用FFmpeg程序。-i WeChat_20240521100857.mp4
:指定输入文件名为WeChat_20240521100857.mp4
。-filter_complex "[0:v]setpts=PTS/1.5[v];[0:a]atempo=1.5[a]"
:应用复杂滤镜处理:-filter_complex
:使用复杂滤镜功能。[0:v]setpts=PTS/1.5[v]
:将视频流的时间戳(PTS)按1.5倍速调整。具体含义如下:[0:v]
:表示第一个输入文件的视频流。setpts=PTS/1.5
:PTS(Presentation Time Stamp,显示时间戳)是FFmpeg用来同步音视频的标记。将时间戳缩短为原来的1/1.5,从而实现1.5倍速播放。[v]
:给处理后的视频流命名为[v]
,供后续使用。
[0:a]atempo=1.5[a]
:将音频流的速度调整为1.5倍。具体含义如下:[0:a]
:表示第一个输入文件的音频流。atempo=1.5
:将音频速度调整为1.5倍。FFmpeg中atempo
滤镜用于调整音频速度,允许的值范围是[0.5, 2.0],超过范围需要链式使用多个atempo
。[a]
:给处理后的音频流命名为[a]
,供后续使用。
-map "[v]"
:指定输出文件使用处理后的视频流[v]
。-map "[a]"
:指定输出文件使用处理后的音频流[a]
。-c:v libx264
:指定视频编码器为libx264
,这是一个常用的高质量H.264编码器。-c:a aac
:指定音频编码器为aac
,这是一个常用的高质量音频编码器。-b:a 192k
:指定音频比特率为192 kbps,确保音频质量。output.mp4
:指定输出文件名为output.mp4
。
原创不易,转载请附上原文链接哦~
https://blog.letmefly.xyz/2023/07/03/Other-FFmpeg-SomeCommonUsage/