十年網(wǎng)站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
PC端我一直用的VLC media player
創(chuàng)新互聯(lián)建站主營淮南網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,手機APP定制開發(fā),淮南h5小程序定制開發(fā)搭建,淮南網(wǎng)站營銷推廣歡迎淮南等地區(qū)企業(yè)咨詢
android上沒注意有沒有類似APP 我在項目中用的是這兩個東西
// 視頻流
api 'com.qiniu:happy-dns:0.2.13'
api files('libs/pldroid-player-1.5.1.jar')
簡單來說:android是在sdk4.0以后才開始支持m3u8的播放,
sdk4.0以后可以使用VideoView來直接播放m3u8文件,但它只支持視頻的在線播放,
如果你的app需要支持視頻的離線下載,然后在沒有網(wǎng)絡的情況下用VideoView播放本地下載好的m3u8文件 那么思路很簡單 就是使用socket實現(xiàn)一個本地代理服務來處理視頻數(shù)據(jù).
前段時間為了優(yōu)化企業(yè)的一個網(wǎng)站,就在這個網(wǎng)站里嵌套了一個zblog,沒到設置偽靜態(tài)后,上傳圖片后,圖片地址顯示是404,研究了很久才找到原因。下面將解決方法介紹給大家:
?
一開始我以為是服務器問題,于是就各種調試IIS,最后差點把服務器搞壞了。好在功夫不負有心人,最后發(fā)現(xiàn)原來是圖片權限問題,只要將上傳的圖片的權限加一個everyone權限,這樣問題就自然解決了。
還有一種方法就是不適用偽靜態(tài),直接使用動態(tài),這樣圖片也會正常顯示。
下一篇: 如何使用關鍵詞規(guī)劃師在搭建賬戶之前就屏蔽掉無效詞 上一篇:什么是URL標準化,URL標準化設置
相關文章
?
什么是404錯誤代碼
?
虛擬主機怎么設置404頁面?
?
網(wǎng)站為什么不要輕易改版,頻繁改版對網(wǎng)站SEO有哪些傷害
?
zblog程序IIS環(huán)境下上傳視頻為什么不能顯示,播放不了
?
zblog應用中心無法升級怎么辦
?
zblog標簽與后臺功能訪問500錯誤問題
?
zblog如何搬家?
?
詳細介紹zblogphp如何調用熱門、隨機等文章列表
?
著名的經典網(wǎng)站開源程序xiuno與大家說再見
?
如何使用requests模擬登陸zblog
評論
?
?
?
?
?提交評論
?
訪客回復
2019-08-21 22:07:01
謝謝分享,這個問題一直困擾了我很久
備案號:浙ICP備12040699號-2網(wǎng)站地圖Powered By Zblog 博主:啟明SEO 專注互聯(lián)網(wǎng)營銷
rtsp流在主流瀏覽器并不支持直接播放。比如大華的視頻流:rtsp://admin:123456@
192.168.10.129/cam/realmonitor?channel=1subtype=0,用vlc可以直接播放。但在瀏覽器會報ERR_UNKNOWN_URL_SCHEME。那如何在瀏覽器中播放呢。
以下列出幾種方案。
1、安裝插件(chrome最新版基本都不支持)
類如:kurento,vlc插件(谷歌瀏覽器版本41以下),vgx插件(不支持高版本,chrome72.0版本可用)等。
2、安裝軟件(中間件,基本都付費)
類如:Appemit(調用vlc插件播放rtsp),可以免安裝的,目前只能windows,免費版會有提示。
猿大師中間件(底層調用VLC的ActiveX控件,實現(xiàn)在主流瀏覽器網(wǎng)頁中內嵌播放多路RTSP的實時視頻流),中間件收費的。
PluginOK(牛插)中間件。底層調用ActiveX控件VlcOcx.dll。(商業(yè)用途需付費使用)
3、服務器拉流轉發(fā)及協(xié)議轉換
示意圖如下所示:
推流--------------服務器轉發(fā)--------------拉流
方法一覽:
a,vlc軟件串流到http協(xié)議 ,網(wǎng)頁顯示幾個視頻需啟動幾個vlc,只適合應急場景。
b,html5 + websocket_rtsp_proxy 實現(xiàn)視頻流直播 ,基于MSE(Media Source Extensions,W3C),擴展H5的功能。
步驟:服務器安裝streamedian服務器,客戶端通過video標簽播放。
原型圖:
價格:
c.基于nginx的rsmp轉發(fā)
基于nginx實現(xiàn)rtmp轉化,用flash實現(xiàn)播放。由于flash目前大多瀏覽器默認禁用,不推薦此方式。
步驟:安裝ffmpeg工具,安裝nginx。
另外nginx-rtmp-module也支持HLS協(xié)議,可以搭建基于hls的直播服務器。
d.rtsp轉hls播放,通過ffmpeg轉碼
步驟:安裝ffmpeg工具,ffmpeg轉碼。
形如:
ffmpeg -i "rtsp://admin:123456@192.168.10.129/cam/realmonitor?channel=1subtype=0" -c copy -f hls -hls_time 2.0 -hls_list_size 0 -hls_wrap 15 "D:/hls/test.m3u8"
缺點是直播流延時很大,對實時要求比較高的不滿足要求。
案例:基于EasyDarwin拾建轉碼服務器。參考地址:
通過存儲的m3u8去讀取。
e.websocket代理推送,F(xiàn)FMPEG轉碼
此方法與a,b類似。但更實用。
以下提供兩種方案:
(1)Gin+WebSocket+FFMPEG實現(xiàn)rtsp轉碼,參考:
通過FFMPEG把rstp轉成http,ginrtsp作為轉發(fā)服務器,但需要自己寫相應接口,需要了解go語言。
(2)node + ffmpeg + websocket + flv.js,參考:
步驟:在node服務中建立websocket;通過fluent-ffmpeg轉碼,將RTSP 流轉為flv格式;通過flv.js連接websocket,并對獲取的flv格式視頻數(shù)據(jù)進行渲染播放。
import WebSocket from 'ws'import webSocketStream from 'websocket-stream/stream'import ffmpeg from 'fluent-ffmpeg'// 建立WebSocket服務const wss = new WebSocket.Server({ port: 8888, perMessageDeflate: false })// 監(jiān)聽連接wss.on('connection', handleConnection)// 連接時觸發(fā)事件function handleConnection (ws, req) {? // 獲取前端請求的流地址(前端websocket連接時后面帶上流地址)? const url = req.url.slice(1)? // 傳入連接的ws客戶端 實例化一個流? const stream = webSocketStream(ws, { binary: true })? // 通過ffmpeg命令 對實時流進行格式轉換 輸出flv格式? const ffmpegCommand = ffmpeg(url)? ? .addInputOption('-analyzeduration', '100000', '-max_delay', '1000000')? ? .on('start', function () { console.log('Stream started.') })? ? .on('codecData', function () { console.log('Stream codecData.') })? ? .on('error', function (err) {? ? ? console.log('An error occured: ', err.message)? ? ? stream.end()? ? })? ? .on('end', function () {? ? ? console.log('Stream end!')? ? ? stream.end()? ? })? ? .outputFormat('flv').videoCodec('copy').noAudio()? stream.on('close', function () {? ? ffmpegCommand.kill('SIGKILL')? })? try {? ? // 執(zhí)行命令 傳輸?shù)綄嵗髦蟹祷亟o客戶端? ? ffmpegCommand.pipe(stream)? } catch (error) {? ? console.log(error)? }}
優(yōu)點全部基于js。前端即可搞定。
參考: