我想问一下在Windows上获取dshow设备格式列表是否有任何选择。
例如,我可以通过
获取Linux上的设备格式列表v4l2-ctl -i /dev/video0 --list-formats
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Index : 1
Type : Video Capture
Pixel Format: 'H264' (compressed)
Name : H.264
Index : 2
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
在Windows上,我可以获取设备列表
ffmpeg -list_devices true -f dshow -i dummy
和设备选项
ffmpeg -f dshow -list_options true -i video="MY_DSHOW_DEVICE_NAME"
但我无法获得格式列表,例如在Linux上通过v4l2。
如何在Windows上通过FFmpeg获取dshow设备支持的格式列表?
答案 0 :(得分:1)
对您问题的延迟回答。
不可能清楚地理解“格式列表”的含义,但是如果您参考使用Pixel Format
时出现的v4l2
,则可以从输出中获取此数据。您提到的-list_options
命令。
例如,在我的笔记本电脑上,运行ffmpeg -f dshow -list_options true -i video ="Integrated Webcam"
时有以下输出:
(为了便于查看,省略了第一行)
[dshow @ 000001cc91eea4c0] DirectShow video device options (from video devices)
[dshow @ 000001cc91eea4c0] Pin "Capture" (alternative pin name "0")
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=1280x720 fps=30 max s=1280x720 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=1280x720 fps=30 max s=1280x720 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=960x540 fps=30 max s=960x540 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=960x540 fps=30 max s=960x540 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=848x480 fps=30 max s=848x480 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=848x480 fps=30 max s=848x480 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=1280x720 fps=30 max s=1280x720 fps=30
[dshow @ 000001cc91eea4c0] vcodec=mjpeg min s=1280x720 fps=30 max s=1280x720 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=640x480 fps=30 max s=640x480 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=640x480 fps=30 max s=640x480 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=160x120 fps=30 max s=160x120 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=160x120 fps=30 max s=160x120 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=320x180 fps=30 max s=320x180 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=320x180 fps=30 max s=320x180 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=320x240 fps=30 max s=320x240 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=320x240 fps=30 max s=320x240 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=424x240 fps=30 max s=424x240 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=424x240 fps=30 max s=424x240 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=640x360 fps=30 max s=640x360 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=640x360 fps=30 max s=640x360 fps=30
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=1280x720 fps=10 max s=1280x720 fps=10
[dshow @ 000001cc91eea4c0] pixel_format=yuyv422 min s=1280x720 fps=10 max s=1280x720 fps=10
如您所见,在这种情况下,vcodec
和pixel_format
键中包含的数据与在v4l2
的{{1}}中可以找到的值相同Pixel Format
和mjpeg
。
如果您想要的是文本格式与yuyv422
相同的输出,那么我知道可以用正则表达式解决,例如,它与v4l2
没有直接关系。