You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg使用dshow时含冒号的USB麦克风名称转义失败如何解决

问题描述

我使用FFmpeg录屏时,以下命令可正常运行:

ffmpeg -f dshow -i audio="Microphone Array (Full HD 1080P PC Camera Audio)" -f gdigrab -offset_x 0 -offset_y 0 -video_size 500x500 -framerate 30 -i desktop -pix_fmt yuv420p -vcodec libx264 -crf 28 -preset ultrafast -tune zerolatency  -movflags +faststart  "recording.mp4"

但换用名称为*Microphone 1:2 (USB PnP Sound Device)*的USB麦克风时,出现如下错误:

[dshow @ 0000028f718db740] Malformed dshow input string.
audio=Microphone 1:2 (USB PnP Sound Device): I/O error

尝试用\和\\转义冒号后仍报错,求解决方法。

解决方法

针对dshow设备名称包含冒号等特殊字符的问题,有两种可靠解决方式:

  • 方案1:用花括号包裹设备名称
    将音频设备名用{}包裹,同时保留外层双引号,修改后的命令如下:

    ffmpeg -f dshow -i audio="{Microphone 1:2 (USB PnP Sound Device)}" -f gdigrab -offset_x 0 -offset_y 0 -video_size 500x500 -framerate 30 -i desktop -pix_fmt yuv420p -vcodec libx264 -crf 28 -preset ultrafast -tune zerolatency  -movflags +faststart  "recording.mp4"
    

    花括号可以让dshow正确识别包含特殊字符的设备名,避免冒号被解析为输入参数的分隔符。

  • 方案2:使用设备的GUID路径
    先执行命令列出所有dshow设备,找到目标麦克风对应的完整设备路径:

    ffmpeg -list_devices true -f dshow -i dummy
    

    在输出的音频设备列表中,会显示类似@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}的GUID路径,将其替换到录屏命令中即可,示例:

    ffmpeg -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{12345678-1234-5678-1234-567812345678}" -f gdigrab -offset_x 0 -offset_y 0 -video_size 500x500 -framerate 30 -i desktop -pix_fmt yuv420p -vcodec libx264 -crf 28 -preset ultrafast -tune zerolatency  -movflags +faststart  "recording.mp4"
    

    这种方式完全避开了设备名中的特殊字符,兼容性更强。


内容的提问来源于stack exchange,提问作者Riz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:55:13