翼度科技»论坛 编程开发 python 查看内容

使用Python批量下载ts格式视频,并合并为mp4格式,非常简单

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
哈喽大家好
今天咱们来实现一下批量下载ts格式文件后,如何合并为MP4视频。
ts文件下载

网页文件下载其实都可以通过requests.get以文件流的形式获取,并以字节的形式写入本地文件即可。
代码如下:
  1. import os
  2. import requests
  3. # Python学习资料白嫖扣裙:708525271
  4. def download(url, filenames, dirname):
  5.     session = requests.Session()
  6.     for filename in filenames:
  7.         print(u"downloading: %s" % filename)
  8.         r = session.get(url + filename, stream=True).iter_content(chunk_size=1024 * 1024)
  9.         filepath = os.path.join(dirname, filename)
  10.         print(u"saving: %s" % filename)
  11.         with open(filepath, 'wb') as f:
  12.             for chunk in r:
  13.                 chunk and f.write(chunk)
  14.         print(u"finished: %s" % filename)
复制代码
 
我发现在保存这一步会存在性能卡点(打印saving之后等了很久都没有生成文件),暂时没有想到很好的优化方法,不过下载这一步其实可以借用迅雷来批量处理,步骤如下:
1、点击新建。
2、切换为批量任务,这样就可以使用通配符去批量下载文件了。


ts文件合并为mp4

这个需要借助ffmpeg工具去实现。Windows平台可以直接到官网下载压缩包,解压之后把bin目录加入到环境变量中即可。


最后使用ffmpeg合并ts文件的代码如下:
  1. import os
  2. def merge(filenames, dirname, video='video.mp4'):
  3.     # 先用一个文件保存所有的文件路径(格式:file '***.ts')
  4.     path = os.path.join(dirname, 'path.txt')
  5.     with open(path, 'w+') as f:
  6.         for filename in filenames:
  7.             f.write("file '%s'\n" % os.path.join(filename))
  8.    
  9.     os.chdir(dirname)
  10.     os.system('ffmpeg -f concat -safe 0 -y -i %s -c copy -strict -2 %s' % (path, os.path.join(dirname, video)))
复制代码
 
好了,今天的分享就到这结束了,下次见。

来源:https://www.cnblogs.com/hahaa/p/17444212.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具