Python 调用ffmpeg 实现简单的视频编辑

1、准备工作

1、安装python 环境。
2、下载ffmpeg,下载解压即可使用。
链接:https://pan.baidu.com/s/110bc7TWNaP8lKa6tarGH6g
提取码:1q2w

2、思路

通过python的subprocess模块,调用ffmpeg实现视频的剪辑功能

3、 实现功能

3.1、视频格式转化(转MP4)

ffmpeg的命令是“ffmpeg -i name1.rmvb -c:v libx264 -strict -2 name2.mp4” 转化为python如下:

import subprocess
videopath ="视频1"+".mkv"
outpath ="视频2"+".mp4"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -i " + videopath + " -c:v libx264 -strict -2 " + outpath),shell=True)

"E:/ffmpeg-win64-static/bin/ffmpeg"是ffmpeg下载解压后的路径。
videopath 是输入视频名称
outpath 是输出视频名称
ffmpeg支持的格式包括mkv、rm、rmvb等。

3.2、视频加字幕(srt格式)

ffmpeg的命令是“ffmpeg -i name1.mp4 -vf subtitles=test.srt name2.mkv” 转化为python如下:

import subprocess
videopath ="视频1"+".mp4"
srtpath ="字幕1"+".srt"
outpath ="合成视频"+".mp4"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -i " + videopath + " -vf subtitles="+srtpath+" "+  outpath ),shell=True)

videopath 是输入视频名称
srtpath 是字幕的名称
outpath 是输出视频名称

如果出现”Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option“的报错,原因就是字幕的格式不是UTF-8,可以通过txt文本工具转化为UTF-8格式即可;

3.3、视频加字幕并转化格式

ffmpeg的命令是“ffmpeg -i name1.mp4 -vf subtitles=test.srt -c:v libx264 -strict -2 name2.mkv” 转化为python如下:

import subprocess
videopath ="视频1"+".rm"
srtpath ="字幕1"+".srt"
outpath ="视频合成"+".mp4"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -i " + videopath + " -vf subtitles="+srtpath+" -c:v libx264 -strict -2 "+  outpath),shell=True)

3.4、视频截取

ffmpeg的命令是“ffmpeg -i name1.mp4 -ss 00:03:00 -to 00:02:00 -c copy name2.mp4” 转化为python如下:

import subprocess
videopath ="视频1"+".mp4"
outpath ="视频2"+".mp4"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -i " + videopath + " -ss 00:00:32 -to 01:54:35 -c copy " + outpath),shell=True)

videopath 是输入视频名称
outpath 是输出视频名称
-ss 后边的时间是开始时间
-to 后边的时间是结束时间

3.5、多视频合并

视频合成需新建个filelist.txt(可以自定义)的文件,filelist.txt文件里写的是要合并的视频名称,内容格式为
file’veido1.mp4’
file’veido2.mp4’
file’veido3.mp4’

Python 调用ffmpeg 实现简单的视频编辑_第1张图片

ffmpeg的命令是“ffmpeg -f concat -i filelist.txt -c copy name.mp4” 转化为python如下:

import subprocess
combinePath = "视频合成"+".mp4"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -f concat -i filelist.txt -c copy " + combinePath),shell=True)

combinePath 是输出合成视频名称

如果出现”Unsafe file name“的报错,可以加上 -safe 0 的参数

import subprocess
combinePath = "视频合成"+".mp4"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -f concat -safe 0 -i filelist.txt -c copy " + combinePath),shell=True)

3.6、视频提取音频

ffmpeg的命令是“ffmpeg -i name.mp4 -f mp3 -vn name.mp3” 转化为python如下:

import subprocess
videopath ="视频"+".mp4"
outaudio ="视频"+".mp3"
subprocess.call(("E:/ffmpeg-win64-static/bin/ffmpeg -i " + videopath + " -f mp3 -vn " + outaudio),shell=True)

videopath 是输入视频名称,outaudio 是输出音频名称

你可能感兴趣的:(python,python,视频处理,ffmpeg)