【问题标题】:FFmpeg dshow device format listFFmpeg dshow 设备格式列表
【发布时间】:2017-09-27 11:54:46
【问题描述】:

我想问有没有办法在 Windows 上获取 dshow 设备格式列表。

例如在 Linux 上,我可以通过

在 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"

但我无法获取格式列表,例如通过 v4l2 在 Linux 上。

如何在 Windows 上通过 FFmpeg 获取 dshow 设备支持的格式列表?

【问题讨论】:

    标签: ffmpeg ffdshow


    【解决方案1】:

    延迟回答您的问题。

    你说的“格式列表”是什么意思不太清楚,但是如果你参考使用v4l2时出现的Pixel Format,那么你可以从-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
    

    如您所见,vcodecpixel_format 键中包含的数据与您在 v4l2Pixel Format 中找到的值相同,在本例中为 mjpegyuyv422,分别。

    如果您想要的是与v4l2 具有相同文本格式的输出,那么我知道这可以使用正则表达式来解决,例如,它与FFmpeg 没有直接关系。

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多