本地摄像头在设备管理器中的名称是一样的,通过名称无法区分不同的摄像头且不能同时打开
环境: win10 / win11 + Qt 5.15.2 + MSVC2019 大佬,我本地插着四个USB摄像头,这四个摄像头在设备管理器中的名称是一样的,都叫AFN_Cap video 我想通过steMedia 接口同时打开这四个摄像头的话是不行的, 是我使用的方法不对吗
使用的是MDK-SDK中的qml示例工程
MDKPlayer {
id: player1
Layout.preferredWidth: parent.width / gridLayout.cols
Layout.preferredHeight: parent.height / gridLayout.rows
source: 'avdevice://dshow:video=AFN_Cap video'
Component.onCompleted: player1.play() // to early, will stopped by setSource()
}
MDKPlayer {
id: player2
Layout.preferredWidth: parent.width / gridLayout.cols
Layout.preferredHeight: parent.height / gridLayout.rows
source: 'avdevice://dshow:video=AFN_Cap video'
Component.onCompleted: player2.play() // to early, will stopped by setSource()
}
MDKPlayer {
id: player3
Layout.preferredWidth: parent.width / gridLayout.cols
Layout.preferredHeight: parent.height / gridLayout.rows
source: 'avdevice://dshow:video=AFN_Cap video'
Component.onCompleted: play() // to early, will stopped by setSource()
}
MDKPlayer {
id: player4
Layout.preferredWidth: parent.width / gridLayout.cols
Layout.preferredHeight: parent.height / gridLayout.rows
source: 'avdevice://dshow:video=AFN_Cap video'
Component.onCompleted: play() // to early, will stopped by setSource()
}
大佬,我找到一个办法了,因为我看你是使用ffmpeg的命令格式打开摄像头的,所以我沿着这个思路试了一下,使用: ffmpeg -list_devices true -f dshow -i dummy 获取到相机的一些额外信息,例如: @device_pnp_\?\usb#vid_0001&pid_ff02&mi_00#6&18fabf1&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
然后把source填写成: source: "avdevice://dshow:video=@device_pnp_\\?\usb#vid_0001&pid_ff02&mi_00#6&18fabf1&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
也可以打开摄像头,不知道这种方法咋样😀
我不清楚,能用就行,ffmpeg和命令行一样
终极解决方案看这里 http://www.qtcdev.com/video_system/#137-%E6%89%93%E5%BC%80%E6%9C%AC%E5%9C%B0%E6%91%84%E5%83%8F%E5%A4%B4