当前位置:   article > 正文

Python 调用ffmpeg 实现简单的视频编辑_[srt @ 000001b790c7a940] invalid utf-8 in decoded

[srt @ 000001b790c7a940] invalid utf-8 in decoded subtitles text; maybe miss

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)
  • 1
  • 2
  • 3
  • 4

"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)
  • 1
  • 2
  • 3
  • 4
  • 5

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)
  • 1
  • 2
  • 3
  • 4
  • 5

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)
  • 1
  • 2
  • 3
  • 4

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)
  • 1
  • 2
  • 3

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)
  • 1
  • 2
  • 3

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)
  • 1
  • 2
  • 3
  • 4

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/742642
推荐阅读
相关标签
  

闽ICP备14008679号