SiMa Blog

  • 文章
  1. 首页
  2. 文章
  3. Python
  4. 正文

Python之调用FFmpeg实现视频剪辑

2021年9月3日 2475点热度

FFmpeg是一款有着记录、转换数字音频、视频的能力的应用程序。Python提供了高效编程能力。本文将简单地介绍Python如何快速地调用FFmpeg程序,实现视频格式转化、视频加字幕、视频部分截取、多视频合并等基本的视频编辑功能

1、准备工作

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

2、思路

通过python的subprocess模块,实现视频格式转化、视频加字幕、视频部分截取、多视频合并等基本的视频编辑功能。

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'
.....

在这里插入图片描述

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 是输出音频名称

相关文章:

  1. Wordpress折腾之修改Wordpress文件上传类型限制
  2. Python之爬取我爱我家的房价
  3. Axure+javascript嵌入视频(一)
  4. Axure+javascript嵌入视频(二)
  5. Axure+javascript嵌入图表之Echarts图表
标签: ffmpeg Python 编辑 视频
最后更新:2021年12月13日

司马陵空

小小分享,共同进步

打赏 点赞
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
分类
  • Axure
  • docker
  • Hass
  • Kodi
  • linux
  • Python
  • Wordpress
  • 其他
  • 未分类

COPYRIGHT © 2021 www.sima.link ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2021033974号