(TODO)

下载

步骤

  • 官网下载二进制包
  • 添加环境变量
  • (optional)安装ffmpeg-python库

下载二进制包:看到下载页面眼睛都花了,有essential和full版本:essential就是简版,只包含ffmpeg.exe、ffplay.exe、ffprobe.exe, 而full版本就包含了动态库和相关头文件,方便我们在开发中调用。

添加环境变量 : 将bin目录的全路径添加到环境变量PATH

测试ffmpeg

1
ffmpeg –version

也可以用ffplay播放视频看看

安装ffmpeg-python库

1
pip install ffmpeg-python

conda 也可以

测试ffmpeg-python

使用

ffmpeg的使用

Documentation (ffmpeg.org)

合并视频和音频

1
2
ffmpeg -i 视频文件 -i 音频文件 -c:v copy -c:a aac -strict experimental output.mp4
ffmpeg -i video.mp4 -i audio.mp4 -c copy output.mp4

合并ts视频

1
ffmpeg -f concat -safe 0 -i file.txt -c copy output.mp4

其中放了路径

1
2
3
4
5
6
7
file 'F:\2\1.ts'
file 'F:\2\2.ts'
file 'F:\2\3.ts'
file 'F:\2\4.ts'
file 'F:\2\5.ts'
file 'F:\2\6.ts'
file 'F:\2\7.ts'

或者

1
ffmpeg -i "concat:1.ts|2.ts|" -c copy output2.mp4

ffmpeg-python的使用

ffmpeg-python-doc

How to Use FFMpeg in Python (with Examples) - Bannerbear

基操

  • 从文件创建对象

ffmpeg.input(<输入文件路径>)

  • 从对象输出文件

ffmpeg.output(audio, video, <输出文件路径>)

ffmpeg对象的属性audio\video分别对应音频和视频流

1
2
3
4
5
6
7
8
# 输入
input = ffmpeg.input('in.mp4')
# 音频滤波
audio = input.audio.filter("aecho", 0.8, 0.9, 1000, 0.3)
# 视频翻转
video = input.video.hflip()
# 输出
out = ffmpeg.output(audio, video, 'out.mp4')

touch创建很方便,但是windows下cmd创建文件,?不能是空嘛

1
echo ""> 1.txt

视频中提取音频

1
2
3
4
5
6
7
import ffmpeg
(
ffmpeg.input("input.mp4")
# .output('audio.mp3', acodec='libshine')
.output('output.mp3')
.run()
)

视频格式转换

1
2
3
4
5
6
7
import ffmpeg

(
ffmpeg.input("input.mp4")
.output("output.wmv")
.run()
)

视频剪切

1
2
3
4
5
6
7
8
9
10
import ffmpeg

start_time = '00:00:10' # Start time for trimming (HH:MM:SS)
end_time = '00:00:20' # End time for trimming (HH:MM:SS)

(
ffmpeg.input("input.mp4", ss=start_time, to=end_time)
.output("trimmed_output.mp4")
.run()
)

合并视频和音频

1
2
3
4
5
6
7
import ffmpeg

input_video = ffmpeg.input("./video.mp4")
input_audio = ffmpeg.input("./audio.mp3")

ffmpeg.concat(input_video, input_audio, v=1, a=1).output('./output.mp4').run()

未测试的代码:叠加原音频??

1
2
3
4
5
6
7
8
# import ffmpeg
# input_video = ffmpeg.input("../resources/video_with_audio.mp4")
# added_audio = ffmpeg.input("../resources/dance_beat.ogg").audio.filter('adelay', "1500|1500")
# merged_audio = ffmpeg.filter([input_video.audio, added_audio], 'amix')
# (ffmpeg
# .concat(input_video, merged_audio, v=1, a=1)
# .output("mix_delayed_audio.mp4")
# .run(overwrite_output=True))

拼接视频