• 大小: 1.87MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-02
  • 语言: 其他
  • 标签: dash  

资源简介

基于dash协议,根据客户端网络带宽情况,视频自适应切换

资源截图

代码片段和文件信息

#
#based on python-ebml and the example of Carson McDonald
#
#Created by Benjamin Rainer and Stefan Lederer

previous_offset = 0
video_file = ““
is_first = 0
from ebml.schema import EBMLDocument UnknownElement CONTAINER BINARY
def fill_video_info(element offset video_info):
  global previous_offset
  global video_file
  global is_first
  if element.name == ‘Duration‘:
    video_info[‘duration‘] = element.value
 
  if element.name == ‘DisplayWidth‘:
    video_info[‘width‘] = element.value
 
  if element.name == ‘DisplayHeight‘:
    video_info[‘height‘] = element.value
 
  if element.name == ‘FileMimeType‘:
    video_info[‘mimetype‘] = element.value

  if element.name == ‘Cluster‘:
    if is_first == 0:
       video_info[‘segments‘].append(‘se>se>‘)
       video_info[‘segments‘].append(‘‘)
       is_first = is_first + 1
    else:
       video_info[‘segments‘].append(‘‘)
    

  if element.name == ‘Cluster‘:
    previous_offset = offset

  
  if element.type == CONTAINER:
    for sub_el in element.value:
      fill_video_info(sub_el offset + element.head_size video_info)
      offset += sub_el.size
 
if __name__ == ‘__main__‘:
  import sys
  import json
  import os
  import xmlrpclib;
  mod_name _ cls_name = ‘ebml.schema.matroska.MatroskaDocument‘.rpartition(‘.‘)
  try:
    doc_mod = __import__(mod_name fromlist=[cls_name])
    doc_cls = getattr(doc_mod cls_name)
  except ImportError:
    parser.error(‘unable to import module %s‘ % mod_name)
  except AttributeError:
    parser.error(‘unable to import class %s from %s‘ % (cls_name mod_name))
  global video_file
  video_info = {}
  video_info[‘filename‘] = sys.argv[1]
  video_file = sys.argv[1]
  video_info[‘mimetype‘] = ‘video/webm‘
  video_info[‘total_size‘] = os.stat(sys.argv[1]).st_size
  video_info[‘segments‘] = []
  video_info[‘segmentduration‘] = sys.argv[2]
  video_info[‘baseurl‘] = sys.argv[4]
  video_info[‘minBufferTime‘] = sys.argv[3]
    
  with open(sys.argv[1] ‘rb‘) as stream:
    doc = doc_cls(stream)
    offset = 0
    for el in doc.roots:
      fill_video_info(el offset video_info)
      offset += el.size
  print ‘seURL>‘ + video_info[‘baseurl‘] + ‘seURL>‘
  print ‘
  for el in video_info[‘segments‘]:
     print el
  print ‘‘
  print ‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-21 14:19  DASH-JS-master\
     文件        6148  2014-07-21 14:19  DASH-JS-master\.DS_Store
     文件       18356  2014-07-21 14:19  DASH-JS-master\bigbuckbunny_mp.mpd
     文件        3001  2014-07-21 14:19  DASH-JS-master\create_mpd_segment_info.py
     目录           0  2014-07-21 14:19  DASH-JS-master\dash-js\
     文件        6148  2014-07-21 14:19  DASH-JS-master\dash-js\.DS_Store
     文件        5599  2014-07-21 14:19  DASH-JS-master\dash-js\DASHttp.js
     文件        4984  2014-07-21 14:19  DASH-JS-master\dash-js\adaptationlogic.js
     文件        2529  2014-07-21 14:19  DASH-JS-master\dash-js\bandwidth.js
     文件        5506  2014-07-21 14:19  DASH-JS-master\dash-js\basebuffer.js
     文件        1125  2014-07-21 14:19  DASH-JS-master\dash-js\buffer.js
     文件        2437  2014-07-21 14:19  DASH-JS-master\dash-js\dash.js
     文件         208  2014-07-21 14:19  DASH-JS-master\dash-js\dashPlayerVars.js
     文件        1600  2014-07-21 14:19  DASH-JS-master\dash-js\eventHandlers.js
     文件        8206  2014-07-21 14:19  DASH-JS-master\dash-js\fplot.js
     文件        2453  2014-07-21 14:19  DASH-JS-master\dash-js\mediaSourceAPIAdaptation.js
     文件        5298  2014-07-21 14:19  DASH-JS-master\dash-js\mediaSourceBuffer.js
     文件       13965  2014-07-21 14:19  DASH-JS-master\dash-js\mpdParser.js
     文件        1885  2014-07-21 14:19  DASH-JS-master\dash-js\rate_measurement.js
     文件        3285  2014-07-21 14:19  DASH-JS-master\dash-js\timeBuffer.js
     文件        1709  2014-07-21 14:19  DASH-JS-master\dashtest.html
     目录           0  2014-07-21 14:19  DASH-JS-master\ebml\
     文件          41  2014-07-21 14:19  DASH-JS-master\ebml\__init__.py
     文件         203  2014-07-21 14:19  DASH-JS-master\ebml\__init__.pyc
     文件       14438  2014-07-21 14:19  DASH-JS-master\ebml\core.py
     文件       16224  2014-07-21 14:19  DASH-JS-master\ebml\core.pyc
     文件        1553  2014-07-21 14:19  DASH-JS-master\ebml\create_playlist.py
     目录           0  2014-07-21 14:19  DASH-JS-master\ebml\schema\
     文件          89  2014-07-21 14:19  DASH-JS-master\ebml\schema\__init__.py
     文件         303  2014-07-21 14:19  DASH-JS-master\ebml\schema\__init__.pyc
     文件        5888  2014-07-21 14:19  DASH-JS-master\ebml\schema\base.py
............此处省略30个文件信息

评论

共有 条评论