关于ffmpeg的介绍可以参看:FFMPEG视音频编解码零基础学习方法
官网:https://ffmpeg.org/download.html

目录

  • 基本语法
  • 功能需求
  • 代码实现
  • 效果展示

基本语法

所用的ffmpeg的语法:
1.剪辑单个视频
ffmpeg -i [2021-11-24-1-2.mp4] -vcodec copy -acodec copy -ss [00:00:00] -to [00:00:05] [output/p3.mp4][ ]中三个参数依次为:剪辑视频源文件;第一个时间为剪辑的起始时间;第二个时间为视频持续的时间长度; 剪辑好的文件名

2.合并视频片段
ffmpeg -f concat -safe 0 -i [cutfiles.txt] -c copy [output_all.mp4]参数一为合并文件的目录txt,参数二为合并后的文件名。

功能需求

本次记录如何使用ffmpeg对多路视频按照不同时刻区间进行一次性快速剪辑,同时合成剪辑片段。
首先准备好要剪辑的视频文件:

以及需要剪辑的时间片段,采用以下形式:

其中times的value可以是xx:xx:xx-xx:xx:xx或者 xx:xx-xx:xx

代码实现

test.py:

# coding=utf-8
import os, re#剪辑参数,时间可以为4:25-4:29 或者00:04:25-00:04:29 注意字符格式
v1 = {'name': '2728','times': ['4:25-4:29' , '13:28-13:37',]
}v2 = {'name': '2906','times': ['4:50-4:55' , '10:37-10:42',]
}v3 = {'name': '2915','times': ['1:38-1:54' , '5:00-5:06' , '6:32-6:39', '8:36-8:43', '12:00-12:06', ]
}v4 = {'name': '3100','times': ['1:40-1:46','4:23-4:26', '5:29-5:34', '7:10-7:17', '9:54-10:03','12:00-12:07',]
}v5 = {'name': '3101','times': ['15:14-15:20',]
}# 剪辑单个视频
def cut_video(source_file, begin, continuous, output_file):# []中三个参数依次为: 剪辑视频源文件  第一个时间为剪辑的起始时间  第二个时间为视频持续的时间长度 剪辑好的文件名# ffmpeg -i [2021-11-24-1-2.mp4] -vcodec copy -acodec copy -ss [00:00:00] -to [00:00:05] [output/p3.mp4]ffmpeg_com = 'ffmpeg -i ' + source_file + ' -vcodec copy -acodec copy -ss ' + begin + ' -t ' + continuous + ' ' + output_fileos.system(ffmpeg_com)# 循环剪辑一个视频中的不同片段
def cut_videos(videos_info):#剪切时间time_lines = videos_info['times']#所属视频文件名file_name = videos_info['name']for i in range(len(time_lines)):time_line = time_lines[i]begin, continuous = get_time_parm(time_line)#剪切的初始视频     路径要对应上自己的文件路径!source_file = './'+file_name + '.mp4'#输出的视频文件(存入文本中,后续用于合成该文本那种的所有文件对应的片段)output_file = './output/' + file_name + '-p' + str(i) + '.mp4'f1 = open('cutfiles.txt', 'a+')f1.write('file ' + "'"+output_file+"'" + '\n')f1.close()cut_video(source_file, begin, continuous, output_file)# 将时间格式转换为秒数    02:48->168 或 2:48->168 或 01:12:11->4331 或 1:12:11->4331
def time_str_2_seconds(time_str):# print('time_str_2_seconds get time_str->',time_str)time_list = time_str.split(':')if len(time_list)==2:return int(time_list[0]) * 60 + int(time_list[1])elif len(time_list)==3:return int(time_list[0]) * 3600 + int(time_list[1]) * 60 + int(time_list[2])# 输入秒数转换成标准的时间参数  30 -> 00:00:30   8126->02:15:26
def seconnds_2_time(seconds):h=int(seconds/3600)if h>=0 and h<10:H="0"+str(h)else:H=str(h)a=seconds%3600m=int(a/60)if m>=0 and m<10:M="0"+str(m)else:M=str(m)s=a%60if s>=0 and s<10:S="0"+str(s)else:S=str(s)return H+":"+M+":"+S# 将输入的 2:48-2:55格式的时间 --》 转换成ffmpeg所需的 开始时间00:02:28 和持续时间00:00:07的格式
def get_time_parm(time_parm):# 1 拆分  2:48-2:55 =》   2:48 和  2:55m = re.match(r'^([0-9]*:[0-9]*)-([0-9]*:[0-9]*)', time_parm)begin_parm = m.group(1)  # 2:48end_parm = m.group(2)  # 2:55# 2 计算持续时间   2:48 和  2:55 =》 00:00:07# 2.1 全换成秒begin_int = time_str_2_seconds(begin_parm)  # 168end_int = time_str_2_seconds(end_parm)  # 175print(begin_int,end_int)# 2.2 7秒 =》 00:00:07continuous_int = end_int - begin_int  # 7continuous = seconnds_2_time(continuous_int)  # 00:00:07# 3 2:48=>00:02:48# 3.1 2:48=>168seconds_begin = time_str_2_seconds(begin_parm)# 3.2 168=>00:02:48begin = seconnds_2_time(seconds_begin)return [begin, continuous]#合并剪辑好的视频
def concat_videos():#参数一为合并文件的目录txt,参数二为合并后的文件名ffmpeg_command = 'ffmpeg -f concat -safe 0 -i cutfiles.txt -c copy output_all.mp4'os.system(ffmpeg_command)if __name__ == "__main__":#建立文件夹存放剪辑结果outpath='./output/'if not os.path.exists(outpath):os.mkdir(outpath)#循环剪辑多路视频list=[v1, v2, v3, v4, v5,]for v in list:print(v)cut_videos(v)#合并视频concat_videos()

效果展示




ffmpeg——同时剪辑多个视频并合并相关推荐

  1. 免费视频制作工具满足非专业用户的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕、自动剪辑等

    免费视频制作工具满足非专业用户的视频处理需求:压缩视频.转码视频.倒放视频.合并片段.根据字幕裁切片段.自动配字幕.自动剪辑等.有了它你也可以做出优秀的视频啦- Quick Cut 是一款轻量.强大. ...

  2. ts无损剪辑合并_音视频剪切合并器有哪些

    看到视频剪切合并器大家可能就会想到视频剪辑,平常我们在剪辑视频时,常常会需要合并或者剪切视频,这时,视频分割合并软件就是我们好好的帮手了,但是目前市面上这样的软件有很多,可是大部分的制作效果并不太好有 ...

  3. 视频剪切合并器如何剪辑下载的MP4电影并添加转场特效

    对于经常制作短视频的我们来说,做出的视频不仅要完美表达出视频内容,有时还需要加入一些视频特效.尤其是当我们使用几段素材剪辑成一段视频时,加转场特效不仅可以让视频内容更加丰富,而且可以使两个视频片段在切 ...

  4. FFMPEG MKV转换为MP4以及视频分割和合并

    mkv转换为mp4 ffmpeg -i "test.mkv" -vcodec copy -acodec aac 'test.mp4' 分割命令: ffmpeg -ss 00:00: ...

  5. C++ 调用 ffmpeg.exe 执行音视频混流合并;

    ffmpeg.exe文件可以去官网下载:FFmpeg 官网似乎不提供32位dll文件的下载了,但是可以下载exe文件来直接调用: #include <iostream> #include ...

  6. ffmpeg合并M3U8加密的视频 ts 合并为 mp4

    文章引用于 ffmpeg 合并 m3u8 ts key 文件 解决 Invalid data found when 错误 如果文件没加密,可以直接用 ffmpeg -i xxx.m3u8 -vcode ...

  7. vue怎么合并两个视频_【软件分享】视频分割合并软件哪款好用呢?怎么剪切合并视频?...

    现在有很多小伙伴都喜欢喜欢自己拍视频上传到各大视频平台,有时候会遇到关于视频剪辑方面的难题,比如说,视频怎么剪切?怎么将两段小视频合并成一个呢?这些都是一些比较常常遇到的问题,今天小编就给大家介绍一款 ...

  8. python视频-python剪切视频与合并视频的实现

    windows10/python3.6环境需安装imageio,ffmpeg(视频中有教下载)文字中不体现太麻烦,看起来也不方便! 剪切代码python代码: import imageio image ...

  9. 视频文案合并,清除原视频声音让文案转语音

    多个视频如何合并时,同时合并文案让文案转语音播放,教你一个简单剪辑的方法,下面一起来试试吧. 准备工具: 一台电脑 多个视频素材.文案用文档保存 开始操作: 在电脑搜索下载一个[媒体梦工厂],先免费注 ...

最新文章

  1. 你真的懂switch吗?聊聊switch语句中的块级作用域
  2. UML类图与类的关系详解【转】
  3. SharePoint学习札记[2] — MOSS2007体系结构概述
  4. ebs 选择excel输出 后缀 html,Oracle EBS XML报表中数字的处理(Excel输出)
  5. 【腾讯犀牛鸟开源人才培养计划】开源人才培养计划活动参与指南
  6. 关于 idea 快捷键 alt + f7 无法使用的一些尝试
  7. 超算与湍流的直接数值模拟
  8. 阿里云服务器配置好了,为什么访问不了?阿里云安全组放行1433端口设置您知道吗?
  9. go.js 删除节点
  10. 基于雷电模拟器利用python制作手游脚本 (神都夜行录,古剑奇谭木语人) (一)
  11. 【100 种语言速成】第 2 节:Emojicode
  12. 二维码和条形码简单实现
  13. 学习discovery studio对对接结果进行分析
  14. 线程的两种实现,为什么使用runnable接口的居多
  15. Wang Changyu
  16. 作文总结思维导图怎么画?分享作文类型总结思维导图模板
  17. instant run
  18. 华为云灾备方案,如何保障企业数据安全
  19. 今年职高计算机数学高考试题,2018-2019高职高考数学试题
  20. 四、注入(2)渗透测试常用工具

热门文章

  1. fedora系统的ISO镜像制作
  2. 1.面试题--Java基础
  3. 无线电磁信道划分及传播方式
  4. ACPI相关(5)- PCI热插拔(二)
  5. linux ADSL 安装
  6. 招标公告和资格预审的区别
  7. 【ziuno】强化学习入门—超级马里奥
  8. 今日美食推荐html代码,今日美食推荐:荤素搭配,好吃美味!
  9. Mathematica SPWM
  10. SPWM 与 SVPWM 区别