如下所示: # -*- coding:utf-8 -*-

import sys

import os

from glob import glob

import requests

reload(sys)

sys.setdefaultencoding("utf-8")

file_path=os.getcwd()

#获取需要转换的路径

def get_user_path(argv_dir):

if os.path.isdir(argv_dir):

return argv_dir

elif os.path.isabs(argv_dir):

return argv_dir

else:

return False

#对转换的TS文件进行排序

def get_sorted_ts(user_path):

ts_list = glob(os.path.join(user_path,'*.ts'))

boxer = []

for ts in ts_list:

if os.path.exists(ts):

# print(os.path.splitext(os.path.basename(ts)))

file,_ = os.path.splitext(os.path.basename(ts))

print file

boxer.append(file)

# boxer.append(int(file))

boxer.sort()

print(boxer)

return boxer

#文件合并

def convert_m3u8(file_path,boxer,o_file_name):

print u"开始拼接视频"

new_path=file_path+"/"+u"视频"

try:

os.chdir(new_path)

except Exception, e:

os.mkdir(new_path)

tmp = []

for ts in boxer:

print ts

tmp.append(str(ts)+'.ts')

cmd_str = '+'.join(tmp)

exec_str = "copy /b "+cmd_str+' '+o_file_name

print("copy /b "+cmd_str+' '+o_file_name)

os.chdir(user_path)

os.system(exec_str)

print "go home path"

import shutil

shutil.move(o_file_name,new_path+"/"+o_file_name)

os.chdir(file_path)

reload(sys)

sys.setdefaultencoding('utf-8')

# 功能:爬取m3u8格式的视频

# 检查存储路径是否正常

def check_path(_path):

# 判断存储路径是否存在

if os.path.isdir(_path) or os.path.isabs(_path):

# 判断存储路径是否为空

if not os.listdir(_path):

return _path

else:

print u'>>>[-] 目标文件不为空,将清空目标文件,是否更换路径?'

flag = raw_input('>>>[*] Yes:1 No:2 \n>>>[+] [2]')

try:

if flag == '1':

_path = raw_input(unicode('>>>[+] 请输入目标文件路径。\n>>>[+] ').encode('gbk'))

check_path(_path)

else:

# 清空存储路径

os.system('rd /S /Q ' + _path)

os.system('mkdir ' + _path)

return _path

except Exception as e:

print e

exit(0)

else:

os.makedirs(_path)

return _path

# 获取ts视频的爬取位置

def get_url(_url, _path):

all_url = _url.split('/')

url_pre = '/'.join(all_url[:-1]) + '/'

url_next = all_url[-1]

os.chdir(_path)

# 获取m3u8文件

m3u8_txt = requests.get(_url, headers = {'Connection':'close'})

with open(url_next, 'wb') as m3u8_content:

m3u8_content.write(m3u8_txt.content)

# 提取ts视频的url

movies_url = []

_urls = open(url_next, 'rb')

for line in _urls.readlines():

if '.ts' in line:

movies_url.append(url_pre + line[:-1])

else:

continue

_urls.close()

return movies_url

# 爬取ts视频

def download_movie(num,movie_url, _path):

os.chdir(_path)

print u'>>>[+] 第{}个视频 downloading...'.format(num)

print '-' * 60

error_get = []

for _url in movie_url:

# ts视频的名称

movie_name = _url.split('/')[-1][-6:]

movie_name1 = _url.split('_')[-1][-6:]

# print movie_name2

if len(str(movie_name1))<=4:

movie_name1="00"+str(movie_name1)

elif len(str(movie_name1))<=5:

movie_name1="0"+str(movie_name1)

else :

movie_name1=str(movie_name1)

try:

# 'Connection':'close' 防止请求端口占用

# timeout=30 防止请求时间超长连接

movie = requests.get(_url, headers = {'Connection':'close'}, timeout=60)

with open(movie_name1, 'wb') as movie_content:

movie_content.writelines(movie)

print u'>>>[+] 视频片段 ' + movie_name1 + u' 下载完成'

# 捕获异常,记录失败请求

except:

error_get.append(_url)

continue

# 如果没有不成功的请求就结束

if error_get:

print u'共有%d个请求失败' % len(file_list)

print '-' * 60

download_movie(error_get, _path)

else:

print '>>>[+] Download successfully!!!'

url=["http://video.renrenjiang.cn/record/alilive/7684990805-1512186274.m3u8"]

if __name__ == '__main__':

try:

# _url = raw_input(unicode('>>>[+] 请输入指定的[.m3u8]目标URL。\n>>>[+] ').encode('gbk'))

# _path = raw_input(unicode('>>>[+] 请输入存储目标文件路径。\n>>>[+] ').encode('gbk'))

for i in range(len(url)):

_url=url[i]

_path=os.getcwd()+"/"+"ts"+str(i+5)

try:

os.chdir(_path)

except Exception, e:

os.mkdir(_path)

storage_path = check_path(_path)

movie_url = get_url(_url, storage_path)

download_movie(i+1,movie_url, storage_path)#下载视频

user_path =_path

o_file_name=str(i+5)+".mp4"

boxer = get_sorted_ts(user_path)

convert_m3u8(file_path,boxer,o_file_name)#拼接视频

except Exception as e:

print e

以上这篇python 实现视频流下载保存MP4的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。

python 下载视频文件_python 实现视频流下载保存MP4的方法相关推荐

  1. python读视频文件_python读取和保存视频文件

    如何用python实现视频关键帧提取并保存为图片?也许你会觉得对小编多做一点事你会觉得你很爽,可是在小编看来这是不屑的 import cv2vc = cv2.VideoCapture('Test.av ...

  2. python压缩视频文件_python使用zlib库压缩图片,使用ffmpeg压缩视频

    # ffmpeg -i 1.mp4 -r 10 -pix_fmt yuv420p -vcodec libx264 -preset veryslow -profile:v baseline -crf 2 ...

  3. python传输视频文件_Python视频传输

    ubuntu16.04+python2+opencv (一) 开发前的准备工作 sudo apt-get install python-pip pip install numpy pip instal ...

  4. python如何下载zip文件_Python 使用requests下载zip文件

    话不多说,直接上代码 # -*- coding: utf-8 -*- """ Create by Mr.Hao on 2019/5/27. ""&qu ...

  5. python下载大文件mp4_python 实现视频流下载保存MP4的方法

    # -*- coding:utf-8 -*- import sys import os from glob import glob import requests reload(sys) sys.se ...

  6. python压缩视频文件_python+压缩视频教程

    python+压缩视频教程内容摘要 python+压缩视频教程做饭的比较少.python做exe开发教程,可省却昂贵的租金,可设单世间.双世间.4世间.8世间,可设单人间.双人间.4人间.8人间,可去 ...

  7. python压缩视频文件_python实现视频压缩功能

    引言 实现一个视频压缩的功能, 性能优良 压缩视频 从61M 到 11M或者80M到15M 视频看起来没有太大损伤 缺点:耗时20s (win10,CPU:intel i7 8G运存 ) 由于压缩运算 ...

  8. python压缩视频文件_python 批量压缩手机视频

    importsysimportosfrom concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor #线程池,进程池#imp ...

  9. python获取cookie文件_Python Cookie 读取和保存方法

    如下所示: #保存 cookie 到变量 import urllib.request import http.cookiejar cookie = http.cookiejar.CookieJar() ...

最新文章

  1. spark 源码分析 Blockmanager
  2. Windows7下Caffe的应用---在Win7下使用VS2015、Camke、Anaconda3配置Caffe CPU版本
  3. java停车场管理系统程序设计代码_社区养老服务管理系统,java程序设计
  4. 详解一个自己原创的正则匹配IP的表达式
  5. Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:执行手动查询...
  6. 字节流读数据 一次读一个字节
  7. 解决IDEA运行Flink报错java.lang.NoClassDefFoundError: org/apache/flink/api/common/ExecutionConfig....
  8. 1.4 Documents,Fields和Schema设计--目录
  9. iOS-性能优化的那些事
  10. 概念学习和一般到特殊序
  11. 虚拟主机安装php,php网站怎么安装到虚拟主机
  12. mysql如何实现透视表功能_SQL 实现数据透视表功能
  13. Spring Bean装配以及依赖注入
  14. android 电子签名设备,[Android]实现电子签名并截屏
  15. linux远程利用漏洞CVE-2016-4484 93次空密码重试就可以获得root权限 影响大多数Linux版本...
  16. 马云:阿里巴巴要培养更多的京东并让这些企业挣钱
  17. Linux下安装window xp虚拟机
  18. 前端Base64编码(兼容IE8)
  19. ios基础篇—图标尺寸选择 AppIconLaunchImage
  20. 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放

热门文章

  1. UC浏览器首页滑动动画实现
  2. 一代少年黑客菜霸的传奇,曾调戏天涯吊打腾讯
  3. Packet Tracer - 排除 HSRP 故障
  4. 一阶电路实验报告心得_电路实训心得体会
  5. 快速摆脱在线扩容难的噩梦?
  6. 织梦cms是什么-织梦CMS免费搭建工具只需要输入域名
  7. 雷电模拟器重置开机密码
  8. 计算机flash听课记录范文,听课记录5篇
  9. Cycle3-Group1
  10. 四年嵌入式技术沉淀,处女作《STM32CubeMX系列实战教程》诞生