ffmpeg——同时剪辑多个视频并合并

这篇具有很好参考价值的文章主要介绍了ffmpeg——同时剪辑多个视频并合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本语法

所用的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对多路视频按照不同时刻区间进行一次性快速剪辑,同时合成剪辑片段。

首先准备好要剪辑的视频文件:

ffmpeg合并多个mp4,ffmpeg,音视频

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

ffmpeg合并多个mp4,ffmpeg,音视频

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

代码实现

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_file
    os.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%3600
    m=int(a/60)
    if m>=0 and m<10:
        M="0"+str(m)
    else:
        M=str(m)
    s=a%60
    if 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:55
    m = re.match(r'^([0-9]*:[0-9]*)-([0-9]*:[0-9]*)', time_parm)
    begin_parm = m.group(1)  # 2:48
    end_parm = m.group(2)  # 2:55

    # 2 计算持续时间   2:48 和  2:55 =》 00:00:07
    # 2.1 全换成秒
    begin_int = time_str_2_seconds(begin_parm)  # 168
    end_int = time_str_2_seconds(end_parm)  # 175
    print(begin_int,end_int)
    # 2.2 7秒 =》 00:00:07
    continuous_int = end_int - begin_int  # 7
    continuous = seconnds_2_time(continuous_int)  # 00:00:07
    # 3 2:48=>00:02:48
    # 3.1 2:48=>168
    seconds_begin = time_str_2_seconds(begin_parm)
    # 3.2 168=>00:02:48
    begin = 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合并多个mp4,ffmpeg,音视频
ffmpeg合并多个mp4,ffmpeg,音视频
ffmpeg合并多个mp4,ffmpeg,音视频

ffmpeg合并多个mp4,ffmpeg,音视频

原文 ffmpeg--同时剪辑多个视频并合并_ffmpeg合并多个视频_小屋*的博客-CSDN博客

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 文章来源地址https://www.toymoban.com/news/detail-603581.html

到了这里,关于ffmpeg——同时剪辑多个视频并合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「Python|音视频处理|场景案例」如何使用ffmpeg下载m3u8视频到本地并保存成mp4

    本文主要介绍如何使用ffmpeg批量下载视频到本地并保存成指定格式。 当我们希望将网页上的视频下载到本地的时候,我们可能获取到的视频地址是指向 .m3u8 格式的,当视频多的时候,手动下载并使用工具转换格式就显得工作量过大。 ffmpeg 是一个强大的音视频处理工具,具体

    2024年02月16日
    浏览(54)
  • ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

    比如,原来我们要用ffmpeg录一段RTSP视频流转成MP4,我们有两种方案: 方案一:可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_timestamps 1 -strftime 1 output_%Y-%m-%d_%H-%M-%S.mp4 方案二:可以直接调用ffmpeg库avcode

    2024年02月10日
    浏览(41)
  • 轻松转换TS视频为MP4,实现优质视频剪辑体验

    如果你是一个视频剪辑爱好者,你一定会遇到各种视频格式之间的转换问题,特别是将TS视频转换为MP4格式。别担心,我们的视频剪辑软件将为你提供最简单、高效的解决方案! 首先第一步,我们要进入媒体梦工厂主页面,在板块栏里选择“智能转码”板块 第二步,在进入板

    2024年02月13日
    浏览(45)
  • ffmpeg ts列表合并为mp4

    操作系统:ubuntu 注意事项: 1.ts文件顺序必须正确,也就是下一帧的dst和pst要比上一帧的大,否则会报错 2.codecpar-codec_tag要设置为0,否则报错Tag [27][0][0][0] incompatible with output codec id ‘27’ (avc1) 3.设置output的max_streams数目,默认是1000,超过此数目就会报错

    2024年02月13日
    浏览(43)
  • 视频剪辑:视频转码实用技巧,批量将MP4转为MP3音频

    随着数字媒体设备的普及,视频和音频文件已成为日常生活中的重要组成部分。有时,可能要将MP4视频文件转换为MP3音频文件,以提取其中的音频内容或者进行其他处理。这是耗费时间的任务,那要如何操作呢?本文详解云炫AI智剪如何将视频批量转码的技巧,批量将MP4文件

    2024年02月05日
    浏览(47)
  • 视频转码:掌握mp4视频格式转FLV视频的技巧,视频批量剪辑方法

    在多媒体时代,视频格式的转换成为一种常见的需求。把MP4格式转换为FLV格式,FLV格式的视频文件通常具有较小的文件大小,同时保持了较好的视频质量。批量剪辑视频的方法能大大提高工作效率。下面来看云炫AI智剪如何进行MP4到FLV的转码,如何批量剪辑视频的方法。 转码

    2024年01月19日
    浏览(42)
  • 音视频八股文(10)-- mp4结构

    mp4⽂件格式⼜被称为MPEG-4 Part 14,出⾃MPEG-4标准第14部分 。它是⼀种多媒体格式容器,⼴泛⽤于包装视频和⾳频数据流、海报、字幕和元数据等。(顺便⼀提,⽬前流⾏的视频编码格式AVC/H264 定义在MPEG-4 Part 10)。 mp4⽂件由box组成,每个box分为Header和Data。其中Header部分包含了

    2024年02月02日
    浏览(35)
  • Qt/C++音视频开发46-音视频同步保存到MP4

    用ffmpeg单独做视频保存不难,单独做音频保存也不难,难的是音视频同步保存到MP4中,重点是音视频要同步,其实这也不难,只要播放那边音视频同步后的数据,写入到文件即可。最难的是在播放过程中不断随机的切换播放进度,而且还会暂停播放、暂停录制的情况出现,这

    2024年02月17日
    浏览(51)
  • 合并多个 .ts 文件为单个 .mp4 解决方案

    📌 概要: 现在的视频网站采用的是流媒体传输协议,即把一个完整的视频切分为多个小片段,这些片段就是以 .ts 为后缀的视频文件。分片下载需要一个索引文件记录所有分片的网络地址,而这个索引文件就是 .m3u8 。 前段时间我在用 .m3u8 下载器下载电影的时候出现了问题

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包