移動端自動播放視頻之TS視頻

ts簡介

TS(Transport Stream澄暮,傳輸流)是一種封裝的格式蝌以,它的全稱為MPEG2-TS糊啡。是一種視頻格式,一般用于實時流媒體和廣播電視領域豪娜。

Ts與Mp4優(yōu)勢對比

Mp4IOS下可以自動播放餐胀,但是在部分安卓機下無法自動播放產(chǎn)生黑屏。
Ts可實現(xiàn)自動播放瘤载,IOS8以上和Android4.4以上都支持否灾。
基于自動播放的優(yōu)勢,本妹子在本廠的618大促主會場及各個活動需求上就用了Ts技術(shù)鸣奔。先show下具體效果:

renjialun.gif

生成ts視頻

需要下ffmpeg來將Mp4轉(zhuǎn)化成Ts視頻墨技。下面下載操作如下所示:
mac下可以運行

 brew install ffmpeg

windows下可以在https://ffmpeg.zeranoe.com/builds/中下載。

然后用ffmpeg 轉(zhuǎn)化

ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -codec:a mp2 -b 0 out.ts

還可以控制視頻大锌胬辍(-s)扣汪,幀速率(-r),視頻比特率(-b:v)锨匆,音頻比特率(-b:a)私痹,音頻通道數(shù)(-ac),采樣率(-ar ) 以及更多统刮。 有關(guān)詳細信息紊遵,請參閱ffmpeg文檔
如下所示

ffmpeg -i in.mp4 -f mpegts \
    -codec:v mpeg1video -s 960x540 -b:v 1500k -r 30 -bf 0 \
    -codec:a mp2 -ar 44100 -ac 1 -b:a 128k \
    out.ts
  • 注意:盡量用高質(zhì)量的MP4來轉(zhuǎn)成Ts侥蒙,如果在手機上顯示暗膜,采用比特率1500k即可。ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -b:v 1500k -codec:a mp2 out.ts

播放ts視頻

推薦用jsmpeg-player,它是基于jsmpeg封裝的npm包鞭衩。
最好準備一個封面学搜,將視頻蓋住,等視頻播發(fā)再去掉封面论衍,詳情如下:

import React, { useEffect, useState, useRef } from 'react';
import './index.less';
import JSMpeg from '@cycjimmy/jsmpeg-player';

export default function VideoTs(props) {
  //封面
  const cover ='https://img11.360buyimg.com/imagetools/jfs/t1/105707/30/17596/32160/5e8c8ae6Ee2bfd8db/1ef4084de9ec103f.jpg'
  const tsSrc='https://storage.360buyimg.com/xingdianzhang/%E6%B5%8B%E8%AF%95ts.ts'
  const hdVideo = useRef(null);
  var [isCover, setIsCover] = useState(true);//是否用封面覆蓋
  useEffect(() => {
    initTs()
  }, [])

  function initTs() {
    let canvas = hdVideo.current.querySelector('.hdVideo-ts');
    canvas.style.width = '0px'
    new JSMpeg.VideoElement(canvas, tsSrc, {
      canvas,
      autoplay: true,
      loop: true,
      progressive: false,//是否為chunk
      control: false,
      poster: cover,
      preserveDrawingBuffer: true,
      decodeFirstFrame: true,
      disableGl: true,
    }, {
      audio: false, //靜音
      onPlay: () => {
        canvas.style.width = hdVideo.current.clientWidth + 'px'
        setIsCover(false)
      }
    })
  }
  
  return (
    <div ref={hdVideo} className='hdVideo'>
      {isCover ? <img className="hdVideo-image" src={cover} /> : null}
      <canvas className="hdVideo-ts"></canvas> 
    </div>
  );
}
<!--index.less-->
.hdVideo{
    width: 750px;
    height: 400px;
    .hdVideo-image{
        width: 100%;
        height: 100%;
    }
    .hdVideo-ts{
        width: 100%;
        height: 100%;
    }
}

注意的坑

兼容性問題

Ts存在兼容問題瑞佩,系統(tǒng)版本 < android7 || 系統(tǒng)版本 < ios 11, Ts不兼容,可以以圖片第一幀為兜底圖片

Apple自動播放沒有聲音

Apple設備會自動播放無聲音的聲音坯台,您需要引導用戶單擊視頻圖標右下角的視頻以解鎖聲音炬丸。 (在非自動播放模式下沒有類似問題)
安卓機型聲音沒有問題。

npm插件

根據(jù)兼容性問題蜒蕾,本妹子寫了個自動播放視頻插件jdyfe-tpl-videots稠炬,歡迎小伙伴們使用。

使用方法

cover是指兜底圖片咪啡,當視頻加載或不兼容TS時顯示首启。
tsSrcTS視頻路徑。

import VideoTs from '@zero/jdyfe-tpl-videots';
import React, { Component } from 'react'
export default function Home(props) {
  return (
    <VideoTs className='tsClass' cover='https://img30.360buyimg.com/ling/jfs/t1/111077/7/8742/256800/5ed202f4Ef1221073/cf0fcf7a6c39eb3d.jpg' 
    tsSrc='http://storage.360buyimg.com/icepublic/rennjialun.ts'  />
  )
}

Happy coding .. :)

相關(guān)鏈接

博客原文

jdyfe-tpl-videots包

https://www.reneelab.com.cn/what-is-ts-file-and-how-to-play-ts-video.html

ffmpeg文檔

jsmpeg-player包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撤摸,一起剝皮案震驚了整個濱河市毅桃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌准夷,老刑警劉巖钥飞,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冕象,居然都是意外死亡代承,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門渐扮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來论悴,“玉大人,你說我怎么就攤上這事墓律“蚬溃” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵耻讽,是天一觀的道長察纯。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么饼记? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任香伴,我火速辦了婚禮,結(jié)果婚禮上具则,老公的妹妹穿的比我還像新娘即纲。我一直安慰自己,他們只是感情好博肋,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布低斋。 她就那樣靜靜地躺著,像睡著了一般匪凡。 火紅的嫁衣襯著肌膚如雪膊畴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天病游,我揣著相機與錄音唇跨,去河邊找鬼。 笑死礁遵,一個胖子當著我的面吹牛轻绞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佣耐,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼政勃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兼砖?” 一聲冷哼從身側(cè)響起奸远,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讽挟,沒想到半個月后懒叛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡耽梅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年薛窥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眼姐。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡诅迷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出众旗,到底是詐尸還是另有隱情罢杉,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布贡歧,位于F島的核電站滩租,受9級特大地震影響赋秀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜律想,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一猎莲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜘欲,春花似錦益眉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽年碘。三九已至澈歉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屿衅,已是汗流浹背埃难。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涤久,地道東北人涡尘。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像响迂,于是被迫代替她去往敵國和親考抄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345