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

这篇具有很好参考价值的文章主要介绍了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.ts
2,将F:\f\目录下的所有ts文件合成为一个名为new.mp4的文件,并存放在E:\f\下面
copy /b  F:\f\*.ts  E:\f\new.mp4

相关python代码:

import os
def 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 os
def 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

点进去后:

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

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

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

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

 网速可能会比较慢。

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

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

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

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

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

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

在cmd下输入ffmpeg

出现该界面即成功

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

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

使用ffmpeg合并视频:

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

file  '文件名'

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

 这一步其实可以用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 os
def 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://www.toymoban.com/news/detail-453964.html

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

到了这里,关于python合并ts视频(三种方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • GIT合并分支的三种方法

    1、目标:将dev分支合并到master分支 1.1、首先切换到master分支上 1.2、如果是多人开发的话 需要把远程master上的代码pull下来 1.3、然后我们把dev分支的代码合并到master上 1.4、然后查看状态及执行提交命令 比如 feature 分支上的commit 82ecb31非常重要,它含有一个bug的修改,或其他人

    2024年02月12日
    浏览(46)
  • 怎么合并多个视频?简单视频合并方法分享

    合并多个视频可以将它们组合成一个更长的视频,这对于需要播放多个短视频的情况非常有用。此外,合并视频还可以使视频编辑过程更加高效,因为不必将多个独立的视频文件分别处理。最后,合并视频可以减少文件数量,从而使整个视频集合更加整洁和易于管理。下面给

    2024年02月14日
    浏览(51)
  • 如何把几个视频合并在一起?视频合并方法分享

    当我们需要制作一个比较长的视频时,将多个视频进行合并可以使得整个过程更加高效。此外,合并视频还可以避免出现“剪辑断层”的情况,使得视频内容更加连贯,更加容易被观众理解和接受。再有,合并视频还可以减少视频文件的数量,从而更方便管理。那么怎么合并

    2024年02月14日
    浏览(48)
  • python爬取视频

    适合新手小白揣摩; 环境准备: 设备 软件版本 windows 环境(可上网) pycharm 3 本地目录截图如下: 详细视频链接地址 爬取网页详细地址

    2024年02月14日
    浏览(32)
  • Python爬虫:爬取各种视频

    一、先看效果: 包括短视频 中视频 长视频等。 短视频(2到3分钟时间): 中视频(10分钟左右时间): 长视频(20分钟左右时间): 二、爬取规则: 2.1:短视频爬取: 爬取该网页视频: 方法一:F12键 找到 network 然后media,数据包中的url,复制粘贴看是否能打开该视频,如果能打

    2024年04月13日
    浏览(40)
  • python 爬取某站视频

    也是感觉好久都没有写博客了,主要是因为学业繁忙(其实是想多摆烂一会儿。。。) 距离暑假还有一个月,各科老师也开始布置相关的期末考试内容了。。。。。。 最近英语老师给我们留了一个期末作业(大学牲又要忙起来了),内容是拍摄一个短视频,既然是视频那素

    2024年02月04日
    浏览(44)
  • python怎么爬取视频

    在 Python 中爬取视频的方法有很多种,具体的步骤如下: 找到要爬取的视频的网址。 在 Python 中使用网络爬虫工具(如 requests 库)发送 HTTP 请求,获取视频的网页源代码。 使用正则表达式或者网页解析工具(如 BeautifulSoup)对网页源代码进行解析,找到视频文件的 URL 地址。 使用

    2024年02月16日
    浏览(64)
  • python爬取bilibili,下载视频

    python下载bilibili视频合集 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接:https://pan.baidu.com/s/1WuXTso_iltLlnrLffi1kYQ?pwd=1234 3.1 下载单个视频 感觉现在下载的清晰度不够,可以在找找,给这块替换了就行 代码 3.2 下载选集视频 选集视频的播放链接很好找,就是后面的p=几啥的,拼一

    2024年02月10日
    浏览(41)
  • python批量爬取某站视频

    前言: 本项目是批量下载B站如下图示例的视频: (家里的小孩想看动画片,就下载到U盘上在电视上给他们放。。。) 在这个项目中,涉及到的模块有以下几个: 1.shutil: Python 标准库中的一个模块,用于文件操作,包括复制、移动、删除文件等。在这个项目中,主要用于创

    2024年02月20日
    浏览(44)
  • 使用python爬虫爬取bilibili视频

    可以使用 Python 爬虫框架如 Scrapy 来爬取 Bilibili 的视频。首先需要了解 Bilibili 网站的构造,包括数据是如何呈现的,然后构建请求来获取所需的数据。同时需要考虑反爬虫措施,可能需要使用代理 IP 和 User-Agent 等方法来绕过反爬虫机制。 这里提供一个简单的爬取视频标题的

    2024年02月08日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包