专栏首页python3python合并ts视频

python合并ts视频

合并ts视频

#!/usr/bin/env/python
#_*_coding:utf-8_*_
#Data:2017-10-02
#Auther:苏莫
#Link:http://blog.csdn.net/lingluofengzang
#PythonVersion:python2.7
#filename:convert_m3u8.py

import os
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

# 检查文件路径及文件是否正确
def check_path_file(_path, _file):

    # 判断路径是否存在
    # os.path.isdir(path)  判断路径是否为目录
    # os.path.isabs(path)  判断是否为绝对路径
    if os.path.isdir(_path) or os.path.isabs(_path):
        # 判断文件是否存在
        # os.path.join(path1[, path2[, ...]])  把目录和文件名合成一个路径
        # os.path.exists(path)  路径存在则返回True,路径损坏返回False
        if os.path.exists(os.path.join(_path, _file)):
            print u'>>>[-] 目标文件已经存在。'
            exit(0)

        return True

    else:
        print u'>>>[-] 路径不存在。'
        exit(0)

# 更改后缀名为[.ts]
def change_file_name(_path):

    # 获取路径下的文件名
    files = os.listdir(_path)

    for filename in files:
        # 文件名分割 文件名称+后缀
        portion = os.path.splitext(filename)
        if portion[1] != '.m3u8' or portion[1] == '':
            newname = portion[0]+".ts"
            # 切换到文件所在路径
            os.chdir(_path)
            # 更换文件后缀
            os.rename(filename,newname)

    return True

# 对[.ts]文件进行排序
def sort_file(_path, num = '1'):

    if num == '1':
        change_file_name(_path)
    file_lists = os.listdir(_path)

    file_list = []

    for file in file_lists:
        portion = os.path.splitext(file)
        if portion[1] == '.ts':
            file_list.append(int(portion[0]))

    file_list.sort()
    return file_list

# 合并文件
def convert_file(_path, files, filename):

    tmp = []
    for file in files:
        tmp.append(str(file) + '.ts')
    # 合并ts文件
    os.chdir(_path)
    shell_str = '+'.join(tmp)
    shell_str = 'copy /b '+ shell_str + ' ' + filename
    os.system(shell_str)
    # 删除ts和m3u8文件
    os.system('del /Q *.ts')
    os.system('del /Q *.m3u8')

if __name__ == '__main__':

    print '-' * 60 + '\n'
    print u'将m3u8格式的视频转换成mp4格式'.center(60) + '\n'
    print '-' * 60

    try:

        _path = raw_input(unicode('>>>[+] 请输入m3u8视频所在目录\n>>>[+] ').encode('gbk'))
        _file = raw_input(unicode('>>>[+] 请输入mp4的文件名\n>>>[+] ').encode('gbk'))+'.mp4'
        print u'>>>[+] 是否需要将m3u8视频后缀名转换为[.ts]'
        num = raw_input('>>>[+] Yes:1 No:2\n>>>[+] [1]')

        flag = check_path_file(_path, _file)

        if flag:
            if num == '2':
                files = sort_file(_path, num)
            else:
                files = sort_file(_path)
            print '-' * 60
            convert_file(_path, files, _file)

    except Exception as e:
        print e

合并后视频出现卡顿、加速播放等问题,解决方法不知,如果有知道怎么解决的朋友,欢迎联系,不胜感激。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python3批量为文件重命名

    为什么使用python批量重命名而没有使用shell,python对文字的处理更灵活,对于文件名中的空格不会出现报错。

    py3study
  • python调用不同目录下的方法

    py3study
  • python ftp和sftp的例子

    YESTERDAY = TODAY - datetime.timedelta(days=1)

    py3study
  • Python提取PDF第一页为封面图片【批量提取】

    近期要处理一批PDF文件,大约在20G,具体数量不详,需求是把每个文件的页数和第一页转换成图片,在网上查阅各种类库,最终选择的是PyMuPDF模块。最后核心代码...

    小白程序猿
  • Python使用os模块

    Spaceack
  • Python入门之获取当前所在目录的方法详解

    #本文给大家讲解的是使用python获取当前所在目录的方法以及相关示例,非常的清晰简单,有需要的小伙伴可以参考下 sys.path 模块搜索路径的字符串列表。由...

    Jetpropelledsnake21
  • OS.path模块的详细使用说明

    大家好,从本周起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示。刚入门的读者千万...

    叫我龙总
  • Python如何避免文件同名产生覆盖

    在一些不多的数据下载和生成的时候,我们倾向于直接保存为文件,当我们修改某些参数后再一次运行时,之前运行时生成的文件就被覆盖了。为了解决这个问题,这里提供几个解决...

    砸漏
  • 偷学Python二十六|OS.path模块的详细使用说明

    大家好,从本周起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示。刚入门的读者千万...

    刘早起
  • python3批量为文件重命名

    为什么使用python批量重命名而没有使用shell,python对文字的处理更灵活,对于文件名中的空格不会出现报错。

    py3study

扫码关注云+社区

领取腾讯云代金券