USB HDMI Capture

I have thought about purchasing the capture device.
I have a windows device on the network.
The 2 hdmi encoders i've setup are working great.

I have bought the capture card recommended from Amazon. I cannot get it to work with this using Linux

#EXTINF:-1, channel-id="usb-hdmi",USB HDMI Capture
capture://v4l2/video0

However I am seeing video when I follow this print

ffplay -f v4l2 -input_format nv12 -video_size 1920x1080 -framerate 30 -i /dev/video0

From this article

Found one of the links above for USB Capture Devices has "Used - Like New" listed for $11.25 if you are looking for low investment for testing.

https://www.amazon.com/gp/product/B08Z3XDYQ7

I got this capture dongle today. (Amazon Vine program)
https://www.amazon.com/dp/B0DQ59PPS5?tag=channels04-20

It supports much more than the other older "Game station" style capture device.

[dshow @ 000001963e373fc0] "USB3.0 Capture" (video)
[dshow @ 000001963e373fc0]   Alternative name "@device_pnp_\\?\usb#vid_345f&pid_2130&mi_00#6&1346e323&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 000001963e373fc0] "Digital Audio Interface (USB3.0 Capture)" (audio)
[dshow @ 000001963e373fc0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{70E232B1-54CB-4982-9E9B-CAE6B8B141E7}"
dummy: Immediate exit requested

C:\Windows\System32>C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe -f dshow -list_options true -i video="USB3.0 Capture"
[dshow @ 000001c02207d000] DirectShow video device options (from video devices)
[dshow @ 000001c02207d000]  Pin "Capture" (alternative pin name "0")
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=2560x1440 fps=10 max s=2560x1440 fps=30
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=2560x1440 fps=10 max s=2560x1440 fps=30 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1360x768 fps=10 max s=1360x768 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1360x768 fps=10 max s=1360x768 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1280x960 fps=10 max s=1280x960 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1280x960 fps=10 max s=1280x960 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1024x768 fps=10 max s=1024x768 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=1024x768 fps=10 max s=1024x768 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=800x600 fps=10 max s=800x600 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=800x600 fps=10 max s=800x600 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=720x576 fps=10 max s=720x576 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=720x576 fps=10 max s=720x576 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=720x480 fps=10 max s=720x480 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=720x480 fps=10 max s=720x480 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=60.0002
[dshow @ 000001c02207d000]   pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1360x768 fps=10 max s=1360x768 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1360x768 fps=10 max s=1360x768 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1280x960 fps=10 max s=1280x960 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1280x960 fps=10 max s=1280x960 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1024x768 fps=10 max s=1024x768 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=1024x768 fps=10 max s=1024x768 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=800x600 fps=10 max s=800x600 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=800x600 fps=10 max s=800x600 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=720x576 fps=10 max s=720x576 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=720x576 fps=10 max s=720x576 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=720x480 fps=10 max s=720x480 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=720x480 fps=10 max s=720x480 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=60.0002
[dshow @ 000001c02207d000]   vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=60.0002 (pc, bt470bg/bt709/unknown, center)

Got it working fine in Channels at 2160x1440 30fps.
Input latency is still a huge issue, 3sec a min . But, audio/video sync looks good.

NOTE: Not sure if related to recent pre-release updates, but ffmpeg.exe will not work, "Not a valid win 32 application". Had to replace it with .exe from a couple versions back. (i made a separate thread on that.)

This is what my logs are saying when I try to stream:

2025/02/28 07:58:56.742326 [HLS] ffmpeg: capture-usb-hdmi: [AVFilterGraph @ 0xb344950] No such filter: ''
2025/02/28 07:58:56.742433 [HLS] ffmpeg: capture-usb-hdmi: Error reinitializing filters!
2025/02/28 07:58:56.742446 [HLS] ffmpeg: capture-usb-hdmi: Failed to inject frame into filter network: Invalid argument
2025/02/28 07:58:56.742458 [HLS] ffmpeg: capture-usb-hdmi: Error while processing the decoded data for stream #0:0
2025/02/28 07:58:56.742489 [HLS] ffmpeg: capture-usb-hdmi: [video4linux2,v4l2 @ 0xb343270] Some buffers are still owned by the caller on close.
2025/02/28 07:58:56.762404 [ERR] Error during stream M3U-USBTest ch9000 USB HDMI Capture: exit status 1
2025/02/28 07:58:56.762497 [TNR] Closed connection to M3U-USBTest for ch9000 USB HDMI Capture

Here is mine

verson 2025.02.27.2340

#EXTM3U

#EXTINF:-1, channel-id="usb-hdmi",USB HDMI Capture
capture://dshow/USB3 Video/Digital Audio Interface (USB3 Digital Audio)/?framerate=60&video_size=1920x1080

2025/02/28 14:35:58.155447 [HLS] Starting live stream for channel 11435 from 192.168.4.35
2025/02/28 14:35:58.317391 [HLS] ffmpeg: capture-usb-hdmi: Guessed Channel Layout for Input Stream #0.1 : stereo
2025/02/28 14:35:58.317940 [HLS] ffmpeg: capture-usb-hdmi: [AVFilterGraph @ 0000020c551661c0] No such filter: ''
2025/02/28 14:35:58.317940 [HLS] ffmpeg: capture-usb-hdmi: Error reinitializing filters!
2025/02/28 14:35:58.317940 [HLS] ffmpeg: capture-usb-hdmi: Failed to inject frame into filter network: Invalid argument
2025/02/28 14:35:58.317940 [HLS] ffmpeg: capture-usb-hdmi: Error while processing the decoded data for stream #0:0
2025/02/28 14:35:58.349709 [ERR] Error during stream M3U-USBCapture ch11435 USB HDMI Capture: exit status 1
2025/02/28 14:35:58.349709 [TNR] Closed connection to M3U-USBCapture for ch11435 USB HDMI Capture
2025/02/28 14:35:58.349709 [HLS] ffmpeg: ch11435-dANY-ip192.168.4.35-remux: Output file #0 does not contain any stream
2025/02/28 14:35:58.351948 [HLS] Stopping transcoder session ch11435-dANY-ip192.168.4.35 (out=0s finished=true first_seq=0 last_seq=-1)
2025/02/28 14:35:58.352954 [ERR] Probe cancelled for live stream after 197.5063ms and 0 bytes

Try new prerelease

Thank you, it's working now

1 Like

Great thanks, I can see video now, though its choppy. Dropped resolution down to 720 which helped it a bit but I think my hardware is limited on a raspberry pi 4. Can't hear any sound but this is in the log

2025/03/01 07:10:15.338107 [HLS] ffmpeg: capture-usb-hdmi: [mpegts @ 0x174b2370] Non-monotonous DTS in output stream 0:0; previous: 97802722, current: 0; changing to 97802723. This may result in incorrect timestamps in the output file.

Many thanks

A Pi is not good enough this does Software Encoding Capture not hardware. Folks hanging on to a PI to run Channels DVR and Software HDMI Capture are trying to squeeze water out of a rock.

Low Powered Machines cannot do reliable Software Transcoding ... you would need to invest in a hardware Capture Device...

If you want the full potential Of Channels DVR and all the contributions from the Community, you need to move from Low Powered devices.

1 Like

When I try adding
tvc-guide-placeholders="7200" or tvc-guide-placeholders="false"
I either get 1-hour segments, or I break everything, depending on where I put it..

This is what mine looks like ...

#EXTM3U

#EXTINF:-1, channel-id="usb-hdmi" tvc-guide-placeholders="7200",USB HDMI Capture
capture://dshow/USB3.0 HD Video/Digital Audio Interface (USB Digital Audio)/?framerate=60&video_size=1920x1080

24 hours is this tvc-guide-placeholders="86400"

1 Like

I completely agree, it's powerful enough for my DVR at the moment. I want a low powered windows 11 machine that is powerful enough to encode. Any suggestions?

1 Like

I moved away from a lower powered machines to host my DVR because I want to do a bit more than just run Channels DVR ... maybe someone else can recommend something but right now if you want to use USB HDMI capture low powered machines might be a problem... Unless the developers can make use of hardware capturing.

Thanks for the heads up. What kind of machine you running on? Apart from the power issue of a more powerful machine (which I could compromise on) I would just like a small form factor pc.

Since this is a USB HDMI Capture thread does that Beelink handle Capture of 1080p at 60FPS ... and Comskip also recording easily ?

Would the N95 be strong enough to encode the hdmi stream?

ASUS took over the Intel NUCS ...

OS
ASUSTeK COMPUTER INC. NUC14RVH-B
windows Microsoft Windows 11 Pro
10.0.26100.3194 Build 26100.3194 (kernel: 10.0.26100.3194 Build 26100.3194)
CPU
22 cores / Intel(R) Core(TM) Ultra 7 155H
load averages:  0.00  0.00  0.00

Is this a good place to start?