整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          html中網(wǎng)頁中如何插入音頻和視頻?

          網(wǎng)頁中常見的多媒體文件包括音頻文件和視頻文件,對于在線音頻和視頻,我們往往都是使用embed標簽來插入。embed語法:

          1 <embed src="”視頻地址”" type="”audio/x-pn-realaudio-plugin”"

          2 console="”Clip1〃" controls="”ControlPanel,StatusBar”" height="”330〃"

          3 width="”450〃" autostart="”true”" title="undefined">

          <embed src="要播放的文件網(wǎng)址" ;="" autostart="true" loop="true" width="400"

          height="350">

          html中網(wǎng)頁中如何插入音頻和視頻?


          舉例1:插入音頻文件

          1 <title>插入音頻文件</title>

          2

          3

          4 <embed src="media/西班牙舞曲.mp3" width="400px" height="80px">

          在瀏覽器預覽效果如下:

          說明:

          我們可以看到,使用embed標簽插入音頻文件還會有一個播放界面,界面上有幾個簡單的功能按鈕。

          舉例2:插入視頻文件

          1 <title>插入音頻文件</title>

          2

          3

          4 <embed src="media/小蘋果.wmv" width="400px" height="80px">

          在瀏覽器預覽效果如下:

          注意:

          由于音頻和視頻文件比較大,所以在這里我們就不提供大家在線測試的功能。不過大家可以在自己計算機上面測試一下代碼。

          使用embed標簽插入視頻,在瀏覽器我們也可以看到,瀏覽器提供了一個簡單的操作界面。embed標簽支持的視頻格式很多,大部分主流格式都支持。

          embed標簽能支持大部分格式的視頻文件,反正主流的如.mp4、.avi、.rmvb等都支持。如果你使用embed標簽不能播放視頻,那就可能是你視頻格式有問題或者編碼有問題。你可以用格式工廠轉(zhuǎn)換一下格式。

          以上就是html中網(wǎng)頁中如何插入音頻和視頻?

          本教程中,您將學習如何通過Flask和Python使用OpenCV將視頻從網(wǎng)絡攝像頭流式傳輸?shù)骄W(wǎng)頁瀏覽器/HTML頁面。

          您的車被偷過嗎?

          我的車在周末就被偷了。讓我告訴您,我很生氣。

          我不能透露太多的細節(jié),因為這個案件還在調(diào)查中,但以下是我可以告訴您的:

          大約六個月前,我和妻子從康涅狄格州的諾沃克搬到了賓夕法尼亞州的費城。我有一輛車,我不經(jīng)常開,但還是留著它以備不時之需。

          我們小區(qū)很難找到停車的地方,所以我需要一個車庫。

          我聽說有個車庫,就報名了,開始把車停在那里。

          直到上個星期天。

          我和妻子來到車庫取車。我們打算開車到馬里蘭去看望我的父母,吃一些螃蟹(馬里蘭的螃蟹很有名)。

          我走到我的車旁,取下車衣。

          我立馬就蒙圈了——這不是我的車。

          我的車#$&@去哪里了?

          幾分鐘后我就意識到一個現(xiàn)實——我的車被偷了。

          在過去的一周中,我為即將出版的《樹莓派電腦視覺》一書正在做的工作被打斷了——我一直在與停車場的主人、費城警察局和我車上的GPS跟蹤服務打交道,想弄清楚到底發(fā)生了什么。

          在事情解決之前,我不能公開透露任何細節(jié),但是讓我告訴您,我正埋頭處理警察報告、律師信件、還有保險索賠等一大堆的文件。

          我希望下個月這個問題能得到解決——我討厭分心,尤其是讓我遠離我最喜歡做的事情——教計算機視覺和深度學習。

          我成功地利用我的挫折啟發(fā)了一篇新的安全相關(guān)的計算機視覺博客帖子。

          在這篇文章中,我們將學習如何使用Flask和OpenCV將視頻流式傳輸?shù)骄W(wǎng)頁瀏覽器中。

          您可以在不到5分鐘的時間內(nèi)將此系統(tǒng)部署到樹莓派上:

          • 簡單地安裝所需的包/軟件并啟動腳本
          • 然后打開您的計算機/智能手機瀏覽器,并導航到URL/IP地址,就可以看到傳輸過來的視頻了(并且確保您的任何東西沒有被偷)。

          沒什么比一個小視頻證據(jù)更能抓住小偷了。

          當我繼續(xù)與警察、保險等處理文書工作時,您就可以開始用樹莓派相機武裝自己,無論您在哪里生活和工作,都可以抓住壞人。

          要學習如何使用OpenCV和Flask將視頻流式傳輸?shù)揭粋€網(wǎng)頁瀏覽器的HTML頁面,請繼續(xù)閱讀!

          OpenCV——將視頻流式傳輸?shù)骄W(wǎng)頁瀏覽器/HTML頁面

          在本教程中,我們將首先討論Flask,它是一個用于Python編程語言的微型web框架。

          我們將學習運動檢測的基本知識,以便我們可以將它應用到我們的項目中。我們將通過一個背景減法器來實現(xiàn)運動檢測。

          在此基礎上,我們將Flask與OpenCV結(jié)合,這樣我們就能夠:

          1. 訪問來自樹莓派相機模塊或USB網(wǎng)絡攝像頭的幀。
          2. 處理幀并應用一個任意的算法(這里我們將使用背景去除/運動檢測,但您也可以應用圖像分類,對象檢測等)。
          3. 將結(jié)果流式傳輸?shù)揭粋€網(wǎng)頁頁面/網(wǎng)頁瀏覽器。

          此外,我們將涉及的代碼將能夠支持多個客戶端(即,不止一個人/網(wǎng)頁瀏覽器/標簽頁能同時訪問流媒體),這是您在網(wǎng)上看到的絕大多數(shù)例子都無法處理的。

          把所有這些過程塊放在一起,我們就會得到一個能夠執(zhí)行運動檢測的家庭監(jiān)控系統(tǒng),然后它會將視頻結(jié)果流式傳輸?shù)侥木W(wǎng)頁瀏覽器中。

          讓我們開始吧!

          Flask web框架

          圖1:Flask是Python的一個微型web框架(image source)。

          在本節(jié)中,我們將簡要討論Flask web框架以及如何在您的系統(tǒng)中安裝它。

          Flask是一個非常流行的用Python編程語言編寫的微型web框架。

          與Django一樣,F(xiàn)lask是使用Python構(gòu)建web應用程序時最常見的web框架之一。

          但是,與Django不同的是,F(xiàn)lask非常輕量,這使得使用它構(gòu)建基本的web應用程序非常容易。

          正如我們將在本節(jié)中看到的,我們只需要一小部分代碼就可以使用Flask實現(xiàn)實時流式傳輸視頻——其余的代碼包括(1)OpenCV和訪問我們的視頻流,或者(2)確保我們的代碼是線程安全的,并且可以處理多個客戶端。

          如果您需要在一個機器上安裝Flask,您只需要簡單地按以下命令進行操作:

          安裝了它之后,您可以繼續(xù)安裝NumPy、OpenCV和imutils:

          注意:如果您想要完整安裝包括“非免費”(專利)算法的OpenCV,那您一定要從源代碼來編譯OpenCV。

          項目結(jié)構(gòu)

          在我們繼續(xù)之前,讓我們看看我們項目的目錄結(jié)構(gòu):

          為了執(zhí)行背景去除和運動檢測,我們將實現(xiàn)一個名為SingleMotionDetector的類——該類將位于singlemotiondetector.py文件中pyimagesearch的motion_detection子模塊中。

          webstreaming.py文件將使用OpenCV訪問我們的網(wǎng)絡攝像頭,通過SingleMotionDetector執(zhí)行運動檢測,然后通過Flask web框架將輸出幀提供給我們的網(wǎng)絡瀏覽器。

          為了讓我們網(wǎng)絡瀏覽器能有東西顯示,我們需要使用HTML填充index.html的內(nèi)容來提供接收到的視頻。我們只需要插入一些基本的HTML標記——Flask將實際處理將視頻流發(fā)送到我們的瀏覽器的事情。

          實現(xiàn)一個基本的運動檢測器

          圖2:使用Raspberry Pi、OpenCV、Flask和網(wǎng)絡流媒體進行視頻監(jiān)控。

          通過使用背景去除進行運動檢測,我們可以檢測到我在椅子上的運動。

          我們的運動檢測算法將通過背景減除的形式來檢測運動。

          大多數(shù)背景去除算法的工作原理是:

          1. 累積相加前N幀的加權(quán)平均值
          2. 取當前幀并從幀的加權(quán)平均值中減去它
          3. 對去除的輸出進行閾值處理,以突出像素值差異較大的區(qū)域(“白色”表示前景,“黑色”表示背景)
          4. 應用基本的圖像處理技術(shù)如腐蝕和膨脹來消除噪聲
          5. 利用輪廓檢測提取運動區(qū)域

          我們的運動檢測實現(xiàn)將位于SingleMotionDetector類中,該類可以在SingleMotionDetector .py中找到。

          我們稱之為一個“單一運動檢測器”,因為其算法本身只對尋找單一的、最大的運動區(qū)域感興趣。

          我們也可以很容易地擴展這個方法來處理多個運動區(qū)域。

          讓我們來實現(xiàn)該運動檢測器。

          打開singlemotiondetector.py文件,并插入以下代碼:

          第2-4行處理所需的導入。

          所有這些都是相當標準的,包括用于數(shù)字處理的NumPy、用于為我們提供方便函數(shù)的imutils和用于OpenCV綁定的cv2。

          然后我們在第6行定義SingleMotionDetector類。這個類接受一個可選的參數(shù)accumWeight,它是用于累積加權(quán)平均值的因數(shù)。

          accumWeight越大,在累積加權(quán)平均值時,背景(bg)被考慮的越少。

          相反地,accumWeight越小,在計算平均值時考慮背景(bg)就會越多。

          設置accumWeight=0.5會均勻地加權(quán)背景和前景——我經(jīng)常建議使用這個設置作為起始值(然后您可以根據(jù)自己的實驗調(diào)整它)。

          接下來,讓我們定義update方法,它將接受一個輸入幀并計算加權(quán)平均值:

          為了防止我們的bg幀為None(這意味著update從未被調(diào)用),我們只需要存儲bg幀(第15-18行)。

          否則,我們會計算輸入幀、現(xiàn)有背景bg和相應的accumWeight因子之間的加權(quán)平均值。

          鑒于我們的背景bg,我們現(xiàn)在可以通過detect方法應用運動檢測:

          detect方法需要一個參數(shù)和一個可選參數(shù):

          • image: 將要被應用運動檢測的輸入幀/圖像。
          • tVal: 用于將一個特定像素標記為 “運動” 或 非運動的閾值。

          給定我們的輸入image,我們計算該image和bg之間的絕對誤差(第27行)。

          任何差異>tVal的像素位置都被設置為255(白色;前景),否則設置為0(黑色;背景)(28行)。

          通過一系列的腐蝕和膨脹來消除噪聲和小的局部運動區(qū)域,否則這些區(qū)域會被認為是假陽性的(可能是由于反射或光線的快速變化)。

          下一步是應用輪廓檢測提取任何運動區(qū)域:

          第37-39行對我們的thresh圖像執(zhí)行輪廓檢測。

          然后,我們初始化兩組記賬變量,以跟蹤包含任何運動的位置(第40行和第41行)。這些變量將形成“邊界框”,它將告訴我們運動發(fā)生的位置。

          最后一步是填充這些變量(假設運動存在于幀中,當然是這樣):

          在43-45行中,我們檢查我們的輪廓列表是否為空。

          如果是這種情況,那么在幀中就找不到運動,我們就可以放心地忽略它。

          否則,在幀中確實存在運動,所以我們就需要開始在輪廓線上進行循環(huán)(第48行)。

          對于每個輪廓,我們計算其邊界框,然后更新我們的記賬變量(第47-53行),找到所有運動發(fā)生的最小和最大(x, y)坐標。

          最后,我們將邊界框位置返回給調(diào)用函數(shù)。

          結(jié)合OpenCV和Flask

          圖3:OpenCV和Flask (一個Python微型網(wǎng)絡框架)是涉及Raspberry Pi和類似硬件的網(wǎng)絡流媒體和視頻監(jiān)控項目的完美搭檔。

          讓我們繼續(xù),將OpenCV和Flask結(jié)合起來,從一個視頻流(運行在樹莓派上)向一個網(wǎng)絡瀏覽器提供幀。

          打開您項目結(jié)構(gòu)中的webstreaming.py 文件,并插入如下代碼:

          第2-12行處理我們需要的導入:

          • 第2行 導入我們上邊實現(xiàn)的SingleMotionDetector類
          • VideoStream類 (第3行 ) 將允許我們訪問我們的Raspberry Pi 相機模塊或 USB網(wǎng)絡攝像頭.
          • 第4到6行處理導入我們需要的Flask包——我們將使用這些包呈現(xiàn)我們的index.html模板,并將其提供給客戶端。
          • 第7行導入threading庫,確保我們可以支持并發(fā) (比如,同時使用多個客戶端、網(wǎng)絡瀏覽器和選項卡)。

          讓我們繼續(xù)執(zhí)行一些初始化:

          首先,我們在第17行初始化我們的outputFrame——這將是將提供給客戶端的幀(投遞運動檢測)。

          然后,我們在第18行創(chuàng)建一個lock,它將在更新ouputFrame時被用來確保線程安全行為(即確保某個幀在更新時不被任何線程嘗試讀取)。

          第21行初始化我們的Flask app本身,而第25-27行訪問我們的視頻流:

          • 如果您正在使用一個USB網(wǎng)絡攝像頭, 您可以保持代碼不變。
          • 否則,如果您正在使用一個RPi相機模塊,那您應該取消掉第25行的注釋,并將第26行注釋掉。

          下一個函數(shù)index將會渲染我們的index.html模板并提供輸出視頻流:

          這個函數(shù)非常簡單—它所做的就是在我們的HTML文件中調(diào)用Flask render_template。

          我們將在下一章查看該index.html文件,因此,我們將推遲對此文件內(nèi)容的進一步討論直到那個時候。

          我們的下一個函數(shù)的功能是:

          • 對我們視頻流中的幀進行循環(huán)
          • 應用運動檢測
          • 在outputFrame上繪制任何結(jié)果

          而且,這個函數(shù)必須以線程安全的方式來執(zhí)行所有這些操作,以確保支持并發(fā)。

          現(xiàn)在讓我們看看這個函數(shù):

          我們的detection_motion函數(shù)接受單個參數(shù)frameCount,它是在SingleMotionDetector類中構(gòu)建我們的背景bg所需的最小幀數(shù):

          • 如果我們沒有至少frameCount幀,我們將會繼續(xù)計算累計加權(quán)平均值
          • 一旦frameCount達到了,我們將執(zhí)行背景去除。

          第37行獲取對三個變量的全局引用:

          • vs: 我們實例化的VideoStream對象
          • outputFrame: 將提供給客戶端的輸出幀
          • lock: 在更新outputFrame之前我們必須獲得的線程鎖。

          第41行使用一個accumWeight=0.1值來初始化我們的SingleMotionDetector 類,這意味著在計算加權(quán)平均值時,bg值的權(quán)重會更高。

          第42行初始化到目前為止讀取的幀的total數(shù)——我們需要確保已經(jīng)讀取了足夠多的幀來構(gòu)建我們的背景模型。

          從那里,我們將能夠執(zhí)行背景去除。

          這些初始化完成后,我們現(xiàn)在可以開始對來自相機的幀進行循環(huán):

          第48行讀取來自我們相機的frame幀,而第49-51行執(zhí)行預處理操作,包括:

          • 調(diào)整寬度為400 px (我們的輸入幀越小, 數(shù)據(jù)量就越小,因此,我們的算法運行的就越快)。
          • 轉(zhuǎn)換成灰階圖。
          • 高斯模糊(來減少噪聲)。

          然后,我們獲取當前時間戳并將其繪制在frame上(第54-57行)。

          在進行一次最終檢查之后,我們就可以執(zhí)行運動檢測:

          在第62行中,我們確保我們至少讀取了frameCount幀來構(gòu)建我們的背景去除模型。

          如果是這樣,我們將應用我們運動檢測器的.detect運動,它將返回單個變量motion。

          如果motion是None,那么我們就知道當前frame中沒有發(fā)生運動。否則,如果motion不是None(第67行),那么我們需要在frame上繪制運動區(qū)域的邊界框坐標。

          第76行更新我們的運動檢測背景模型,而第77行增加了迄今為止從攝像機讀取的幀的total數(shù)。

          最后,第81行獲得支持線程并發(fā)所需的lock,而第82行設置outputFrame。

          我們需要獲取鎖,以確保我們在試圖更新outputFrame變量時客戶機不會意外讀取它。

          我們的下一個函數(shù),generate,是一個Python生成器,用于將我們的outputFrame編碼為JPEG數(shù)據(jù)——現(xiàn)在讓我們來看看它:

          第86行獲取對outputFrame和lock的全局引用,類似于detect_motion函數(shù)。

          然后generate在第89行啟動一個無限循環(huán),這個循環(huán)將一直持續(xù)到我們結(jié)束腳本。

          在循環(huán)內(nèi)部,我們:

          • 首先獲取lock (第91行 ).
          • 確保outputFrame非空(第94行 ), 如果一個幀被從攝像機傳感器中丟棄,那么這種情況就有可能發(fā)生。
          • 在第98行將frame編碼為一個JPEG 圖像——在這里執(zhí)行JPEG壓縮以減少網(wǎng)絡負載,并且確保幀的快速傳輸。
          • 檢查成功flag是否失敗(第101行和102行),這意味著如果此JPEG壓縮過程失敗,我們就應該忽略該幀。
          • 最后,將編碼的JPEG以一個字節(jié)數(shù)組提供給一個可以解析它的網(wǎng)絡瀏覽器。

          在這么短的代碼中做了這么多工作,所以一定要檢查這個函數(shù)幾次,以確保您了解它是如何工作的。

          下一個函數(shù)video_feed會調(diào)用我們的generate函數(shù):

          注意這個app.route函數(shù)簽名,就像上面的index函數(shù)一樣。

          這個app.route簽名告訴Flask這個函數(shù)是一個URL端點,數(shù)據(jù)是從http://your_ip_address/video_feed提供的。

          video_feed的輸出是實時運動檢測輸出,通過generate函數(shù)編碼為一個字節(jié)數(shù)組。您的網(wǎng)絡瀏覽器非常聰明,可以將這個字節(jié)數(shù)組作為一個實時輸出顯示在您的瀏覽器中。

          我們最后的代碼塊處理解析命令行參數(shù)和啟動Flask應用程序的任務:

          第118-125行處理解析命令行參數(shù)的任務。

          這里我們需要三個參數(shù),包括:

          • --ip: 您運行webstream.py文件的系統(tǒng)的IP地址。
          • --port: Flask應用程序的運行端口號(對這個參數(shù),您通常只需要提供一個值8000)。
          • --frame-count: 在執(zhí)行運動檢測之前用于累計和構(gòu)建背景模型的幀數(shù)。默認情況下,我們使用32幀來構(gòu)建背景模型。

          第128-131行啟動一個線程用于執(zhí)行運動檢測。

          使用一個線程確保detect_motion函數(shù)可以安全地在后臺運行——它將不斷地運行和更新我們的outputFrame,以便我們可以為我們的客戶端提供任何運動檢測結(jié)果。

          最后,第134和135行啟動Flask應用程序本身。

          HTML頁面結(jié)構(gòu)

          正如我們在webstreaming.py中看到的,我們正在渲染一個名為index.html的HTML模板。

          該模板本身由Flask 網(wǎng)絡框架進行填充,然后提供給網(wǎng)絡瀏覽器。

          然后,您的網(wǎng)絡瀏覽器將生成的HTML呈現(xiàn)到您的屏幕上。

          讓我們檢查一下index.html文件的內(nèi)容:

          我們可以看到,這是一個超級基礎的網(wǎng)頁;但是,請密切注意第7行——注意我們?nèi)绾沃甘綟lask動態(tài)呈現(xiàn)我們video_feed路徑的URL。

          由于video_feed函數(shù)負責提供來自我們網(wǎng)絡攝像頭的幀,所以圖像的src將會被自動填充上我們的輸出幀。

          然后,我們的網(wǎng)絡瀏覽器足夠智能,可以正確渲染網(wǎng)頁并提供實時視頻流。

          將各部分整合在一起

          現(xiàn)在我們已經(jīng)寫完了我們項目的代碼,讓我們對其進行測試。

          打開一個終端,執(zhí)行以下命令:

          正如您在視頻中看到的,我從多個瀏覽器打開了到Flask/OpenCV服務器的連接,每個瀏覽器都有多個選項卡。我甚至拿出我的iPhone,并打開了一些來自那里的連接。服務器沒有跳過一個幀,持續(xù)地使用Flask和OpenCV可靠地提供幀。

          加入嵌入式計算機視覺和深度學習革命!

          我第一次彈吉他是在20年前,那時我還在上中學。我不太擅長,幾年后我就放棄了。回顧過去,我堅信我沒有堅持下去的原因是因為我沒有以一種實際的、動手操作的方式來學習。

          相反,我的音樂老師一直向我腦子里灌輸理論——但作為一個11歲的孩子,我只是想弄清楚我是否喜歡彈吉他,更不用說我是否想研究音樂背后的理論了。

          大約一年半以前,我決定重新開始上吉他課。這一次,我特意找了一位能夠?qū)⒗碚撆c實踐相結(jié)合的老師,教我如何在學習理論技巧的同時演奏歌曲或即興重復樂段。

          結(jié)果呢?我的手指速度比以往任何時候都快,我的節(jié)奏也很準,我可以不斷地惹惱我的妻子,在我的Les Paul上演奏Sweet Child of Mine。

          我的觀點是,無論何時您在學習一項新技能時,無論是計算機視覺,還是使用樹莓派進行滲透,甚至是彈吉他,最快、最簡單的學習方法之一就是圍繞這項技能設計(小的)現(xiàn)實世界的項目,并嘗試解決它。

          對于吉他來說,這意味著學習短的即興重復,這不僅教會了我真正的歌曲的一部分,也給了我一個寶貴的技巧(例如,掌握一種特定的五聲音階)。

          在計算機視覺和圖像處理中,您的目標應該是思考一些小型項目,然后嘗試解決它們。不要太快就把事情復雜化,那是失敗的秘訣。

          相反,您可以拿一本我寫的《樹莓派計算機視覺》書,讀一讀,把它作為您個人項目的一個啟動平臺。

          當您讀完之后,回到那些最激勵您的章節(jié),看看您能如何以某種方式擴展它們(即使只是將相同的技術(shù)應用到一個不同的場景中)。

          解決您思考的小項目不僅會讓您對這個主題感興趣(因為您自己想到了它們),而且它們還會教您實踐技能。

          今天的教程——運動檢測和流式傳輸?shù)骄W(wǎng)絡瀏覽器——就是這樣一個迷您項目的一個很好的起點。我希望既然您已經(jīng)閱讀了本教程,您已經(jīng)對如何將這個項目擴展到您自己的應用程序進行了思考。

          但是,如果您有興趣學習更多……

          我的新書《樹莓派計算機視覺》中有40多個與嵌入式計算機視覺+物聯(lián)網(wǎng)(IoT)相關(guān)的項目。您可以根據(jù)書中的項目進行構(gòu)建來解決家里、公司甚至客戶的問題。每一個項目都有著重方向:

          • 通過實踐進行學習
          • 卷起您的袖子
          • 對代碼和實現(xiàn)進行實際測試
          • 使用樹莓派構(gòu)建實際的、實用的項目

          幾個精品項目包括:

          • 晝夜野生動物監(jiān)視
          • 交通工具計數(shù)和車速檢測
          • 深度學習分類、對象檢測和資源受限設備上的實例分割
          • 手勢識別
          • 基本的機器人導航
          • 安全應用程序
          • 教室出勤情況
          • 等等更多!

          本書還涵蓋了使用谷歌Coral和Intel Movidius NCS協(xié)作處理器(Hacker + Complete Bundles)的深度學習。當需要更多的深度學習能力時,我們還將引入NVIDIA Jetson Nano(Complete Bundle)。

          如果您錯過了Kickstarter,您可以看看我的公告視頻:

          您準備好和我一起學習計算機視覺和如何應用嵌入式設備(如樹莓派、Google Coral和NVIDIA Jetson Nano)了嗎?

          如果是這樣,請使用下面的鏈接查看這本書!

          總結(jié)

          在本教程中,您學習了如何將幀從一個服務器機器流式傳輸?shù)揭粋€客戶端網(wǎng)絡瀏覽器。使用這個網(wǎng)絡流式傳輸程序,我們能夠構(gòu)建一個基本的安全應用程序來監(jiān)控我們房子里的一個房間的運動。

          背景去除是計算機視覺中最常用的一種方法。通常,這些算法的計算效率很高,這使得它們適合于資源受限的設備,如樹梅派。

          在實現(xiàn)了我們的背景去除器后,我們將其與Flask 網(wǎng)絡框架結(jié)合,這使得我們能夠:

          1. 從RPi攝像機模塊/USB網(wǎng)絡攝像頭訪問幀。
          2. 對每個幀應用背景去除/運動檢測。
          3. 將結(jié)果流式傳輸?shù)揭粋€網(wǎng)頁頁面/網(wǎng)頁瀏覽器。

          此外,我們的實現(xiàn)支持多個客戶端、瀏覽器或選項卡——這在大多數(shù)其它實現(xiàn)中都找不到。

          無論何時您需要將幀從一個設備流式傳輸?shù)揭粋€網(wǎng)絡瀏覽器時,一定要使用此代碼作為一個模板/起點。

          英文原文:https://www.pyimagesearch.com/2019/09/02/opencv-stream-video-to-web-browser-html-page

          譯者:Nothing

          閩南網(wǎng)]

          快影作為快手專屬的視頻編輯軟件,可以為視頻添加簡單的倒放、變速、轉(zhuǎn)場效果,操作又十分便捷的,非常適合視頻分享達人,而字幕作為必不可少的元素之一,自然是需要多加考量的。

          字幕制作:

          其實為視頻添加字幕的方法并不復雜,用戶在打開快影的軟件之后,首先需要選擇底端的“+”按鈕導入手機本地的視頻素材文件。

          在進入視頻編輯界面之后,我們接著點擊底部的“T”按鈕,這樣就能夠添加字幕進行編輯了。

          添加字幕的方式分為兩種:一種是語音識別自動添加,另一種則需要手動編輯,下面就來看看具體操作吧。

          自動添加:

          可以將含有旁白聲音的素材導入快影,選擇字幕,可以看到有一個自動識別的菜單。盡量使用普通話,辨識度較高。

          可以看到上方提示我們正在識別語音,而且可以看到識別進度。

          識別完成之后,我們點擊右上角的完成按鈕。

          手動添加:

          如果您對于語音識別效果不滿意的,可以手動進行編輯

          滑動視頻進度條,輸入相應的字幕之后,我們還可以隨意調(diào)整字幕的字體格式、大小、顏色狀態(tài),讓字幕和視頻內(nèi)容更好的貼合在一起!不過目前字體尺寸只有小號中號大號三種。

          最后找到保存完成的視頻,點擊播放,在視頻的下方可以看到我們添加的文字。這些文字可以是根據(jù)我們視頻中的語音轉(zhuǎn)換而成的文字,也可以是自己加工過的。

          以上就是小編為大家?guī)淼目煊耙曨l添加字幕教程,有需要的小伙伴可以了解下。


          主站蜘蛛池模板: 夜夜精品无码一区二区三区| 亚洲熟女少妇一区二区| 手机福利视频一区二区 | 另类免费视频一区二区在线观看| 色狠狠色噜噜Av天堂一区| 国产丝袜无码一区二区三区视频| 久久久无码一区二区三区| 日韩免费视频一区| 中文字幕视频一区| 亚洲免费一区二区| 日本免费一区二区三区最新| 中文字幕在线观看一区二区三区| 人妻少妇精品视频三区二区一区| 亚洲国产一区二区三区| jizz免费一区二区三区| 日韩AV无码久久一区二区| 一区二区高清在线| 亚洲视频在线一区二区| 99偷拍视频精品一区二区| 日韩精品一区二区三区色欲AV| 中文字幕一区在线观看| 在线观看国产一区亚洲bd| 亚洲一区在线免费观看| 亚洲愉拍一区二区三区| 一区二区三区免费视频观看| 无码人妻精品一区二区三区9厂| 在线观看国产一区亚洲bd| 人妻夜夜爽天天爽爽一区| 久久一区二区明星换脸| 日本一区二区在线播放| 一区二区三区视频在线| 国产激情无码一区二区| 中文字幕一区二区三区免费视频| 国产一区二区在线视频| 视频在线一区二区三区| 国模大胆一区二区三区| 中文字幕精品一区二区日本| 蜜桃无码AV一区二区| 国产精品无码一区二区在线| 久久er99热精品一区二区| 午夜AV内射一区二区三区红桃视|