t中引入html調節樣式
HTML
<html><head/><body><p style=\"height:16px;line-height:24px;color:#787878\"> helloWorld</p></body></html>
技巧
- 實現Html鏈接動態下劃線
- 繼承QLabel并重寫進入離開事件(對Html文字鏈接中text-decoration: none;屬性進行控制). 即可實現鼠標停留時顯示下劃線, 鼠標離開時隱藏下劃線.
、前言說明
推流程序將視頻流推送到流媒體服務器后,此時就等待驗證拉流播放,一般可以選擇ffplay命令行播放或者vlc等播放器打開播放,也可以選擇網頁直接打開拉流地址播放,一般主流的瀏覽器都支持網頁直接播放hls/m3u8/webrtc類型的視頻流,而且推流的主要目的可能就是為了能夠在各個客戶端中取流播放,尤其是網頁端,畢竟在各種操作系統上,網頁瀏覽器是基礎組件,只要你的程序能夠在網頁中運行,那就相當于通吃各種操作系統,不用再去費勁心力的去開發各個平臺的程序。視頻監控行業現在也是越發嚴格的要求最好能夠在網頁上直接播放視頻流,尤其是各個監控攝像頭,由于rtsp/rtmp默認網頁不支持直接播放,需要推流轉換成hls/m3u8/webrtc來播放,hls格式的一般延遲比較大,首推webrtc格式的進行播放,實時性最好。
很多時候未必電腦上有播放器,但是瀏覽器肯定有,為了第一時間驗證推流后的視頻流是否正常,所以直接在推流程序中加上了測試網頁的功能,就是主動生成一個宮格形式的視頻播放列表,自動打開網頁立即預覽實時效果,本人不是專業的網頁程序員,所以采用了最為簡單直接的辦法,那就是用iframe框架嵌套,一個通道相當于就一個iframe,默認iframe是帶邊框的,可以用frameborder=0屬性來去掉,默認網頁有邊距和間距,可以用樣式body{margin:3px;padding:0px;}來調整。自此推流后一鍵生成網頁自動打開實時預覽,非常哇咔咔。
二、功能特點
2.1 文件推流
- 指定網卡和監聽端口,接收網絡請求推送音視頻等各種文件。
- 實時統計顯示每個文件對應的訪問數量、總訪問數量、不同IP地址訪問數量。
- 可指定多種模式,0-直接播放、1-下載播放。
- 實時打印顯示各種收發請求和應答數據。
- 每個文件對應MD5加密的唯一標識符,用于請求地址后綴區分訪問哪個文件。
- 支持各種瀏覽器(谷歌chromium/微軟edge/火狐firefox等)、各種播放器(vlc/mpv/ffplay/potplayer/mpchc等)打開請求。
- 播放過程中可以任意切換播放進度,支持倍速播放。
- 需要推流的文件名稱歷史記錄自動存儲和打開加載應用。
- 切換文件獲取訪問地址,自動拷貝地址到剪切板方便直接粘貼測試使用。
- 極低CPU占用,128路1080P同時推流不到1%CPU占用,異步發送數據機制。
- 純QTcpSocket通信,不依賴流媒體服務程序,核心源碼不到500行,注釋詳細,功能完整。
- 每個推流都可以手動指定唯一標識符(方便拉流/用戶無需記憶復雜的地址),沒有指定則按照策略隨機生成hash值。
- 自動生成測試網頁直接打開播放,可以看到實時效果,自動按照數量對應宮格顯示。
- 支持Qt4/Qt5/Qt6任意版本,支持任意系統(windows/linux/macos/android/嵌入式linux等)。
2.2 網絡推流
- 支持各種本地視頻文件和網絡視頻文件。
- 支持各種網絡視頻流,網絡攝像頭,協議包括rtsp、rtmp、http。
- 支持將本地攝像頭設備推流,可指定分辨率和幀率等。
- 支持將本地桌面推流,可指定屏幕區域和幀率等。
- 自動啟動流媒體服務程序,默認mediamtx(原rtsp-simple-server),可選用srs、EasyDarwin、LiveQing、ZLMediaKit等。
- 可實時切換預覽視頻文件。
- 推流的清晰度和質量可調。
- 可動態添加文件、目錄、地址。
- 視頻文件自動循環推流,如果視頻源是視頻流,在掉線后會自動重連。
- 網絡視頻流自動重連,重連成功自動繼續推流。
- 網絡視頻流實時性極高,延遲極低,延遲時間大概在100ms左右。
- 極低CPU占用,4路主碼流推流只需要占用0.2%CPU。理論上常規普通PC機器推100路毫無壓力,主要性能瓶頸在網絡。
- 推流后除了用rtmp地址訪問以外,還支持直接hls/webrtc訪問,可以直接瀏覽器打開看實時畫面。
- 可以推流到外網服務器,然后通過手機、電腦、平板等設備播放對應的視頻流。
- 每個推流都可以手動指定唯一標識符(方便拉流/用戶無需記憶復雜的地址),沒有指定則按照策略隨機生成hash值。
- 自動生成測試網頁直接打開播放,可以看到實時效果,自動按照數量對應宮格顯示。
- 支持Qt4/Qt5/Qt6任意版本,支持任意系統(windows/linux/macos/android/嵌入式linux等)。
三、體驗地址
- 體驗地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 名稱:bin_video_push
- 國內站點:https://gitee.com/feiyangqingyun
- 國際站點:https://github.com/feiyangqingyun
- 個人主頁:https://blog.csdn.net/feiyangqingyun
- 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/
四、使用步驟
4.1 文件推流
- 選擇或者填寫要監聽的網卡IP地址,填寫好監聽端口,建議默認即可。
- 單擊添加文件或者目錄,選擇要加入推流的音視頻文件,添加成功以后會自動羅列在表格中。
- 單擊啟動服務按鈕,會變成停止服務字樣表示啟動服務成功。
- 從表格中選中一行,會自動將該音視頻文件的播放地址填寫到右下角,同時也會自動拷貝到剪切板。
- 將地址粘貼到瀏覽器地址欄回車即可查看播放音視頻,可以任意切換播放進度。
- 將地址用vlc或者其他播放器打開即可查看播放音視頻,可以任意切換播放進度。
- 文件推流服務支持多個同時請求,表格中會顯示每個文件對應正在請求中的數量,右下角也有統計總請求數量,還有統計不同IP地址的請求總數。
- 單擊停止服務按鈕會停止所有服務,由于存在緩存的關系,停止以后緩存中的視頻還可以繼續播放,過一段時間就不能播放。
- 在啟動服務后支持動態添加文件、移除文件、清空文件。
4.2 網絡推流
- 選擇或者填寫推流的前綴地址,建議默認即可。
- 單擊添加文件或者目錄,選擇要加入推流的音視頻文件,添加成功以后會自動羅列在表格中。
- 單擊添加地址,可以從下拉框中選擇或者填寫,下拉選項中是一些格式模板,比如本地攝像頭、本地桌面、電視臺、網絡攝像機等。
- 單擊啟動服務按鈕,會變成停止服務字樣表示啟動服務成功。
- 在啟動服務后支持動態添加地址、移除地址、清空地址。如果處于啟動服務中,添加后會立即推流。
- 從表格中選中一行,會自動將播放地址填寫到右下角,同時也會自動拷貝到剪切板。
- 一次推流可以分多種不同的地址訪問,右下角總共有三種地址,第一種是rtmp開頭的視頻流地址,可以用各種播放器打開,第二種是hls(m3u8)格式的地址,一般用于網頁瀏覽器顯示,第三種是webrtc格式的地址,一般用于瀏覽器或者部分支持該格式的播放器。
- 將地址粘貼到瀏覽器地址欄回車即可查看視頻流,地址也可以用播放器打開。
- 單擊停止服務按鈕會停止所有服務,在啟動服務后支持動態添加文件、移除文件、清空文件。
五、效果圖
忍住不哭,可是雙眼最清楚,我這顆心都默默承受著愛情的,獨自收拾著愛情的包袱,夜里難以入睡。