从m3u8链接下载视频片段

时间:2015-11-16 18:58:26

标签: python video web-scraping m3u8

我一直在尝试使用python学习网页抓取,现在正在练习下载某个烘焙节目(Anna Olson' s烘焙 - http://www.foodnetwork.ca/shows/bake-with-anna-olson/episode-guide/)的剧集,这些节目从他们的网站流出。看看firebug的网络流量,我发现每个剧集都是以小段的形式下载的,并以m3u8文件开头。 我写了一些代码来下载m3u8文件,然后将每个文件作为文本文件打开并打开并将每个段保存到mp4文件中。完成此操作后,我已经获得了完整大小的视频文件(~144MB),但是当我打开它们时,即使播放器说它们有持续时间,它们也不会播放。

以下是打开每个文本文件的代码部分,从te文件下载网址并将其保存到具有相同名称的mp4文件

import requests
import os
from os.path import isfile, join

folder = r"C:\food\videos\Bake"
files=[f for f in os.listdir(folder) if isfile(join(folder,f))]

for episode in files:
    fepisode = open(join(folder,episode), 'r')
    urls =  [link for link in fepisode.readlines() if link.startswith("http:")]
    video_file = open(join(folder,episode.replace("txt","mp4")), "wb")
    for url in urls:
        video_link = requests.get(url)
        if video_link.status_code ==200:
            for chunk in video_link.iter_content(100):
                video_file.write(chunk)
    video_file.close()

以下是其中一个m3u8文件的示例链接:

http://foodnetwork-vh.akamaihd.net/i/501/859/FOOD_BakeWithAnna_E201b_,medium,highest,high,low,lowest,_16x9.mp4.csmil/index_2_av.m3u8?null=

我试图了解播放视频所需的内容。 感谢

1 个答案:

答案 0 :(得分:0)

您是否尝试过requests.get(url, stream=True)

另外,试试:

for chunk in video_link.iter_content(chunk_size=100): 
    if chunk: # filter out keep-alive new chunks
        video_file.write(chunk)
video_file.close()