亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Django 中使用流響應處理視頻的方法

2020-02-15 22:28:45
字體:
來源:轉載
供稿:網友

起步

利用 html5 的 <video> 標簽可以播放:

<video width="320" height="240" controls> <source src="/static/video/demo.mp4" type="video/mp4"> 您的瀏覽器不支持Video標簽。</video>

但是這樣的方式,視頻中的進度條無法使用,而且以靜態文件方式返回的話,后臺的程序會占用大量的內存。

使用響應流的方式能很好的解決這兩個問題。

StreamingHttpResponse

大多數 Django 響應使用 HttpResponse 。這意味著響應的主體內置在內存中,并以單件形式發送到 HTTP 客戶端。而如果用 StreamingHttpResponse 的方式則可以以 chunks (部分塊)的方式返回。一個很簡單的例子就是:

from django.http import StreamingHttpResponsedef hello():  yield 'Hello,'  yield 'there!'def test(request):  return StreamingHttpResponse(hello)

根據 WSGI 協議中的,當服務器調用時,應用程序對象必須返回一個可迭代的,產生零個或多個字節串。因此我們可以通過給服務器提供生成器來完成流響應的功能。

常見的使用 StreamingHttpResponse 是一些大文件的下載等,利用它還能完成斷點續傳的功能。

視頻流

使用視頻流時可以從請求頭部中獲得起始字節數。

這字段似乎是瀏覽器自動提供的,因為html代碼中,我只需要改下視頻的 src 的從靜態地址變成路由方式而已。對于響應體而言,也要提供響應體返回的塊的一個范圍:

Content-Range 分別表示了 起始字節號-終止字節號/文件總字節 ,該響應體的內容包含了文件該范圍內的內容。處理視頻流的代碼如下:

import reimport osfrom wsgiref.util import FileWrapperfrom django.http import StreamingHttpResponsedef file_iterator(file_name, chunk_size=8192, offset=0, length=None):  with open(file_name, "rb") as f:    f.seek(offset, os.SEEK_SET)    remaining = length    while True:      bytes_length = chunk_size if remaining is None else min(remaining, chunk_size)      data = f.read(bytes_length)      if not data:        break      if remaining:        remaining -= len(data)      yield datadef stream_video(request, path):  """將視頻文件以流媒體的方式響應"""  range_header = request.META.get('HTTP_RANGE', '').strip()  range_re = re.compile(r'bytes/s*=/s*(/d+)/s*-/s*(/d*)', re.I)  range_match = range_re.match(range_header)  size = os.path.getsize(path)  content_type, encoding = mimetypes.guess_type(path)  content_type = content_type or 'application/octet-stream'  if range_match:    first_byte, last_byte = range_match.groups()    first_byte = int(first_byte) if first_byte else 0    last_byte = first_byte + 1024 * 1024 * 8    # 8M 每片,響應體最大體積    if last_byte >= size:      last_byte = size - 1    length = last_byte - first_byte + 1    resp = StreamingHttpResponse(file_iterator(path, offset=first_byte, length=length), status=206, content_type=content_type)    resp['Content-Length'] = str(length)    resp['Content-Range'] = 'bytes %s-%s/%s' % (first_byte, last_byte, size)  else:    # 不是以視頻流方式的獲取時,以生成器方式返回整個文件,節省內存    resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type)    resp['Content-Length'] = str(size)  resp['Accept-Ranges'] = 'bytes'  return resp            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97在线精品视频| 亚洲成人1234| 亚洲欧美第一页| 欧美亚洲成人网| 日本精品一区二区三区在线播放视频| 中文字幕视频一区二区在线有码| 日韩免费在线免费观看| 高清欧美性猛交xxxx黑人猛交| 国产精品色婷婷视频| 国产欧美精品一区二区| 欧美性少妇18aaaa视频| 精品久久久久久久久久久| 欧美性色19p| 欧美日本在线视频中文字字幕| 日韩资源在线观看| 亚洲毛片一区二区| 66m—66摸成人免费视频| 在线视频欧美性高潮| 日韩高清人体午夜| 日韩经典中文字幕| 亚洲精品福利资源站| 欧美一区亚洲一区| 国产精品色婷婷视频| 欧美激情中文字幕在线| 久久久久亚洲精品| 亚洲色图色老头| 国产精品亚洲美女av网站| 97精品久久久| 国产在线高清精品| 日韩av在线影视| 精品国产一区久久久| 成人高h视频在线| 日韩精品免费电影| 日本中文字幕不卡免费| 伊人av综合网| 福利视频一区二区| 国产亚洲精品久久久久久| 这里只有精品在线观看| 欧美国产精品日韩| 亚洲精品在线不卡| 在线观看成人黄色| 日韩av第一页| 少妇av一区二区三区| 麻豆成人在线看| 夜夜嗨av色一区二区不卡| 亚洲精品国产欧美| 欧美日韩不卡合集视频| 国产精品高潮呻吟久久av无限| 国产精品人成电影| 欧美老少做受xxxx高潮| 国产原创欧美精品| 91久久国产综合久久91精品网站| 欧美一乱一性一交一视频| 狠狠做深爱婷婷久久综合一区| 国产欧美日韩免费看aⅴ视频| 日韩欧美在线播放| 国产精品精品久久久| 日本久久久久久久久| 97国产精品免费视频| 国产精品九九久久久久久久| 欧美在线激情网| 91tv亚洲精品香蕉国产一区7ujn| 中文综合在线观看| 久久免费观看视频| 亚洲色图综合网| 欧美最顶级丰满的aⅴ艳星| 日韩在线观看免费网站| www国产91| 日韩国产在线播放| 亚洲国产高潮在线观看| 欧美久久精品午夜青青大伊人| 亚洲国产精品久久91精品| 欧美成人h版在线观看| 亚洲精品福利资源站| 亚洲色图第一页| 亚洲aa在线观看| 97视频色精品| 国产成人精品免费视频| 亚洲视频在线免费观看| 亚洲精品小视频| 亚洲精品乱码久久久久久金桔影视| 欧美俄罗斯乱妇| 国产精品成人av性教育| 国产亚洲人成网站在线观看| 青青草成人在线| 成人欧美一区二区三区在线| 亚洲第五色综合网| 精品久久久久久久大神国产| 国产在线999| 欧美激情videoshd| 一区二区三区视频在线| 久久在精品线影院精品国产| 色综合视频一区中文字幕| 亚洲视频一区二区三区| 国内外成人免费激情在线视频网站| 日韩精品极品视频免费观看| 久久夜色精品亚洲噜噜国产mv| 国产欧美一区二区三区在线看| 成人性生交大片免费看视频直播| 北条麻妃99精品青青久久| 国产91在线播放| 不卡在线观看电视剧完整版| 色av中文字幕一区| 久久亚洲精品中文字幕冲田杏梨| 国产精品久久久久久婷婷天堂| 精品视频久久久久久| 国产精品亚洲美女av网站| 日韩欧美在线视频观看| 成人久久久久爱| 国产精品一区二区三区毛片淫片| 日韩欧美视频一区二区三区| 欧美黄色www| 久久精品色欧美aⅴ一区二区| 成人a在线观看| 伊人久久久久久久久久久久久| 亚洲裸体xxxx| 成人国产精品一区| 欧美激情亚洲精品| 亚洲一区二区在线| 日韩视频在线免费| 国产精品香蕉av| 欧美日韩加勒比精品一区| 久久视频免费观看| 久久精视频免费在线久久完整在线看| 精品国产一区二区三区久久| 欧美丝袜第一区| 亚洲性生活视频| 成人激情在线观看| 综合av色偷偷网| 欧美疯狂性受xxxxx另类| 91国产高清在线| 国产九九精品视频| 97视频在线观看免费高清完整版在线观看| 日韩成人久久久| 日本高清视频精品| 欧美精品在线播放| 秋霞午夜一区二区| 蜜臀久久99精品久久久久久宅男| 久久精品国产2020观看福利| 成人网址在线观看| 国产精品综合网站| 欧美专区国产专区| 欧美视频在线观看 亚洲欧| 国产suv精品一区二区三区88区| 青青草成人在线| 欧美日韩第一页| 国产精品嫩草影院一区二区| 国产欧美日韩免费看aⅴ视频| 日韩亚洲精品视频| 久久中文字幕在线| 精品国内自产拍在线观看| 91久久国产婷婷一区二区| 91爱视频在线| 国产在线精品播放| 亚洲天天在线日亚洲洲精| 日韩欧美在线播放| 精品少妇v888av| 久久亚洲精品一区| 神马久久久久久| 亚洲系列中文字幕| 国产精品久久久久久久久借妻| 久久夜精品va视频免费观看| 97在线观看免费高清| 国产综合视频在线观看|