我正在尝试在具有两个相同捕获卡的系统上编写 FFmpeg 命令,因此我必须使用它们的“备用名称”,否则 FFmpeg 无法理解我正在调用哪一个。
唯一的问题是备用名称非常长,尤其是通过 dshow 调用音频和视频时:
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global":audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}"
Run Code Online (Sandbox Code Playgroud)
我想在调用音频之前打破这个“字符串”中线,以使其更具可读性,如下所示:
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"`
:audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}"
Run Code Online (Sandbox Code Playgroud)
然而,反引号在这种情况下似乎不起作用,我猜是因为它与角色接壤?如果 I 和反引号前有一个空格,则会破坏字符串并且 FFmpeg 会出错:
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" `
:audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}"
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Powershell 中将其拆分为多行?
编辑 - 全功能命令:
ffmpeg -y -hide_banner -thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global":audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}" `
-thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&24df76f&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global":audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0A494693-5F33-4304-88D7-394757E09648}" `
-map 0:0,0:1 -map 0:1 -map 1:0,1:1 -map 1:1 -c:v h264_nvenc …Run Code Online (Sandbox Code Playgroud) 所以我一直在用 ffmpeg 遇到这个问题,这是一个让硬件和命令真正做我想做的事情的旅程,但我仍然有一个问题。
有时,当我录制时,我只是开始疯狂丢帧,这可能是在录制一个小时甚至十个小时之后......一切都会正常工作,然后突然间我会因为“实时性”而开始丢帧缓冲区太满或接近太满”。无论我将比特率设置为多低,都会发生这种情况,并且缓冲区大小在允许的范围内很高,最终我将开始丢帧。几乎看起来像是一个省电功能正在启动,但它似乎太不一致了。就像我说的,有时我可以走 10 个小时而没有这个问题。
有任何想法吗?
这是我的代码块:
ffmpeg -guess_layout_max 0 -y -f dshow -video_size 3440x1440 -rtbufsize 2147.48M -pixel_format nv12 -framerate 200 ^
-i video="Video (00 Pro Capture HDMI 4K+)":audio="SPDIF/ADAT (1+2) (RME Fireface UC)" -map 0:0,0:1 -map 0:1 ^
-preset: llhp -codec:v h264_nvenc -pix_fmt nv12 -b:v 250M -maxrate:v 250M -minrate:v 250M -bufsize:v 250M -b:a 320k ^
-ac 2 -r 100 -async 1 -vsync 1 -segment_time 600 -segment_wrap 9 -f segment C:\Users\djcim\Videos\PC\PC%02d.mp4 ^
-guess_layout_max 0 -f dshow -rtbufsize 2000M -i audio="Analog …Run Code Online (Sandbox Code Playgroud)