合并ts到mp4

 

这个比较好用。

copy /b d:\xxx\download_ts\*   d:\xxx\download_ts\new.mp4

 

用python ffmpeg也可以,不过我合出来有卡顿或者掉声问题, 

参数估计调整不

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/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

  

 

 

 

 

 

posted @   CrossPython  阅读(4516)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示