m3u8视频TS合并Python脚本

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

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

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

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

#!/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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执刀人的工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值