LVS 《視頻生產(chǎn)環(huán)境下的播放體驗》專題PPT反稿

上周六講完了,官方錄像、會場記錄還沒出。先放PPT和簡單的演講大綱。反正我自己的場,不太涉及版權(quán)問題。但是肯定沒人家官方記錄的好。
Que一下官網(wǎng):https://www.livevideostack.cn/ 大家可以實時關(guān)注下新的動態(tài)。下一場大會在舊金山。估計你們也去不了(反正我也去不了)。
PS: 斗魚《HEVC Web解碼》和B站的《視頻質(zhì)量評價》專題也非常有趣。可惜B站的PPT確定不公開了。至于B站圓桌專題。。并不是很技術(shù)。有興趣當(dāng)CTO的可以康康。

言歸正傳




用戶上傳音頻/視頻文件,邀請協(xié)同人員。審查片子。修改片子。上傳更新版本
核心功能點
版本管理/流程控制
協(xié)作:審看、批注
傳輸/存儲/轉(zhuǎn)碼/加密


用戶工作流
用戶工作流存在共通點和機(jī)會。在制作環(huán)節(jié)切入,需要盡量符合他們在工作棧上的使用習(xí)慣和要求。
高度依賴工作棧、同步工具不能完全取代工作棧。就像Git無法取代IDE和編程語言。
不同行業(yè)在使用過程中,工作流程差別較大。


視頻工作棧
要求:精準(zhǔn)控制到幀
下半部分:標(biāo)注、時間軸控制區(qū)
上半部分:資源管理區(qū)、視頻播放區(qū)、參數(shù)調(diào)整區(qū)(主視角)


音頻工作棧:
單軌:波形圖、電平、頻譜
多軌:軌道、軌道波形、軌道電平和軌道效果
右側(cè):(主視角)
左側(cè):參考視頻、資源、特效資源

其他類型工作棧
……
字幕:字幕環(huán)節(jié)
特效處理:視頻制作環(huán)節(jié)
文檔處理:劇本創(chuàng)意環(huán)節(jié)

用戶對播放器的要求:
使用習(xí)慣不同、不可以有專業(yè)性術(shù)語錯誤。
音頻、視頻需要更精準(zhǔn)的控制:精確到幀、快速seek到有語音的時間點、波形判斷是否符合交片要求(重要)
支持音視頻和音視頻以外所有相關(guān)格式的播放。如字幕、文檔、特效等。

與傳統(tǒng)播放器的區(qū)別
傳統(tǒng)播放器:
用戶可見部分:看、播放控制、彈幕等
用戶不可見部分:緩存控制、解封裝、解碼、播放日志等
協(xié)作播放器
用戶可見部分:看、精準(zhǔn)播放控制、批注展示
用戶不可見部分:緩存控制、解封裝、解碼、音頻視頻參數(shù)解析、格式支持、播放日志等




內(nèi)核層
視頻解析控制
HLS
私有解密模塊(WASM/NodeAddon)
音頻解析控制
私有解密模塊(WASM/NodeAddon)
波形圖分析模塊
PDF、Image、Subtitle 解析模塊
時間軸管理模塊
單文件
多文件:虛擬時間軸
批注模塊
批注渲染模塊
批注編輯模塊


界面層:
主展示區(qū)
音頻、視頻、PDF、字幕、圖片、特效(預(yù)留,暫時沒做)
進(jìn)度條、批注條
控制條

Ext層:主要負(fù)責(zé)批注展示、音視頻基礎(chǔ)信息展示、批注輸入發(fā)送


之前是記錄了PTS進(jìn)行逐幀播放
出現(xiàn)問題
可變幀率一般是在轉(zhuǎn)碼(用戶管它叫壓制)環(huán)節(jié)產(chǎn)生、實際在制作中工作棧都是不可變幀率進(jìn)行制作。用戶習(xí)慣上其實是需要時間間隔相同的逐幀播放
一個例子:
蝴蝶的一個運動曲線,在制作環(huán)節(jié),并不是勻速運動,而是做的一個貝塞爾曲線,讓蝴蝶更為生動。
審看環(huán)節(jié),特效師剪輯師再檢查問題時,逐幀播放看的是運動位置間隔是否正確。先距離短、再距離長、再距離短。
可變幀率的模式下,會對用戶的判斷造成一定影響
按照目標(biāo)FPS等時seek


音頻:波形圖采樣
最初是我們比較習(xí)慣的降低采樣率做的一個小的wave文件讀取渲染。
問題:
音頻采樣是還原音波。而工作棧中,縮小后展示的是波峰波谷的數(shù)值,一邊用戶更好的判斷響度值。而直接降低采樣無法還原到工作棧的顯示效果
解決:
服務(wù)端魔改FFMPEG取區(qū)段最大值
前端取區(qū)段最大值


上線后發(fā)現(xiàn)在播放過程中有的時候會模糊
問題成因
WebGL渲染區(qū)間在[-1,1],而單個線的判斷實際是個小數(shù)的[x.y]對應(yīng)到實際渲染時,不一定剛好是那個像素點完整展示單個線。造成實際渲染時,顯卡給出的顯示是算了兩條線的色彩均值,造成模糊。
解決
根據(jù)實際像素,調(diào)整渲染


注展示:
位置差異:服務(wù)端壓縮時候可能會改變分辨率,需要記錄的是百分比。
時間差異:部分視頻本身有個 StartTime、轉(zhuǎn)碼后HLS的音頻StartTime 和視頻StartTime不一致,為了降低首幀時間,取得他倆的最小值,這里需要重新找準(zhǔn)。目前是以首個視頻幀的時間


總結(jié)展望
還有些模塊沒寫:如特效模塊、
還有些問題沒有解決:
字幕渲染時候,字體不一定存在。還原的效果就和字幕工具中的不一致。
字幕特效(ASS)取的絕對定位。渲染大小可能產(chǎn)生差異。需要取源文件的寬高重新算比例。


最后 群:711929228???
進(jìn)群問題:OpenGL shader最常用的兩個Shader ??
vertext?fragment (一個算頂點的,一個算顏色的。)
PS:有問題的話,麻煩私戳我時候,給個報錯信息,以及源文件~謝謝啦~