python教程

m3u8视频TS合并Python脚本

python教程 51源码 2023-03-21 人阅读

用python继写的ts合并m3u8视频功能,抽离出来分享给大家使用。

合并的本质还是一下ffmpeg,请自行去官网下载放置脚本能找到的位置

python使用3.9版本,python 2已经不用再去支持了。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import os
 
def run_cmd(s_cmd):
    print(s_cmd)
    assert(0==os.system(s_cmd))
 
def takeFilePathName(filepath):
    return os.path.basename(filepath)
 
def autoMergeTsFileToMp4(inputDir, outDir):
    if not os.path.isdir(inputDir):
        return
    files = os.listdir(inputDir)
    tsFiles = []
    for file in files:
        filepath = os.path.join(inputDir, file)
        if os.path.isdir(filepath):
            autoMergeTsFileToMp4(filepath, outDir)
        else:
            tsFiles.append(filepath)
    if len(tsFiles)<=0:
        return
    tsDirName = os.path.basename(inputDir)
    tsFileListPath = '{0}.txt'.format(inputDir)
    if not os.path.isdir(outDir):
        os.makedirs(outDir)
    mergeFilePath = os.path.join(outDir,'{0}.mp4'.format(tsDirName))
    with open(tsFileListPath,'w') as f:
        tsFiles.sort(key=takeFilePathName)
        for filePath in tsFiles:
            f.write("file '{0}'\n".format(filePath))
    isTsFile = tsFiles[0].endswith('.ts')
    if not isTsFile:
        return
    binFfmpeg='ffmpeg'
    s_cmd = '{0} -f concat -safe 0'.format(binFfmpeg)
    s_cmd += ' -i {0} -c copy {1}'.format(tsFileListPath,mergeFilePath)
    run_cmd(s_cmd)
 
def main():
    videoRootDir = 'D:\\极客时间\\video-data'
    outTsDir = os.path.join(videoRootDir,'outx','ts')
    outMp4Dir = os.path.join(videoRootDir,'outx','mp4')
    autoMergeTsFileToMp4(outTsDir, outMp4Dir)
 
if __name__ == '__main__':
    main()


版权声明:文章搜集于网络,如有侵权请联系本站,转载请说明出处:https://www.51yma.cn/jiaocheng/python/1137.html
文章来源:
标签 Python脚本