1. 點(diǎn)播loop循環(huán)播放結(jié)束不能從頭開(kāi)始播放
? ? 原因:播放結(jié)束時(shí)谍肤,正常應(yīng)該是跳轉(zhuǎn)到時(shí)間點(diǎn)0開(kāi)始繼續(xù)播放尺上,此時(shí)會(huì)觸發(fā)seeking事件瞬沦,而播放器內(nèi)部在此事件加了個(gè)防卡頓定時(shí)器處理蠢壹,問(wèn)題恰恰就出在這邊(函數(shù)_checkAndApplyUnbufferedSeekpoint)超升;此時(shí)判斷緩沖區(qū)的時(shí)候入宦,緩沖區(qū)只有最后一個(gè)緩沖區(qū),這個(gè)緩沖區(qū)可能就保留了視頻的最后一段時(shí)間緩存室琢,此時(shí)這個(gè)定時(shí)器內(nèi)部處理會(huì)將時(shí)間點(diǎn)0重置為該緩沖區(qū)的起始位置時(shí)間點(diǎn)
? ? 解決:定時(shí)器內(nèi)部處理時(shí)判斷時(shí)間點(diǎn)是否為0乾闰,假如是則不進(jìn)行重置處理
2. 限期
? ? function deadline() {
? ??????const d = '1';
? ? ? ? const m = '1';
? ? ? ? const y = '2019';
? ? ? ? const dl = `${y}/${m}/$vqmsmbf`;
? ? ? ? const future = new Date(dl);
? ? ? ? const current = new Date();
? ? ? ? return current > future;
????}
3. 參數(shù)格式化,如[XXX][XXX]XXXX
const formatArguments = (args) => {
? ? let res = args;
? ? if (Array.isArray(args)) {
? ? ? ? const newArgs = args.map((arg) => {
? ? ? ? ? ? if (Object.prototype.toString.call(arg).slice(8, -1) === "Object") {
? ? ? ? ? ? ? ? return JSON.stringify(arg);
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? return arg;
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? const length = newArgs.length;
? ? ? ? if (length <= 1) return newArgs;
? ? ? ? if (length === 2) {
? ? ? ? ? ? res = '[' + newArgs[0] + ']' + newArgs[1];
? ? ? ? } else {
? ? ? ? ? ? res = '[' + newArgs.slice(0, 2).join("][") + ']' + newArgs.slice(2).join('');
? ? ? ? }
? ? }
? ? return res;
}
4 ios低版本Demo運(yùn)行不了
? ? 需要注意的是在低版本系統(tǒng)上盈滴,不要用ES6語(yǔ)法寫(xiě)Demo
5 safari不支持播放多碼率格式的M3U8文件