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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows平台RTMP推送摄像头对接介绍

發(fā)布時(shí)間:2025/3/12 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows平台RTMP推送摄像头对接介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

好多開發(fā)者在對(duì)接大牛直播SDK(官方)的Windows平臺(tái)RTMP推送時(shí),不熟悉攝像頭調(diào)用,實(shí)際上,攝像頭調(diào)用邏輯并不復(fù)雜,以下是大概流程:

  • 首先調(diào)用我們sdk接口獲取攝像頭個(gè)數(shù),調(diào)用接口是:GetVideoCaptureDeviceNumber()
  • 接著需要獲取每個(gè)攝像頭的id和name,調(diào)用接口是:GetVideoCaptureDeviceInfo()
  • 接下來(lái)針對(duì)某個(gè)指定的攝像頭,需要獲取它的分辨率列表個(gè)數(shù),?調(diào)用接口是:GetVideoCaptureDeviceCapabilityNumber()
  • 根據(jù)攝像頭id和分辨率的index,獲取實(shí)際的分辨率,調(diào)用接口:GetVideoCaptureDeviceCapability()
  • 對(duì)的,比如一個(gè)攝像頭有四個(gè)分辨率?(1920*1080,1080*720,640*480,?320*240),?調(diào)用GetVideoCaptureDeviceCapabilityNumber?拿到的值就是4,想拿第一個(gè)index的分辨率,就傳入GetVideoCaptureDeviceCapability(id,?0,?capability)。

    接口對(duì)接

    以C#設(shè)計(jì)為例,接口設(shè)計(jì)如下:

    /** 獲取攝像頭數(shù)量* * pNumer: 返回設(shè)備數(shù)量* * 成功返回 NT_ERC_OK*/[DllImport(@"SmartPublisherSDK.dll")]public static extern UInt32 NT_PB_GetVideoCaptureDeviceNumber(ref Int32 pNumer);/** 返回?cái)z像頭設(shè)備信息* * device_index: 設(shè)備索引* device_name_utf8: 設(shè)備名稱,傳NULL將不返回名稱,如果不是NULL的話, device_name_length必須大于等于256, 返回utf8編碼的設(shè)備名稱* device_name_length: 設(shè)備名稱緩沖大小,如果device_name_utf8是NULL,則傳入0, 否則必須大于等于256* device_unique_id_utf8: 設(shè)備唯一ID, 傳NULL將不返回ID,如果不傳NULL的話,device_unique_id_length必須大于等于1024,返回utf8編碼的設(shè)備ID* device_unique_id_length: 設(shè)備唯一ID緩沖代銷, 如果是device_unique_id_utf8NULL, 則傳入0,否則必須大于等于1024* * 成功返回 NT_ERC_OK*/[DllImport(@"SmartPublisherSDK.dll")]public static extern UInt32 NT_PB_GetVideoCaptureDeviceInfo(Int32 device_index,[MarshalAs(UnmanagedType.LPStr)] StringBuilder device_name_utf8,UInt32 device_name_length,[MarshalAs(UnmanagedType.LPStr)] StringBuilder device_unique_id_utf8,UInt32 device_unique_id_length);/** 返回?cái)z像頭能力數(shù)* * device_unique_id_utf8: 設(shè)備唯一id* capability_number: 返回的設(shè)備能力數(shù)* * 成功返回 NT_ERC_OK*/[DllImport(@"SmartPublisherSDK.dll")]public static extern UInt32 NT_PB_GetVideoCaptureDeviceCapabilityNumber([MarshalAs(UnmanagedType.LPStr)] String device_unique_id_utf8,ref Int32 capability_number);/** 返回?cái)z像頭能力* * device_unique_id_utf8: 設(shè)備唯一id* device_capability_index: 設(shè)備能力索引* capability: 設(shè)備能力* * 成功返回 NT_ERC_OK*/[DllImport(@"SmartPublisherSDK.dll", EntryPoint = "NT_PB_GetVideoCaptureDeviceCapability", CallingConvention = CallingConvention.StdCall)]public static extern UInt32 NT_PB_GetVideoCaptureDeviceCapability([MarshalAs(UnmanagedType.LPStr)] String device_unique_id_utf8,Int32 device_capability_index,ref NT_PB_VideoCaptureCapability capability);

    調(diào)用邏輯如下:

    private void FillCameraInfo(){int device_number = 0;if (NTBaseCodeDefine.NT_ERC_OK != NTSmartPublisherSDK.NT_PB_GetVideoCaptureDeviceNumber(ref device_number)){return;}if (device_number < 1){return;}cameras_.Clear();for (int i = 0; i < device_number; ++i){CameraInfo info = new CameraInfo();info.capabilities_ = new List<NT_PB_VideoCaptureCapability>();StringBuilder name = new StringBuilder(256);StringBuilder id = new StringBuilder(1024);if (NTBaseCodeDefine.NT_ERC_OK != NTSmartPublisherSDK.NT_PB_GetVideoCaptureDeviceInfo(i,name, 256,id, 1024)){continue;}info.name_ = name.ToString();info.id_ = id.ToString();int capability_number = 0;if (NTBaseCodeDefine.NT_ERC_OK != NTSmartPublisherSDK.NT_PB_GetVideoCaptureDeviceCapabilityNumber(id.ToString(), ref capability_number)){continue;}bool is_failed = false;for (int j = 0; j < capability_number; ++j){NT_PB_VideoCaptureCapability capability = new NT_PB_VideoCaptureCapability();if (NTBaseCodeDefine.NT_ERC_OK != NTSmartPublisherSDK.NT_PB_GetVideoCaptureDeviceCapability(id.ToString(), j, ref capability)){is_failed = true;break;}info.capabilities_.Add(capability);}if (!is_failed){cameras_.Add(info);}}}

    在此之前,需要設(shè)置是采集攝像頭,還是屏幕或者窗口:

    /*定義Video源選項(xiàng)*/public enum NT_PB_E_VIDEO_OPTION : uint{NT_PB_E_VIDEO_OPTION_NO_VIDEO = 0x0,NT_PB_E_VIDEO_OPTION_SCREEN = 0x1, // 采集屏幕NT_PB_E_VIDEO_OPTION_CAMERA = 0x2, // 攝像頭采集NT_PB_E_VIDEO_OPTION_LAYER = 0x3, // 視頻合并,比如桌面疊加攝像頭等NT_PB_E_VIDEO_OPTION_ENCODED_DATA = 0x4, // 已經(jīng)編碼的視頻數(shù)據(jù),目前支持H264NT_PB_E_VIDEO_OPTION_WINDOW = 0x5, // 采集窗口}

    更詳細(xì)的集成參考,參見:Windows平臺(tái)RTMP直播推送集成簡(jiǎn)要說(shuō)明_樂學(xué)吧-CSDN博客

    總結(jié)

    以上是生活随笔為你收集整理的Windows平台RTMP推送摄像头对接介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美在线视频第一页 | 欧美激情69 | 日韩理论片 | 欧美黑人xxxⅹ高潮交 | 免费在线国产 | 午夜成人亚洲理伦片在线观看 | 国产日本欧美一区二区 | 国内毛片毛片毛片毛片 | 青青伊人国产 | 黄色免费在线观看网站 | av嫩草| 国产情侣小视频 | 色伊伊| 欧洲精品无码一区二区 | av优选在线观看 | 天天综合干 | 国产精品久久久爽爽爽麻豆色哟哟 | 懂色av一区二区 | 91国偷自产一区二区三区女王 | 国产操操操 | a天堂在线观看 | 生活片av| 久久久精品一区 | 精品久久久久久中文字幕 | 免费国产黄色网址 | 超碰69| 粗大黑人巨茎大战欧美成人免费看 | 永久免费视频网站 | 亚洲视频在线免费观看 | 日本免费一区视频 | 欧美日韩人妻精品一区在线 | 免费在线播放黄色片 | 六月丁香婷婷激情 | 日本一二三区视频在线 | 成人禁污污啪啪入口 | 手机在线永久免费观看av片 | 亚洲24p| 亚洲第一大综合区 | 亚洲人久久 | 久久99精品久久久水蜜桃 | 国产日本欧美在线观看 | 欧美浓毛大泬视频 | 成人免费看片载 | www国产精品视频 | 在线中文字幕第一页 | 涩涩网站在线观看 | 国产欧美在线一区 | 午夜国产福利视频 | 欧美国产中文字幕 | 一区久久久 | 亚洲免费视频一区二区三区 | 亚洲成人999| 伊人亚洲影院 | 婷婷四房播播 | 日韩欧美国产一区二区三区 | 中文字幕av一区二区三区谷原希美 | 一级久久久久 | 人妻无码久久精品人妻 | 日韩一区二区av | 国产精品免费av一区二区 | 黄色三级在线观看 | 欧美综合一区 | 国产精品无码一区二区三区免费 | 91精品国产高清 | 欧美精品一区二 | 人妻少妇一区二区 | 久久er99热精品一区二区介绍 | www午夜| 三级男人添奶爽爽爽视频 | 精品国产午夜福利在线观看 | www.国产色 | 大桥未久视频在线观看 | 97视频在线免费观看 | 亚洲热热| 99久久精品国产一区二区成人 | 朴银狐电影中文在线看 | 亚洲蜜桃av | 韩国美女视频在线观看18 | www日本在线 | 性少妇videosexfre | 久久网亚洲 | 关之琳三级全黄做爰在线观看 | 99re这里有精品 | 欧美作爱视频 | 成人欧美一区二区三区白人 | 欧美看片 | 一区二区三区在线看 | 在线看毛片网站 | 欧美aaaaaaa | 精品欧美激情精品一区 | 日韩成人免费电影 | 欧美成人精品一区 | 日本少妇三级 | 中文字幕第五页 | 天天舔天天爽 | 日本在线视频免费观看 | 高h免费视频 | 黄色在线免费观看视频 | 国产青草|