注:__dashjs_factory_name定义当前模块名称
/**index.js*/
import { MediaPlayer } from './index_mediaplayerOnly';//视频播放
import { supportsMediaSource } from './src/streaming/utils/Capabilities';//功能类
import MetricsReporting from './src/streaming/metrics/MetricsReporting';//流指标报告
import Protection from './src/streaming/protection/Protection';//dashjs流保护
import MediaPlayerFactory from './src/streaming/MediaPlayerFactory';//工厂模式处理视频播放
import Debug from './src/core/Debug';//日志类
//将类型挂载在全局dashjs上
dashjs.Protection = Protection;
dashjs.MetricsReporting = MetricsReporting;
dashjs.MediaPlayerFactory = MediaPlayerFactory;
dashjs.Debug = Debug;
dashjs.supportsMediaSource = supportsMediaSource;
export default dashjs;
export { MediaPlayer, Protection, MetricsReporting, MediaPlayerFactory, Debug, supportsMediaSource };
/**index_mediaplayerOnly.js*/
import MediaPlayer from './src/streaming/MediaPlayer';//视频播放类
import FactoryMaker from './src/core/FactoryMaker';//工厂模式
import Debug from './src/core/Debug';//日志类
import { getVersionString } from './src/core/Version';//版本控制
import { } from 'es6-promise/auto';
// Shove both of these into the global scope
var context = (typeof window !== 'undefined' && window) || global;//获取当前上下文对象
var dashjs = context.dashjs;//将dashjs赋值在当前上下文对象上
if (!dashjs) {
dashjs = context.dashjs = {};
}
//挂载当前属性到dashjs上
dashjs.MediaPlayer = MediaPlayer;
dashjs.FactoryMaker = FactoryMaker;
dashjs.Debug = Debug;
dashjs.Version = getVersionString();
export default dashjs;
export { MediaPlayer, FactoryMaker, Debug};
对外提供工厂模式处理各个类的实例化
/**FactoryMaker.js*/
instance = {
extend: extend,
getSingletonInstance: getSingletonInstance, //获取对应单列模块对象
setSingletonInstance: setSingletonInstance,//向对应的类单列模块className下注入实例instance
deleteSingletonInstances: deleteSingletonInstances,//删除对象单列模块对象
getSingletonFactory: getSingletonFactory,//工厂获取对应单列模块对象
getSingletonFactoryByName: getSingletonFactoryByName,
updateSingletonFactory: updateSingletonFactory,
getClassFactory: getClassFactory,
getClassFactoryByName: getClassFactoryByName,
updateClassFactory: updateClassFactory,
};
const instance = {
on: on,//事件注入 on(type, listener, scope, options = {})
off: off,//事件取消 off(type, listener, scope)
trigger: trigger,//事件触发 trigger(type, payload = {}, filters = {})
reset: reset//重置
};
处理视频播放配置等一系列方法
对应API中文文档
对应API英文文档
instance = {
initialize,//初始化播放器
setConfig,//使用控制器配置媒体播放器
on,//使用 on 方法侦听在 MediaPlayer.events 中找到的公共事件
off,//使用 off 方法删除在 MediaPlayer.events 中找到的公共事件的侦听器
extend,//此方法应用于扩展或替换内部 dash.js 对象
attachView,//使用此方法附加一个 HTML5 VideoElement 以供 dash.js 操作
attachSource,//使用此方法将源 URL 设置为有效的 MPD 清单文件或先前下载并解析的清单对象 可选,还可以提供保护信息
isReady,//基于定义的视频元素和 MPD 源的 MediaPlayer 的就绪状态
play,//play 方法启动由该attachSource()方法定义的媒体的播放
isPaused,//返回一个布尔值,指示视频元素是否已暂停
pause,//此方法将在本机视频元素上调用暂停
isSeeking,//返回一个布尔值,指示媒体是否正在寻找新位置
isDynamic,//返回一个布尔值,指示媒体是否处于动态过程中
seek,//设置附加视频元素的 currentTime 属性。如果是带有timeShiftBufferLength的直播流,那么DVR窗口偏移量会自动计算
setPlaybackRate,//使用此方法设置本机视频元素的播放速率
getPlaybackRate,//返回当前播放速率
setMute,//使用此方法设置本机 Video Element 的静音状态。采用一个布尔值来确定音频是否静音。如果音频静音,则为 true,否则为 false
isMuted,//一个布尔值,用于确定音频是否静音
setVolume,//表示音频音量的双精度值,从 0.0(静音)到 1.0(最响)
getVolume,//返回当前音量,从 0.0(静音)到 1.0(最响)
time,//播放头的当前时间,以秒为单位
duration,//媒体播放的持续时间,以秒为单位
timeAsUTC,//使用此方法以绝对值形式获取当前播放头时间,即自 UTC 1970年1 月 1 日午夜以来的时间(以秒为单位)。注意 - 此属性仅对实时流有意义。如果在 play() 开始之前调用,它将返回一个 NaN 值
durationAsUTC,//使用此方法以绝对值形式获取当前持续时间,即自 UTC 1970年1 月 1 日午夜以来的时间(以秒为单位)。注意 - 此属性仅对实时流有意义。
getActiveStream,//此方法返回活动流
getDVRWindowSize,//timeShiftBufferLength(DVR 窗口),以秒为单位
getDVRSeekOffset,//此方法应仅用于具有有效 timeShiftBufferLength(DVR 窗口)的实时流
convertToTimeCode,//将秒转换为时间码(即 300 --> 05:00)的实用方法
formatUTC,//将 UTC 时间戳值转换为有效时间和日期字符串的实用方法
getVersion,//当前版本的 Dash.js
getDebug,//使用此方法访问 dash.js 日志记录类
getBufferLength,//获取缓冲区长度
getTTMLRenderingDiv,//返回通过调用 attachTTMLRenderingDiv() 附加的 Div 实例
getVideoElement,//返回通过调用 attachView() 附加的 Video Element 的实例
getSource,//返回通过调用 attachSource() 附加的源字符串或清单
getCurrentLiveLatency,//返回当前的实时流延迟(以秒为单位)。它是现在时间和播放头的时间位置之间的差异
getTopBitrateInfoFor,//获取最高质量的 BitrateInfo 检查门户限制和允许的最大值。
setAutoPlay,//设置为 false 以防止流在附加视图时自动播放
getAutoPlay,//当前自动播放状态
getDashMetrics,//返回 DashMetrics.js 模块。您可以使用此模块访问存储在 dash.js 中的所有公共指标
getQualityFor,//获取媒体类型视频、音频或图像的当前下载质量。对于视频和音频类型,除非 autoSwitchBitrate 设置为 false,否则ABR规则会在每次新下载之前更新此值。
setQualityFor,//设置媒体类型的当前质量,而不是让 ABR Heuristics 自动选择它。除非将 autoSwitchBitrate 设置为 false,否则此值将被 ABR 规则覆盖。
updatePortalSize,//更新视频元素大小变量应在窗口调整大小(或任何其他时间调整播放器大小)时调用。
enableText,//启用/禁用文本
enableForcedTextStreaming,//启用/禁用文本
isTextEnabled,//如果启用文本,则返回 true,否则返回 false
setTextTrack,//使用此方法可以更改外部时间文本文件和碎片文本轨道的当前文本轨道。使用此方法时无需在视频对象上设置轨道模式即可切换轨道。
getBitrateInfoListFor,//获取比特率信息列表
getStreamsFromManifest,//此方法返回给定清单中所有可用流的列表
getTracksFor,//此方法返回给定媒体类型的所有可用曲目的列表
getTracksForTypeFromManifest,//此方法从给定清单返回给定媒体类型和流信息的所有可用轨道的列表
getCurrentTrackFor,//返回MediaInfo
setInitialMediaSettingsFor,//设置初始轨道的媒体设置。
getInitialMediaSettingsFor,//此方法返回用于选取初始轨道的媒体设置。
setCurrentTrack,//设置当前轨道
addABRCustomRule,//如果正在播放流,则添加自定义 ABR 规则规则将应用于下一个流
removeABRCustomRule,//删除自定义 ABR 规则
removeAllABRCustomRule,//删除所有自定义规则
getAverageThroughput,//返回在 ABR 逻辑中计算的平均吞吐量
retrieveManifest,//允许应用程序检索清单。清单加载是异步的 , 需要应用提供的回调函数
addUTCTimingSource,//允许您为动态流的 UTC 实时边缘检测设置方案和服务器源。如果在清单中定义了 UTCTiming,它将优先于手动添加的任何时间源。
removeUTCTimingSource,//允许您删除 UTC 时间源。schemeIdUri 和 value 都需要匹配 Dash.vo.UTCTiming 属性,以便从数组中删除条目
clearDefaultUTCTimingSources,//允许您清除存储的时间源数组。
restoreDefaultUTCTimingSources,//允许您在调用后恢复默认时间源 clearDefaultUTCTimingSources()
setXHRWithCredentialsForType,//设置特定请求类型的XHR 请求上的 withCredentials是 true 还是 false
getXHRWithCredentialsForType,//获取特定请求 类型的XHR 请求上的 withCredentials是 true 还是 false
getProtectionController,//检测是否包含 Protection 并返回 ProtectionController.js 的实例
attachProtectionController,//将覆盖 dash.js 保护控制器。
setProtectionData,//设置设置保护模块 (DRM) 所需的保护数据。
registerLicenseRequestFilter,//注册许可请求过滤器。这使应用程序能够操纵/覆盖任何请求参数和/或请求数据。
registerLicenseResponseFilter,//注册许可证响应过滤器。这使应用程序能够操作/覆盖响应数据。提供的回调函数应返回一个承诺,
unregisterLicenseRequestFilter,//取消注册许可请求过滤器。
unregisterLicenseResponseFilter,//取消注册许可证响应过滤器。
registerCustomCapabilitiesFilter,//注册自定义功能过滤器。这使应用程序能够过滤要使用的表示。 提供的回调函数应根据是否使用该表示返回一个布尔值。
unregisterCustomCapabilitiesFilter,//取消注册自定义功能过滤器。
setCustomInitialTrackSelectionFunction,
resetCustomInitialTrackSelectionFunction,
attachTTMLRenderingDiv,//使用此方法为 dash.js 附加一个 HTML5 div 以呈现丰富的 TTML 字幕。
getCurrentTextTrackIndex,
provideThumbnail,//在时间位置提供缩略图。这可以是异步的,因此您必须提供回调来检索缩略图信息
getDashAdapter,//返回 DashAdapter.js 模块。
getOfflineController,//检测是否包含 Offline 并返回 OfflineController.js 的实例
getSettings,//获取在播放器上使用的当前设置对象。
updateSettings,//更新在播放器上使用的当前设置对象。任何未指定的内容都不会被修改。
resetSettings,//将设置对象重置为默认值。
reset,//将 MPD 源和视频元素设置为 null。您还可以通过 使用新的源文件调用 attachSource来重置 MediaPlayer 。此调用不会破坏 MediaPlayer。要销毁 MediaPlayer 并释放其所有 内存,请调用 destroy()。
destroy//完全破坏媒体播放器并释放所有内存。
};