下载m3u8视频及在Linux下将ts合并为mp4格式

背景

在爬取视频时偶尔会遇见m3u8格式的视频链接,视频下载后为多个ts文件,下面分享如何下载m3u8格式视频以及在Linux下将ts文件合成mp4
文件。

m3u8格式链接解析

url = xxxxx.m3u8

#获取m3u8文件的文本信息
all_content = requests.get(url=url, verify=False).text
#解析文本信息
file_line = all_content.split("\n")
if file_line[0] != "#EXTM3U":
    raise BaseException(u'非M3U8的链接')
else:
    unknow = True
    for index, line in enumerate(file_line):
        try:
            if "#EXTINF" in line:
                unknow = False
  
                pd_url = 'http://v2.ricebook.com' + '/' + file_line[index + 1]
                res = requests.get(pd_url, verify=False)
                c_fule_name = str(file_line[index + 1]).split('/')[-1]
                with open(download_path + '/' + c_fule_name, 'ab') as f:
                    f.write(res.content)
                    f.flush()
                print('下载完成')
        except Exception as e:
            print(e)

下载完成后是多个ts文件,播放器也是可以播放的,可以将多个ts文件合成一个mp4文件。

Linux下合并ts文件

在windows下可以直接使用copy,将ts合成mp4,但如果要部署到服务器就不行了,下面介绍使用ffmpeg进行合并(windows和Linux下都可使用),如何下载安装请自行搜索。

#ts文件绝对路径
 ts_path = xxx/xxx   
 #读取ts文件夹下所有的ts文件
 path_list = os.listdir(ts_path)
 #对文件进行排序
 path_list.sort()
 #将排序后的ts的绝对路径放入列表中
 li = [os.path.join(ts_path,filename) for filename in path_list]
 #类似于[001.ts|00.2ts|003.ts]
 input_file = '|'.join(li)
 #指定输出文件名称
 output_file = ts_path + '.mp4'
 #使用ffmpeg将ts合并为mp4
 command = 'ffmpeg -i "concat:%s" -acodec copy -vcodec copy -absf aac_adtstoasc %s'%    (input_file,output_file)
 #指行命令
 os.system(command)

得到mp4文件之后原来ts文件夹不需要也可以删除

def delete_ts(ts_path):
    try:
        shutil.rmtree(ts_path)
        print('ts文件已经删除')
    except:
        print('ts文件删除失败')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击下载 Demo 一、 M3U8文件简介 M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个...
    张聪_2048阅读 32,056评论 5 30
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,037评论 3 119
  • 我知道再过十年、二十年、三十年、四十年、五十年,我会庆幸自己写过这篇文章。 大学生活真的就要结束了…… 有很多欢喜...
    杨书研阅读 3,273评论 6 11
  • 前两天天马行空的在回忆里面搜寻了一些东西拼凑出的文字似乎吓到了neyo哥哥。所以今天不再写那些了。(还是希望以后可...
    Ting_t阅读 2,972评论 0 0
  • 年轻时不懂找那一半要看原生家庭,只觉得脾气好就行,而原生家庭的劣性在多年以后便逐渐暴露,自私、自负、狂妄,看不...
    锦官居士阅读 851评论 0 0