我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python合并ts视频(三种方法)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python合并ts视频(三种方法)

前言:最近在爬取某个网站的视频,但是里面的视频数据是以ts文件的形式给出的。一个大的视频被切分成了很多小的ts视频,所以,合并这些ts视频就成为必要的了。我在网上搜到了三种方法,现在整理出来分享给大家,同时方便自己以后作参考。

方法一:用python调用windows命令行,使用copy命令进行合并。

copy命令格式:copy /b  所有ts文件的父目录/*.ts  合成后的文件的绝对路径举例:1,将F:\f\目录下的所有ts文件合成为一个名为new.ts的文件,并存放在E:\f\下面copy /b  F:\f\*.ts  E:\f\new.ts2,将F:\f\目录下的所有ts文件合成为一个名为new.mp4的文件,并存放在E:\f\下面copy /b  F:\f\*.ts  E:\f\new.mp4

相关python代码:

import osdef merge_ts2():    os.system('copy /b ' + r'F:\f\*.ts ' + r'E:\f\new.ts')    print("合并成功")

目前在使用该方法时还没发现ts文件数量限制

该方法的缺陷:

  • 文件夹下的所有ts文件都会被合并
  • 文件夹下的ts文件的命名必须按照字母顺序排列, 否则合并文件后视频片段会产生混乱.(注意:名为‘10.ts’的文件的顺序会排在名为'9.ts'文件的前面,也就是说,这里的字母顺序是指字符串的顺序。如果要用字符数字来命名ts文件,那么就需要给某些数字加上前导0)
  • 有些视频合成之后可能会有卡顿
  • 如果合并时出错了的话,python编译器不会报错

方法二:直接使用python的文件操作

python代码:

import osdef merge_ts(path):    file_names = os.listdir(path)#获取path目录下所有文件的文件名    index = 0#新建一个名为test1.ts的文件,并打算将其余ts文件全部写入到这个文件中    f0 = open(path+'test1.ts', 'ab')#可以在这行代码处通过更改test1的后缀来更改合成后的文件类型    for one in file_names:        #先检查当前文件是不是ts文件        file_suffix = one.split('.')[1]        if file_suffix != 'ts':#如果当前文件不是ts文件,那就跳过            continue        index += 1        print(index, "准备合并第"+str(index)+"个视频")        f1 = open(path+one, "rb")        f0.write(f1.read())#将当前ts文件写入到test1.ts之中        f1.close()    f0.close()

目前在使用该方法时还没发现ts文件数量限制

该方法的缺陷:

  • 合成后的视频可能会有卡顿
  • .注意各个文件名之间的顺序

方法三:使用ffmpeg合并视频

FFmpeg是集成解码、编码、转码、复用、解复用、流化、滤波、播放等完整解决方案的多媒体开源程序,在多媒体领域广泛使用,可以用它来剪辑、拼接视频。

下载ffmpeg:

官网:

Download FFmpeg

点进去后:

 

 下滑,找到这个界面并点击:

 网速可能会比较慢。

解压路径可选,我就直接解压在C盘下面了。

假设我们下载后的ffmpeg文件名为ffmpeg-2023-03-23-git-30cea1d39b-essentials_build

那么找到它下面的bin文件夹:

C:\ffmpeg-2023-03-23-git-30cea1d39b-essentials_build\bin

配置环境变量以及判断是否成功:

将上述路径添加进系统环境变量path当中。

在cmd下输入ffmpeg

出现该界面即成功

 

这一步可以参考:使用 ffmpeg 进行视频(ts)合并_ffmpeg合并视频_BeefpasteC的博客-CSDN博客

使用ffmpeg合并视频:

需要先把文件名保存到 文本文本中,而且格式必须一致,不能有中文,格式如下:

file  '文件名'

 这一步其实可以用python的文件操作完成,本文将在后面给出相应的python代码。

接下来就是python调用命令行操作----使用ffmpeg合并视频

核心代码:

#其中ffmpeg_bin_dic代表ffmpeg的bin目录,比如:#C:/ffmpeg-2023-03-23-git-30cea1d39b-essentials_build/bin/#path+'file_list.txt'是刚刚新建的包含所有ts文件的txt文件绝对路径,比如:#C:/新建文件夹/file_list.txt#save_path+ out_file_name代表保存合成后的ts文件的绝对路径os.system(ffmpeg_bin_dic+'ffmpeg -f concat -safe 0 -i '+path+'file_list.txt'+' -c '+ ' copy ' +save_path+ out_file_name)

python代码:

import osdef test(path, save_path):    file_names = os.listdir(path)    if 'file_list.txt' in file_names:        os.remove(path+'file_list.txt')    out_file_name = 'output.mp4'    while out_file_name in os.listdir(save_path):        out_file_name = '新' + out_file_name    f = open(path+'file_list.txt', 'w+')    for one in file_names:        f.write("file '" + one + "'\n")    f.close()    print("生成txt文件成功!")    start = datetime.datetime.now()    print('开始合成,初始时间为:',datetime.datetime.now())    ffmpeg_bin_dic = 'C:/237端点/软件/ffmpeg/ffmpeg-2023-03-23-git-30cea1d39b-essentials_build/bin/'    os.system(ffmpeg_bin_dic+'ffmpeg -f concat -safe 0 -i '+path+'file_list.txt'+' -c '+ ' copy ' +save_path+ out_file_name)    print('合成后的当前时间为:',datetime.datetime.now())    print('合成视频完成!用时:'+str(datetime.datetime.now()-start))

这种方法比起上面两种方法而言,碰到错误时会报错(方便调试),而且,不会出现卡顿的现象(这一点做得很好)

写在最后:如有错误,敬请指正,礼貌交流,感激不尽

来源地址:https://blog.csdn.net/fly_view/article/details/129793212

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python合并ts视频(三种方法)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python合并ts视频

合并ts视频#!/usr/bin/env/python#_*_coding:utf-8_*_#Data:2017-10-02#Auther:苏莫#Link:http://blog.csdn.net/lingluofengzang#Pytho
2023-01-31

Python下载ts文件视频且合并

这篇文章主要介绍了Python下载ts文件视频且合并,需要的朋友可以参考下
2023-01-10

如何利用FFmpeg合并音频和视频(多种方式)

这篇文章主要介绍了如何利用FFmpeg合并音频和视频,详细介绍了FFmpeg多个音频合并的2种方法,通过场景分享介绍了FFmpeg合并视频文件的4种方法,需要的朋友可以参考下
2023-02-20

Python多个MP4合成视频的实现方法

目录开始安装使用一、安装 Python二、安装 moviepy三、安装 ffmpeg四、开始写拼接脚本五、等待运行完毕, 完结撒花 六、补充内容开始安装使用主要是利用 moviepy 这个库, 里面提供了丰富的功能, 我们只需要使用简单的拼
2022-06-02

xp系统视频文件无法删的三种实用解决方法

在xp系统中,有一个很实用的视频功能那就是视频文件预览功能,但就是因为这个功能的存在导致了我们删除视频文件的时候常常出现无法删除的提示,瞬android间让我们瞪大了双眼,该怎么办呢?让我们一起来探索下吧。 压缩软件删除法 在这里我们可以借
2023-06-02

Matlab实现将图像序列合并为视频的方法详解

MATLAB是一种高性能语言,用于操纵矩阵、执行技术计算、绘图等。它代表矩阵实验室。借助这个软件,我们可以从图像中创建视频。这篇文章主要介绍了Matlab实现将图像序列合并为视频的四个方法,希望对大家有所帮助
2023-03-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录