gpt4 book ai didi

ffmpeg - 使用 ffmpeg 和 directshow 从 USB Grabber 捕获设备规范内的视频问题

转载 作者:行者123 更新时间:2023-12-04 23:13:24 29 4
gpt4 key购买 nike

我正在使用 USB Grabber(这个:http://www.logilink.com/Suche/vg0001a)来捕捉一些旧的 VHS 镜头。我正在使用带有directshow的ffmpeg来做到这一点。设备属性如下:

[dshow @ 000001d57618a300] DirectShow video device options (from video devices)
[dshow @ 000001d57618a300] Pin "Capture" (alternative pin name "0")
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=720x480 fps=5 max s=720x480 fps=30
[dshow @ 000001d57618a300] pixel_format=yuyv422 min s=720x576 fps=5 max s=720x576 fps=30
[dshow @ 000001d57618a300] pixel_format=yuv420p min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 000001d57618a300] pixel_format=yuv420p min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 000001d57618a300] pixel_format=yuv420p min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 000001d57618a300] pixel_format=yuv420p min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 000001d57618a300] pixel_format=yuv420p min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 000001d57618a300] Crossbar Switching Information for USB2.0 Grabber:
[dshow @ 000001d57618a300] Crossbar Output pin 0: "Video Decoder" related output pin: 1 current input pin: 0 compatible input pins: 0 1
[dshow @ 000001d57618a300] Crossbar Output pin 1: "Audio Decoder" related output pin: 0 current input pin: 4 compatible input pins: 3 4
[dshow @ 000001d57618a300] Crossbar Input pin 0 - "Video Composite" related input pin: 4
[dshow @ 000001d57618a300] Crossbar Input pin 1 - "S-Video" related input pin: 4
[dshow @ 000001d57618a300] Crossbar Input pin 2 - "Video Tuner" related input pin: 3
[dshow @ 000001d57618a300] Crossbar Input pin 3 - "Audio Tuner" related input pin: 2
[dshow @ 000001d57618a300] Crossbar Input pin 4 - "Audio Line" related input pin: 0

我进行了一些测试,可以使用以下命令在 yuv420p 和 yuyv422 的各种分辨率下即时捕获和重新编码:
ffmpeg -f dshow -pixel_format yuyv422 -video_size 720x480 -framerate 25 -i video="USB2.0 Grabber":audio="Digital Audio Interface (USB Audio Interface)" -c:v libx264 -crf 18 -aspect 4:3 -vf "yadif=1" -pix_fmt yuv420p -c:a aac -b:a 392k capture.mp4
但是,当我设置 -pixel_format yuyv422 -video_size 720x576 -framerate 25在设备规范范围内,该过程失败并返回 Too many packets buffered for output stream 0:1. .我尝试使用 -rtbufsize 增加缓冲区大小并且在该过程开始时,永远不会捕获视频,并且在转换时帧数停留在零 - 音频被很好地捕获。

我认为是编码跟不上,而是流式传输视频或使用 -vcodec copy 捕获原始视频源我遇到同样的问题。

使用 VLC 从捕获设备播放仅在使用 720x576 作为大小时播放音频,而较低的分辨率可以正常播放,这让我认为问题出在设备上,或者我遗漏了一些特定的直接显示选项。

有任何想法吗?

最佳答案

我设法通过将 directshow 视频格式设置为 PAL 选项来解决这个问题(默认情况下它设置为 NTSC)。我可以从另一个利用 directshow 捕获的应用程序执行此操作,或者使用 -show_video_device_dialog true 直接从 ffmpeg 执行此操作。 dshow 选项,它会导致在转换过程之前出现 GUI。只需要这样做一次,因为设置是粘性的。之后,可以很好地捕获 720x576 的视频。

关于ffmpeg - 使用 ffmpeg 和 directshow 从 USB Grabber 捕获设备规范内的视频问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58302267/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com