赞
踩
- 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("合并成功")
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()
FFmpeg是集成解码、编码、转码、复用、解复用、流化、滤波、播放等完整解决方案的多媒体开源程序,在多媒体领域广泛使用,可以用它来剪辑、拼接视频。
官网:
点进去后:
下滑,找到这个界面并点击:
网速可能会比较慢。
假设我们下载后的ffmpeg文件名为ffmpeg-2023-03-23-git-30cea1d39b-essentials_build
那么找到它下面的bin文件夹:
C:\ffmpeg-2023-03-23-git-30cea1d39b-essentials_build\bin
在cmd下输入ffmpeg
出现该界面即成功
这一步可以参考:使用 ffmpeg 进行视频(ts)合并_ffmpeg合并视频_BeefpasteC的博客-CSDN博客
需要先把文件名保存到 文本文本中,而且格式必须一致,不能有中文,格式如下:
file '文件名'
这一步其实可以用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))
这种方法比起上面两种方法而言,碰到错误时会报错(方便调试),而且,不会出现卡顿的现象(这一点做得很好)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。