国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

給數(shù)字人生成加上界面,基于ER-NeRF/RAD-NeRF/AD-NeRF,Gradio框架構(gòu)建WEBUI,使用HLS流媒體,實現(xiàn)邊推理邊播放——之三:在WEBUI中播放m3u8視頻,邊推邊存邊播放

這篇具有很好參考價值的文章主要介紹了給數(shù)字人生成加上界面,基于ER-NeRF/RAD-NeRF/AD-NeRF,Gradio框架構(gòu)建WEBUI,使用HLS流媒體,實現(xiàn)邊推理邊播放——之三:在WEBUI中播放m3u8視頻,邊推邊存邊播放。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

  • 前面兩篇文章講了Gradio輸出日志和ER-NeRF推理的圖轉(zhuǎn)存為ts文件
  • 這篇就講講如何在Gradio中實時的播放服務器生成的m3u8文件
  • 要讓web上能播放,那首先要有個播放器,支持hls協(xié)議的web播放器,有video.js和hls.js等等,原生的video也能播,我這里選用hls.js
  • 除了播放器,還得要讓web前端上能尋找到m3u8文件,也就是要讓gradio能夠支持直接通過url加載到m3u8文件,這涉及到gradio的靜態(tài)文件掛載
  • 我們還需要讓gradio能夠把播放器在我們設計的webui上展示出來,而gradio的組件庫里面是沒有可用加載hls.js腳本的播放器組件的,這里就涉及到我們需要自定義組件

效果

  • 沒有加載播放器時界面:
    er-nerf 開源,數(shù)字人,數(shù)字人webui,gradio構(gòu)建webui,實時推理實時播放,hls實時播放
  • 加載了播放器之后的組件:
    er-nerf 開源,數(shù)字人,數(shù)字人webui,gradio構(gòu)建webui,實時推理實時播放,hls實時播放

實現(xiàn)

首先,我們需要讓gradio能夠通過url加載到我們的m3u8靜態(tài)文件。
為了實現(xiàn)這個目標,我們需要引入FastAPI,使用FastAPI掛載一個靜態(tài)目錄,然后在gradio中掛載FastAPI。

#設置靜態(tài)目錄
app = FastAPI()
dir = os.path.abspath(os.getcwd()) #將當前根目錄作為靜態(tài)目錄
app.mount('/static', StaticFiles(directory=dir), 'static')

將gradio和FastAPI掛載在一起(當前gradio本身是需要支持queue的),參考:https://www.gradio.app/docs/mount_gradio_app

#將fastapi的靜態(tài)目錄和gradio掛載一起
page = page.queue()
app = gr.mount_gradio_app(app, page,path='/')

如此操作之后,就不能再使用gradio的.launch()方法來啟動應用了
launch()啟動之后沒有FastAPI效果,掛載也就白掛了

這里使用Uvicorn來啟動,關于Uvicorn,參考網(wǎng)上資料

uvicorn main-webui:app --port 7861 #端口好不指定默認為8000

啟動之后,我們就可以通過http://127.0.0.1/static/xx/xx/xx.m3u8訪問到視頻索引文件了。

接下來就自定義一個gradio的video組件,讓他把視頻播放出來。
由于視頻的m3u8文件的url是動態(tài)生成的,客戶端只能監(jiān)聽服務器的日志消息,當出現(xiàn)某種特殊消息的時候,客戶端就認為出現(xiàn)了m3u8的地址了,就解析那條消息,獲取到視頻索引文件url,然后構(gòu)建video組件進行播放:
所以,首先改造我們之前的log_out函數(shù),讓他解析特定消息中的m3u8地址,然后向web上輸出一條video的html代碼字符串,我們的前端日志解析代碼讀取到這段html代碼后,就會在界面上特定的位置,將這段代碼渲染出來:

video_div = '<div id="videoDiv" style="width:100%;height:512px;"><video style="width:100%;height:100%;" id="videoDom" controls m3u8="[M3U8URL]"></video></div>'
def log_out(new_log):
    print(new_log)
    if new_log.find('##M3U8##SUCCESS:')>-1:
        #根據(jù)日志輸出的信息處理,提取到m3u8的地址
        video = new_log.replace('##M3U8##SUCCESS:', '')
        video = video_div.replace('[M3U8URL]', video)
        time.sleep(0.7) #讓客戶端有時間來出來視頻顯示
        print('輸出video:'+video)
        return video
    return new_log

然后改造webui上日志輸出功能代碼:
原來的代碼見:給數(shù)字人生成加上界面,基于ER-NeRF/RAD-NeRF/AD-NeRF,Gradio框架構(gòu)建WEBUI,使用HLS流媒體,實現(xiàn)邊推理邊播放——之一:在WEBUI中實時輸出服務器控制臺日志:https://blog.csdn.net/AJian759447583/article/details/133990434

_script = '''
   async()=>{
      .......
      //將hls.js的代碼加入到頁面上
      ......
       //監(jiān)控日志輸出及顯示
       			let video= document.querySelector("#videoDivCom");
               let output = document.querySelector("#logDivText .border-none");
               if(!output){
                   return false;
               }
               let show = document.querySelector('#logShowDiv .container')
               show.style.height='200px'
               show.style.overflowY='scroll'
               show.innerHTML=""
               Object.defineProperty(output, "value", {
                   set:  function (log) {
                       if(log && log!=''){
                           	if(log.startsWith('<div id="videoDiv"')){
                                     video.innerHTML=log                  
                                }else{
                                    show.innerHTML = show.innerHTML+'<br>'+log
                                    show.scrollTop=show.scrollHeight
                                }
                       }      
                       return this.textContent = log;
                   }
               });
               ......
   }
'''
#在page頁面加載的時候,將自定義的js加載進去
page.load(_js=_script)

如此,頁面上就可以動態(tài)加載到視頻,實現(xiàn)服務器GPU一邊推理CPU一邊轉(zhuǎn)視頻,webui客戶端一邊播放的效果。

那,如果再將這個過程的各個時間點加快,選用更好更快的服務器,然后再把實時TTS整合進來,一個實時根據(jù)文本生成指定聲音并自動推理出指定音頻的數(shù)字人視頻就搞定了!

當然,這其中肯定有一億點點細節(jié)需要處理…
包括我上面的三篇文章,也僅僅是對整體思路的一個大致講解,具體實現(xiàn)上肯定還有一億點點細節(jié)需要處理,前面兩篇文章:文章來源地址http://www.zghlxwxcb.cn/news/detail-778024.html

  • 給數(shù)字人生成加上界面,基于ER-NeRF/RAD-NeRF/AD-NeRF,Gradio框架構(gòu)建WEBUI,使用HLS流媒體,實現(xiàn)邊推理邊播放——之一:在WEBUI中實時輸出服務器控制臺日志:https://blog.csdn.net/AJian759447583/article/details/133990434
  • 給數(shù)字人生成加上界面,基于ER-NeRF/RAD-NeRF/AD-NeRF,Gradio框架構(gòu)建WEBUI,使用HLS流媒體,實現(xiàn)邊推理邊播放——之二:將ndarray內(nèi)存序列圖直接轉(zhuǎn)成ts格式視頻:https://blog.csdn.net/AJian759447583/article/details/133994863

總結(jié)

  • 整體思路很簡單直白,技術上不存在鴻溝
  • 具體細節(jié)上有太多需要探究的內(nèi)容,往往每一步都被某個技術小細節(jié)卡死,然后各種探究各種嘗試,最后一定是經(jīng)過了N多個小時的試驗之后才能解決——當然也有可能還是解決不了
  • 本次運用到的陌生技術,以前沒有接觸過的、不熟悉的:
    1:服務器日志實時輸出到web客戶端(花了大量時間實驗)
    2:python的gradio框架(按官網(wǎng)學習,很好上手)
    3:ffmpeg命令(很復雜,腦殼痛…)
    4:在python中使用ffmpeg的管道(很好理解,但是輸入管道同時輸出也是管道時,花了大量時間調(diào)研、嘗試,最終也沒解決)
    5:gradio的queue和fastapi及靜態(tài)文件(找了一會兒方案,嘗試了個把小時)
    6:hls流媒體協(xié)議(略讀)
    7:m3u8文件格式(細讀)
    8:ts格式媒體文件的封包協(xié)議細節(jié)(ffmpeg轉(zhuǎn)成ts時,VLC播放器音畫正常,hls.js在web上播放只有聲音沒有畫面,解決此問題花了大量時間,嘗試了各種參數(shù),最終確定有效的為:vcodec=‘libx264’, r=25,output_ts_offset=ts_index * 5,hls_time=5,hls_segment_type=‘mpegts’)
  • 待繼續(xù)優(yōu)化的點:python中使用ffmpeg進行管道輸入和管道輸出。目前同時進行管道輸入輸出會出現(xiàn)程序掛起的現(xiàn)象,即使寫入一幀數(shù)據(jù)讀取一幀數(shù)據(jù)也是同樣現(xiàn)象,暫時未解。

到了這里,關于給數(shù)字人生成加上界面,基于ER-NeRF/RAD-NeRF/AD-NeRF,Gradio框架構(gòu)建WEBUI,使用HLS流媒體,實現(xiàn)邊推理邊播放——之三:在WEBUI中播放m3u8視頻,邊推邊存邊播放的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • java代碼實現(xiàn)自動生成數(shù)據(jù)庫表er圖

    最近有同事看到字節(jié)跳動產(chǎn)品設計文檔里有數(shù)據(jù)庫表er圖。就想問問又沒有現(xiàn)成的工具也給直接生成一個er圖,經(jīng)查找驗證發(fā)現(xiàn)并沒有。因為現(xiàn)在表關系都是用的邏輯外鍵而非物理外鍵約束的,所以像navicat等工具就算生成了也沒有描述關系的連接線。那么為了滿足需求,這邊

    2024年02月19日
    瀏覽(28)
  • 利用代碼生成工具快速生成基于SqlSugar框架的Winform界面項目

    利用代碼生成工具快速生成基于SqlSugar框架的Winform界面項目

    我們接觸一個新事物的時候,如果一個事物能夠給我們帶來非常直觀的感官認識,那么我們就很容易接受,反之可能需要很長時間的潛移默化的了解認識才能接受。萬物化繁為簡,透過本質(zhì)看表象,往往也是一個認知迭代深入的過程。在我介紹很多篇隨筆《SqlSugar開發(fā)框架》

    2024年02月11日
    瀏覽(19)
  • 一個在線ER模型設計工具:支持數(shù)據(jù)庫設計、生成、反向工程、優(yōu)化和文檔生成等操作

    一個在線ER模型設計工具:支持數(shù)據(jù)庫設計、生成、反向工程、優(yōu)化和文檔生成等操作

    ER模型,即實體關系模型,是數(shù)據(jù)庫建模的一種重要方法。它可以幫助開發(fā)人員更好地理解數(shù)據(jù)庫結(jié)構(gòu),并確定數(shù)據(jù)庫的概念模型。在本文中,我們將詳細介紹ER模型設計的基本概念和過程。 首先,我們需要了解ER模型中的兩個基本概念:實體和關系。實體是數(shù)據(jù)庫中存儲的對

    2024年02月04日
    瀏覽(20)
  • 【3D生成與重建】SSDNeRF:單階段Diffusion NeRF的三維生成和重建

    【3D生成與重建】SSDNeRF:單階段Diffusion NeRF的三維生成和重建

    題目 :Single-Stage Diffusion NeRF: A Unified Approach to 3D Generation and Reconstruction 論文 :https://arxiv.org/pdf/2304.06714.pdf 任務 :無條件3D生成(如從噪音中,生成不同的車等)、單視圖3D生成 機構(gòu) :Hansheng Chen,1,* Jiatao Gu,2 Anpei Chen, 同濟、蘋果、加利福尼亞大學 代碼 :https://github.com/Lakon

    2024年02月02日
    瀏覽(18)
  • AI數(shù)字人:基于VITS模型的中文語音生成訓練

    AI數(shù)字人:基于VITS模型的中文語音生成訓練

    ????????VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一種結(jié)合變分推理(variational inference)、標準化流(normalizing flows)和對抗訓練的高表現(xiàn)力語音合成模型。 ??????? VITS模型是韓國科學院在2021年6月提出的,VITS通過隱變量而非頻譜串聯(lián)起來語

    2024年02月11日
    瀏覽(20)
  • IDEA生成ER圖、UML類圖、時序圖、流程圖等的插件推薦或獨立工具推薦

    以下是幾個常用的IDEA插件和獨立工具,可以用于生成ER圖、UML類圖、時序圖、流程圖等: Visual Paradigm (獨立工具) Visual Paradigm是一個強大的建模工具,可以生成UML類圖、時序圖、流程圖等。它支持多種語言和框架,包括Java、Spring等。可以將生成的圖形導出為多種格式,例如圖

    2024年02月04日
    瀏覽(35)
  • 開源CA搭建-基于openssl實現(xiàn)數(shù)字證書的生成與分發(fā)

    開源CA搭建-基于openssl實現(xiàn)數(shù)字證書的生成與分發(fā)

    目錄 一、前言 二、openssl介紹 三、openssl的常用用法 (一)單向加密 (二)生成隨機數(shù) (三)生成公鑰,私鑰 1.生成私鑰 2.提取公鑰 四、搭建CA (一)創(chuàng)建根CA私鑰: (二)生成自簽名證書 (三)創(chuàng)建數(shù)據(jù)庫以及新頒發(fā)證書數(shù)字 (四)設置證書的起始編號 (五)創(chuàng)建文件

    2024年02月06日
    瀏覽(23)
  • 從0開始快速使用StarUml畫ER圖,生成SQL建表代碼,附解決DDL常見報錯方法

    從0開始快速使用StarUml畫ER圖,生成SQL建表代碼,附解決DDL常見報錯方法

    遇到稍微復雜一些的業(yè)務,先整理需求在下手會使得開發(fā)過程中頭發(fā)少掉一些,尤其是團隊合作的項目效果尤為明顯,在整理完業(yè)務需求后, 從數(shù)據(jù)庫開始下手能讓后端的頭發(fā)掉少一些. 找個好的軟件能在整理數(shù)據(jù)庫的時候再少掉點頭發(fā), 并且減輕簡單重復的打字工作. 如果圖畫好

    2023年04月16日
    瀏覽(21)
  • 【三維生成】Make-it-3D:diffusion+NeRF從單張圖像生成高保真三維物體(上交&微軟)

    【三維生成】Make-it-3D:diffusion+NeRF從單張圖像生成高保真三維物體(上交&微軟)

    題目 : Make-It-3D: High-Fidelity 3D Creation from A Single Image with Diffusion Prior Paper : https://arxiv.org/pdf/2303.14184.pdf Code : https://make-it-3d.github.io/ 在本文中,研究者的目標是: 從一個真實或人工生成的單張圖像中創(chuàng)建高保真度的3D內(nèi)容 。這將為藝術表達和創(chuàng)意開辟新的途徑,例如為像Stable

    2024年02月13日
    瀏覽(21)
  • 循序漸進介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應用端開發(fā)(12) -- 使用代碼生成工具Database2Sharp生成WPF界面代碼

    循序漸進介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應用端開發(fā)(12) -- 使用代碼生成工具Database2Sharp生成WPF界面代碼

    在經(jīng)過基于SqlSugar框架的WPF應用端系統(tǒng)界面及模塊的不斷優(yōu)化和重構(gòu)后,視圖界面及視圖模型等代碼已趨穩(wěn)定,因此完成前面的介紹后,現(xiàn)在開始統(tǒng)一基于代碼生成工具Database2Sharp進行WPF應用端界面代碼的快速生成了,代碼除了和WPF應用端的基類保持一致處理外,并添加一些注

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包