日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 实现海康摄像头在任意浏览器中预览

發布時間:2024/1/18 C# 116 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 实现海康摄像头在任意浏览器中预览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩周以來一直研究海康視頻在谷歌、火狐等瀏覽器中的顯示問題。在今天終于有了一點小心得。發表出來,希望有問題或者其他建議的老師積極給我建議。

在海康瀏覽器的平臺中,因為他本身只支持在IE或者IE內核中顯示,這種問題不能根本性的解決在多瀏覽器里面的問題,我在網上查找了IE-Tab在谷歌瀏覽器中顯示,但是由于需要用戶手動切換瀏覽模式,所以說用起來不是特別方便。后面研究了一下,可以通過海康PlantFormSdk+TCP協議+Websocket的方式進行推流,在瀏覽器中通過img顯示base64的方式顯示視頻,通過以上方式基本上可以實現視頻同步預覽,具體思路如下。

1.服務器端通過使用winform監聽方式監聽瀏覽器端連接預覽的攝像頭,如果為同一個攝像頭時,則通過字典的方式對改連接和IP及Socket進行保存,當不同的連接同一個攝像頭的時候,通過字典保存多個TCP連接。

2.推流:推流方式采用TCP協議的方式,當前我才用的是每隔500ms,對顯示的picturebox進行截屏,在截屏之后,通過代碼將截屏的bitmap轉換成base64字符串流,通過TCP協議推送當前攝像頭連接的網絡地址。

3.接受:在web端通過websocket進行接受傳輸的base64字符串,因為當前比較長,所以我才用的手動分包的方式進行傳輸。

?

圖中分別表示三個單例類,一個是網絡連接、一個是當前連接及當前運行的線程。

public static void SendMessage(string obj, string data)

{

var max = data.Length % 100 == 0 ? data.Length / 100 : data.Length / 100 + 1;

try

{

int i;

for (i = 0; i < max; i++)

{

string send;

if (i == 0)

{

send = $"0,{data.Length}," + data.Substring(0, 100);

}

else if (i == max - 1 && data.Length % 100 != 0)

{

send = $"{i},0," + data.Substring(i * 100, data.Length % 100);

}

else

{

send = $"{i},0," + data.Substring(i * 100, 100);

}

byte[] msgBuffer = PackageServerData(send);

foreach (Session se in SingleConnect.GetInstance()[obj].Select(t => t.Session))

{

if (se.SockeClient.Connected)

{

try

{

se.SockeClient.Send(msgBuffer, msgBuffer.Length, SocketFlags.None);

}

catch (Exception ex)

{

LogHelper.WriteError("發送數據異常", ex);

}

}

}

}

}

catch (Exception ex)

{

LogHelper.WriteError("相應數據異常", ex);

}

}

這段代碼為相應的發送代碼。

?

調用發送代碼的截圖方法。

?

以上為實時監控圖,第一張圖為監聽的連接,第二張圖是在谷歌瀏覽器中顯示的圖,第三張圖是在winform中顯示的圖。

文章水平不是很高,希望對大家有所幫助。如果有問題可以直接私聊我

總結

以上是生活随笔為你收集整理的C# 实现海康摄像头在任意浏览器中预览的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。