设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3441|回复: 7
打印 上一主题 下一主题

視頻選擇 Webcam 裝置問題

[复制链接]

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
跳转到指定楼层
楼主
发表于 2014-6-5 17:23:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位前輩好小弟(我)最近在著手修改別人的視訊程式
程式是用 AnyChat

目前能夠連線及通話
不過我想要加上 Video 裝置選擇

原本若沒有下指令
視訊裝置是會先抓預設的

目前我知道SDK 提供一些Fuction 可以處理

1.EnumVideoCapture( )
  ↑ 這個指令可以找出連接在電腦上的裝置
2.SelectVideoCapture("裝置名稱")
  ↑ 指定視訊裝置


其中 1.EnumVideoCapture( )
已經可以讀取到裝置名稱  ( 例如:"1-Logitech Webcam 120" )
但我無法將想要使用的裝置帶到系統裡

int ret = AnyChatCoreSDK.SelectVideoCapture(" 1-Logitech Webcam 120 ");
使用指令狀況
          1.在初始前   AnyChatCoreSDK.Init :永遠執行失敗 ( ret = 2 )
          2.在初始後   AnyChatCoreSDK.Init :永遠執行成功,即使裝置名稱是錯的 ( ret = 0 )


請問一下我該如何解決?

BRAnyChatCore.rar

1.22 KB, 下载次数: 2

AnyChat記錄檔

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
沙发
发表于 2014-6-5 17:34:50 | 只看该作者
您好,枚举摄像头和选择摄像头裁剪设备都是需要在初始化之后的,初始化之前调用返回2是正常的
回复 支持 反对

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
板凳
 楼主| 发表于 2014-6-5 17:48:51 | 只看该作者
廖斌 发表于 2014-6-5 17:34
您好,枚举摄像头和选择摄像头裁剪设备都是需要在初始化之后的,初始化之前调用返回2是正常的

可能我不是很清楚運作原理才會問這類的問題
不過我有稍微閱讀一些相關文件
有一點點概念

我覺得奇怪的是

我有一台 Webcam "1-Logitech Webcam 120"
初始化之後我有下指令

int ret = AnyChatCoreSDK.SelectVideoCapture("abcd");  (ABCD代表是亂輸入當做測試)

他還是回傳成功...可否請教一下這個應該要放在哪個部分?
目前看記錄檔 (log) 好像沒有真的抓到
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9079

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9079
地板
发表于 2014-6-5 18:38:23 | 只看该作者
您好!
其中 1.EnumVideoCapture( )
已經可以讀取到裝置名稱  ( 例如:"1-Logitech Webcam 120" )
但我無法將想要使用的裝置帶到系統裡

请问您所说的“装置“是USB Camera吗?是否有接到计算上?通常情况下,只要USB Camera接到计算机上,便可以通过API接口”EnumVideoCapture“枚举出来。

另外根据log,您目前所使用的SDK还是较早期的版本:
  1. Load SDK Success, dwFuncMode:0x3fe,V4.7(Build Time:Apr  3 2013 10:02:38)
复制代码
,建议升级到最新版本,参考:http://www.anychat.cn/download.html
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9079

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9079
5#
发表于 2014-6-5 18:41:59 | 只看该作者

有关本地视频摄像头的枚举,请参考如下的代码:
  1. int iDeviceCount = -1;
  2. IntPtr[] lpDevicePtrs;

  3. // 枚举系统所有的视频设备
  4. int ret = AnyChatCoreSDK.EnumVideoCapture(null, ref iDeviceCount);
  5. if(ret != 0 || iDeviceCount == 0)
  6.         return;
  7. lpDevicePtrs = new IntPtr[iDeviceCount];
  8. ret = AnyChatCoreSDK.EnumVideoCapture(lpDevicePtrs, ref iDeviceCount);

  9. cbxCamera.Items.Clear();
  10. foreach (IntPtr p in lpDevicePtrs)
  11. {
  12.         string device = Marshal.PtrToStringAnsi(p);    // 如果是Unicode版本,需要使用:Marshal.PtrToStringUni(p);
  13.         if (string.IsNullOrEmpty(device) == false)
  14.         {
  15.                 cbxCamera.Text = device;
  16.                 cbxCamera.Items.Add(device);
  17.         }
  18. }

  19. // 获取当前视频采集设备
  20. StringBuilder sb = new StringBuilder(1024);
  21. AnyChatCoreSDK.GetCurVideoCapture(sb, sb.Capacity);
  22. if (string.IsNullOrEmpty(sb.ToString()) == false)
  23.         cbxCamera.Text = sb.ToString();
  24. else if (cbxCamera.Items.Count > 0)
  25.         cbxCamera.Text = cbxCamera.Items[0].ToString();
复制代码
回复 支持 反对

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
6#
 楼主| 发表于 2014-6-5 22:32:56 | 只看该作者
admin 发表于 2014-6-5 18:41
有关本地视频摄像头的枚举,请参考如下的代码:

首先, 要謝謝前輩們不吝嗇的指教
關於  "本地视频摄像头的枚举"  我其實就是參考這篇

是我描述得不夠清楚
我把我問題講得清楚一點

因為某些情況會有一台以上的 Camera
(包括內建、USB Camera )
或是(筆電內建前後鏡頭)

我會需要用到 "本地视频摄像头的枚举" 的原因
是因為我用 SelectVideoCapture 都沒有效果
我不曉得  SelectVideoCapture 這個 Function 的參數 ( 裝置名稱 ) 有沒有帶錯

先前就是透過這篇代碼查出  ( 裝置名稱 ) 為 "1-Logitech Webcam 120"
但我帶回 SelectVideoCapture 還是無效
所以斗膽問問前輩們~

SelectVideoCapture 的指令
我現在是放在 "初始化"之後
但還是無效
是我少了甚麼觀念嗎?

還請多多指教
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9079

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9079
7#
发表于 2014-6-6 09:13:00 | 只看该作者
int ret = AnyChatCoreSDK.SelectVideoCapture("abcd");  (ABCD代表是亂輸入當做測試)
您好,您选择的设备应该是枚举出来的设备,如:
    AnyChatCoreSDK.SelectVideoCapture("1-Logitech Webcam 120");
或是:
    AnyChatCoreSDK.SelectVideoCapture("2-xxxx");

通常来说,在初始化成功之后,可以在任何时间选择设备,除非该设备被其它应用程序占用,否则都可以打开成功。

因為某些情況會有一台以上的 Camera
(包括內建、USB Camera )
或是(筆電內建前後鏡頭)

另外,您枚举出来几个视频采集设备,枚举出来的设备名称分别是?

回复 支持 反对

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
8#
 楼主| 发表于 2014-6-6 13:56:56 | 只看该作者
AnyChatCoreSDK.SelectVideoCapture("2-xxxx");

看到這個紅字點醒了小弟
因為手邊沒有能直接測試的 Camera
所以都直接手寫

問題已經解決了
問題出在
          1.版本
          2.帶入 WebCam 字串前面的數字 "2-Logitech Webcam 120"
會試這麼久的原因
也是要跟自己的應用軟體結合
才會有些限制
沒辦法隨心所欲的改

真的很謝謝你們!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-5-5 21:36 , Processed in 0.128786 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表