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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

虚拟机使用pc摄像头

發(fā)布時間:2024/3/26 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 虚拟机使用pc摄像头 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.win+r打開運行。
2.在運行中鍵入services.msc回車,打開服務。
3.右邊下拉找到VMware Authorization Service。
4.雙擊打開屬性,啟動類型->自動,點擊驅動,點擊應用,點擊確定。這個時候已經授權虛擬機能訪問到攝像頭了。
5.打開虛擬機,點擊"虛擬機"->可移動設備,找到攝像頭camera,點擊鏈接。此時虛擬機完成對攝像頭的接管。
6.查看在/dev/下有video的文件。

安裝cheese,打開攝像頭:

sudo apt-get install cheese

在終端輸入cheese回車->此時可以看到打開的攝像頭。

查看設備類型

ffmpeg -devices

可以看到有video4linux2,v4l2這個選項
“ v4l2”可以用作“ video4linux2”的別名。
alsa是音頻類型,見另一篇:虛擬機使用pc麥克風聲卡

根據設備類型查看具體設備名

ffmpeg -sources video4linux2

ffmpeg -sources v4l2

可以看到有這兩個設備,這兩個設備對應pc的攝像頭

/dev/video1 [Integrated Camera: Integrated I]/dev/video0 [Integrated Camera: Integrated C]

用命令打開攝像頭,另一個不能用來打開

ffplay -f video4linux2 -video_size 640x480 -pixel_format yuyv422 -framerate 30 -i /dev/video0

查看設備輸入輸出參數

ffmpeg -h demuxer=v4l2

如查看都支持哪些像素格式

ffplay -f video4linux2 -list_formats all /dev/video0

這些選項也可以用代碼設置,"video_size"等名稱與ffmpeg -h demuxer=v4l2 命令列舉的名稱一樣。
AVDictionary *options = NULL;
av_dict_set(&options, “video_size”, “1920x1080”, 0);
av_dict_set(&options, “framerate”, “30”, 0);
//以上參數如果不設置的話,ffmpeg就會用默認值,但默認值攝像頭不一定支持
int re = avformat_open_input(&ic, “/dev/video0”, ifmt, &options);

其次對于顯示在/dev/video中的攝像頭其實都是支持UVC協議的攝像頭,一般說攝像頭免驅動也是基于UVC開發(fā)的,我們可以用luvcview這款軟件查看所有基于UVC的攝像頭的信息,對于ubuntu12,可以直接執(zhí)行下列命令安裝,因為當時是為ubuntu12設計的:
sudo apt-get install luvcview
對于其他版本,可以到官網下載deb包安裝,連接:
luvcview_0.2.6-5_amd64.deb (52.3 KiB)
安裝好后
打開攝像頭

luvcview -l

打開攝像頭

luvcview -d /dev/video1 -f yuv -s 640x480

查看設備支持的像素格式和幀率

luvcview -d /dev/video0 -L

可以看到支持的像素格式:MJPG YUYV RGB3 BGR3 YU12 YV12
Time interval between frame: 1/30 也就是幀間的時間間隔,也就是幀率了。

luvcview 0.2.6SDL information:Video driver: x11A window manager is available Device information:Device path: /dev/video0 { pixelformat = 'MJPG', description = 'Motion-JPEG' } { discrete: width = 1280, height = 720 }Time interval between frame: 1/30, { discrete: width = 320, height = 180 }Time interval between frame: 1/30, { discrete: width = 320, height = 240 }Time interval between frame: 1/30, { discrete: width = 352, height = 288 }Time interval between frame: 1/30, { discrete: width = 424, height = 240 }Time interval between frame: 1/30, { discrete: width = 640, height = 360 }Time interval between frame: 1/30, { discrete: width = 640, height = 480 }Time interval between frame: 1/30, { discrete: width = 848, height = 480 }Time interval between frame: 1/30, { discrete: width = 960, height = 540 }Time interval between frame: 1/30, { pixelformat = 'YUYV', description = 'YUYV 4:2:2' } { discrete: width = 640, height = 480 }Time interval between frame: 1/30, { discrete: width = 320, height = 180 }Time interval between frame: 1/30, { discrete: width = 320, height = 240 }Time interval between frame: 1/30, { discrete: width = 352, height = 288 }Time interval between frame: 1/30, { discrete: width = 424, height = 240 }Time interval between frame: 1/30, { discrete: width = 640, height = 360 }Time interval between frame: 1/30, { discrete: width = 848, height = 480 }Time interval between frame: 1/20, { discrete: width = 960, height = 540 }Time interval between frame: 1/15, { discrete: width = 1280, height = 720 }Time interval between frame: 1/10, { pixelformat = 'RGB3', description = 'RGB3' } { discrete: width = 1280, height = 720 }Time interval between frame: 1/30, { discrete: width = 320, height = 180 }Time interval between frame: 1/30, { discrete: width = 320, height = 240 }Time interval between frame: 1/30, { discrete: width = 352, height = 288 }Time interval between frame: 1/30, { discrete: width = 424, height = 240 }Time interval between frame: 1/30, { discrete: width = 640, height = 360 }Time interval between frame: 1/30, { discrete: width = 640, height = 480 }Time interval between frame: 1/30, { discrete: width = 848, height = 480 }Time interval between frame: 1/20, { discrete: width = 960, height = 540 }Time interval between frame: 1/30, { pixelformat = 'BGR3', description = 'BGR3' } { discrete: width = 1280, height = 720 }Time interval between frame: 1/30, { discrete: width = 320, height = 180 }Time interval between frame: 1/30, { discrete: width = 320, height = 240 }Time interval between frame: 1/30, { discrete: width = 352, height = 288 }Time interval between frame: 1/30, { discrete: width = 424, height = 240 }Time interval between frame: 1/30, { discrete: width = 640, height = 360 }Time interval between frame: 1/30, { discrete: width = 640, height = 480 }Time interval between frame: 1/30, { discrete: width = 848, height = 480 }Time interval between frame: 1/20, { discrete: width = 960, height = 540 }Time interval between frame: 1/30, { pixelformat = 'YU12', description = 'YU12' } { discrete: width = 1280, height = 720 }Time interval between frame: 1/30, { discrete: width = 320, height = 180 }Time interval between frame: 1/30, { discrete: width = 320, height = 240 }Time interval between frame: 1/30, { discrete: width = 352, height = 288 }Time interval between frame: 1/30, { discrete: width = 424, height = 240 }Time interval between frame: 1/30, { discrete: width = 640, height = 360 }Time interval between frame: 1/30, { discrete: width = 640, height = 480 }Time interval between frame: 1/30, { discrete: width = 848, height = 480 }Time interval between frame: 1/20, { discrete: width = 960, height = 540 }Time interval between frame: 1/30, { pixelformat = 'YV12', description = 'YV12' } { discrete: width = 1280, height = 720 }Time interval between frame: 1/30, { discrete: width = 320, height = 180 }Time interval between frame: 1/30, { discrete: width = 320, height = 240 }Time interval between frame: 1/30, { discrete: width = 352, height = 288 }Time interval between frame: 1/30, { discrete: width = 424, height = 240 }Time interval between frame: 1/30, { discrete: width = 640, height = 360 }Time interval between frame: 1/30, { discrete: width = 640, height = 480 }Time interval between frame: 1/30, { discrete: width = 848, height = 480 }Time interval between frame: 1/20, { discrete: width = 960, height = 540 }Time interval between frame: 1/30, ffplay -f video4linux2 -framerate 60 -video_size 1920x1080 -pixel_format mjpeg -i /dev/video4

用mjpeg的方式播放,并設置幀率。

如果你想把其他的raw流放入/dev/video設備中,也是可以用ffmpeg推流的:

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

以上把屏幕推流到/dev/video0上,但video0是必須是虛擬設備,不對應實際device
如何設置虛擬/dev/video參考:https://www.cnblogs.com/xl2432/p/13501145.html

補充:
ffmpeg的libavdevice模塊支持的計算機中常用的音視頻捕獲或輸出設備:ALSA、AUDIO_BEOS 、JACK、OSS、1394、VFW等。

總結

以上是生活随笔為你收集整理的虚拟机使用pc摄像头的全部內容,希望文章能夠幫你解決所遇到的問題。

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