So... is this just for AH4C and ADBTuner?
Can't just plug in a USB HDMI capture card, add that line as a M3U tuner source in the Server admin and away u go?
So... is this just for AH4C and ADBTuner?
Can't just plug in a USB HDMI capture card, add that line as a M3U tuner source in the Server admin and away u go?
Wow - this has potential to be VERY interesting - would think this maybe allows for better transcoding than the capture devices, including maybe > 2 channel audio.
MacOS 15.3.1
So MacOS considers these devices to be cameras and applies strict Privacy & Security restrictions to them.
I did some research this morning and as far as I can tell it is just not possible to access a camera from a process that is running as a LaunchAgent. It seems this was an intentional decision made by Apple and to be fair it makes sense.
With a standard installation of Channels DVR, ffmpeg will just hang as it never receives any video input.
For testing purposes I was able to work around this by running Channels DVR manually.
launchctl unload ~/Library/LaunchAgents/com.getchannels.dvr.plist
cd ~/Library/Application\ Support/ChannelsDVR/data
../latest/channels-dvr
and the following to run Channels normally when you are finished
launchctl load ~/Library/LaunchAgents/com.getchannels.dvr.plist
@tmm1 have you found a good workaround for this?
Audio Clicks and Crackle / ffmpeg with AVFoundation (MacOS only)
Edit: This turned out to be related to this ffmpeg issue:
https://trac.ffmpeg.org/ticket/11398
The Channels team have since applied the patch for this bug to their build of ffmpeg so it's no longer a concern for Channels users.
Works for me.
Works for me
Wow, this is exciting. What I am understanding from this is that I can use a Firstick 4K with an HDMI USB capture dongle on Windows and setup ADBTuner in a docket in my Windows to get a single channel input? That would be awesome!
Does it have to be a specific HDMI capture card?
All i have is this:
J5 Capture
I can not get this to work. I can get video input via the Camera app in Win 11 Pro on the server machine, so the OS recognizes the capture card fine and can use it.
But when i try to play it in Channels, i get, "Streaming to the tuner failed. Press Play to try again. Timeout after 32s."
2025/02/23 12:05:09.315385 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 12:05:09.343454 [HLS] ffmpeg: capture-usb-hdmi: Unknown input format: 'dshow'
2025/02/23 12:05:09.345016 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 1
2025/02/23 12:05:09.345016 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 12:05:09.345537 [SNR] Buffer statistics for 192.168.0.17 (Apple TV) for ch1 USB HDMI Capture: buf=0% drop=0%
Changed to MPEG-TS, same error.
Have you tried Stream Format MPEG-TS
Yes. Exact same error
You have to put the names of your devices, like:
capture://dshow/Camera/Microphone/
Use:
c:\programdata\channelsdvr\latest\bin\ffmpeg.exe -list_devices true -f dshow -i dummy
to see a list of them.
EDIT: Looks like we need to add dshow support
Using a Cheap HDMI USB Capture Card with FFmpeg on Windows 10 - RickMakes
here is a sample of what I was using when capturing with usb card.
ffmpeg -v panic -re -f dshow -rtbufsize 40M -video_size 1280x720 -framerate 30 -i video="USB3. 0 capture":audio="Digital Audio Interface (USB3. 0 capture)" -vcodec h264_qsv -b:v 4000k -acodec aac -f mpegts -
I get in CMD "The system cannot find the path specified."
EDIT:
Had to modify path,. there is no bin folder
C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe -list_devices true -f dshow -i dummy
That output gives me:
[dshow @ 000001c860b436c0] "J5-CAPTURE" (video)
[dshow @ 000001c860b436c0] Alternative name "@device_pnp_\\?\usb#vid_0711&pid_0a04&mi_00#6&38a547e9&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 000001c860b436c0] "Digital Audio Interface (J5-AUDIO)" (audio)
[dshow @ 000001c860b436c0] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{BA1A252E-EDEC-4321-9AB5-7528DA21FA48}"
dummy: Immediate exit requested
ok so i changed it to:
#EXTM3U
#EXTINF:-1, channel-id="usb-hdmi",USB HDMI Capture
capture://dshow/J5-CAPTURE/J5-AUDIO/?framerate=60
2025/02/23 15:51:18.608464 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 15:51:18.651871 [HLS] ffmpeg: capture-usb-hdmi: [dshow @ 000002656669ec80] Could not find video device with name ["J5-CAPTURE",audio="J5-AUDIO"] among source devices of type video.
2025/02/23 15:51:18.652376 [HLS] ffmpeg: capture-usb-hdmi: video="J5-CAPTURE",audio="J5-AUDIO": I/O error
2025/02/23 15:51:18.655077 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 1
2025/02/23 15:51:18.655077 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
Same issues for a Logitech webcam
2025/02/23 16:01:18.548574 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 16:01:18.584894 [HLS] ffmpeg: capture-usb-hdmi: [dshow @ 00000249c35ae240] Could not find video device with name ["HD Pro Webcam C920",audio="Microphone (HD Pro Webcam C920)"] among source devices of type video.
2025/02/23 16:01:18.585398 [HLS] ffmpeg: capture-usb-hdmi: video="HD Pro Webcam C920",audio="Microphone (HD Pro Webcam C920)": I/O error
2025/02/23 16:01:18.588477 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 1
2025/02/23 16:01:18.588477 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
#EXTM3U
#EXTINF:-1, channel-id="usb-hdmi",USB HDMI Capture
capture://dshow/HD Pro Webcam C920/Microphone (HD Pro Webcam C920)/?framerate=60
C:\Windows\System32>C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe -list_devices true -f dshow -i dummy
[dshow @ 0000027f005ed880] "HD Pro Webcam C920" (video)
[dshow @ 0000027f005ed880] Alternative name "@device_pnp_\\?\usb#vid_046d&pid_082d&mi_00#6&1182fde4&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 0000027f005ed880] "Microphone (HD Pro Webcam C920)" (audio)
[dshow @ 0000027f005ed880] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CD2E62BD-B324-4812-8B32-CC984BE40362}"
dummy: Immediate exit requested
Also, is there a way to not trigger a full system guide data refresh every time i change/save this m3u custom tuner? My guide data now is saying timeout and just hanging cause it has tried about a dozen times in the last few minutes.
Same error.
2025/02/23 17:22:23.124583 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 17:22:23.159919 [HLS] ffmpeg: capture-usb-hdmi: [dshow @ 000002658cc0e240] Could not find video device with name ["HD Pro Webcam C920"] among source devices of type video.
2025/02/23 17:22:23.160942 [HLS] ffmpeg: capture-usb-hdmi: video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)": I/O error
2025/02/23 17:22:23.164803 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 1
2025/02/23 17:22:23.164803 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 17:22:23.164803 [SNR] Buffer statistics for 192.168.0.17 (Apple TV) for ch1 USB HDMI Capture: buf=0% drop=0%
I second this request.
Always have thought the CDVR transcoder is magic, always looks loads better than if I do a similar transcode through just ffmpeg. So very interested in trying this out.
Would this likely provide better image quality than the linkpi encoders? Unsure what encoding they use..
I have an Mac M2 Pro if that matters.
Different error now
2025/02/23 20:13:07.376559 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 20:13:07.402917 [HLS] ffmpeg: capture-usb-hdmi: [dshow @ 000002200fc6ebc0] Malformed dshow input string.
2025/02/23 20:13:07.402917 [HLS] ffmpeg: capture-usb-hdmi: HD Pro Webcam C920:Microphone (HD Pro Webcam C920): I/O error
2025/02/23 20:13:07.405502 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 1
2025/02/23 20:13:07.405502 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
@tmm1 Just saw another pre-release...getting better.
As the webcam led comes on, and off, looks like it is trying to stream.
2025/02/23 23:31:52.312930 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 23:31:52.439365 [HLS] ffmpeg: capture-usb-hdmi: [dshow @ 000001fdbd7aebc0] Could not set video options
2025/02/23 23:31:52.442724 [HLS] ffmpeg: capture-usb-hdmi: video=HD Pro Webcam C920:audio=Microphone (HD Pro Webcam C920): I/O error
2025/02/23 23:31:52.445440 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 1
2025/02/23 23:31:52.445440 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
The cam does not support 60fps...not sure if that framerate option makes a difference. BUt when i changed it to 30fps, i got this,.
2025/02/23 23:34:55.799289 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 23:34:56.938383 [HLS] ffmpeg: capture-usb-hdmi: Guessed Channel Layout for Input Stream #0.1 : stereo
2025/02/23 23:34:56.948883 [HLS] ffmpeg: capture-usb-hdmi: [h264_mf @ 00000136dc25eac0] COM must not be in STA mode
2025/02/23 23:34:56.949979 [HLS] ffmpeg: capture-usb-hdmi: Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
2025/02/23 23:34:57.301590 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 0xc0000005
2025/02/23 23:34:57.301590 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
EDIT: For the J5Capture HDMI capture...also making progress, but still fails.
2025/02/23 23:40:15.021973 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 23:40:15.484488 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000024ef04255c0] EOI missing, emulating
2025/02/23 23:40:15.965258 [HLS] ffmpeg: capture-usb-hdmi: Guessed Channel Layout for Input Stream #0.1 : stereo
2025/02/23 23:40:15.971521 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000024ef2f6ebc0] overread 8
2025/02/23 23:40:15.971521 [HLS] ffmpeg: capture-usb-hdmi: Last message repeated 1 times
2025/02/23 23:40:15.971521 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000024ef2f6ebc0] EOI missing, emulating
2025/02/23 23:40:15.974688 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef2e06600] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.975203 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef2e135c0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.975203 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef2e20580] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.975722 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef2e3d580] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.975722 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7529ac0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.976234 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7536a80] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.976748 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef785b700] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.976748 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7d32980] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.977262 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7d60dc0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.977262 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7dc4140] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.977776 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7e04b00] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.977776 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7e53040] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.978288 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000024ef2df9600] [swscaler @ 0000024ef7e72f80] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:40:15.988697 [HLS] ffmpeg: capture-usb-hdmi: [h264_mf @ 0000024ef2ef28c0] COM must not be in STA mode
2025/02/23 23:40:15.989804 [HLS] ffmpeg: capture-usb-hdmi: Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
2025/02/23 23:40:16.326603 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 0xc0000005
2025/02/23 23:40:16.326603 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 23:40:16.326603 [SNR] Buffer statistics for 192.168.0.17 (Apple TV) for ch1 USB HDMI Capture: buf=0% drop=0%
I found the link to the specific HDMI capture device i have
Game Capture Station – j5create
Edit2; If i remove the ?framerate entirely, i get this
2025/02/23 23:45:51.962994 [TNR] Opened connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
2025/02/23 23:45:52.388567 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000029ef8b88c00] No JPEG data found in image
2025/02/23 23:45:52.388567 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000029ef8b88c00] Found EOI before any SOF, ignoring
2025/02/23 23:45:52.388567 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000029ef8b88c00] No JPEG data found in image
2025/02/23 23:45:52.877847 [HLS] ffmpeg: capture-usb-hdmi: Guessed Channel Layout for Input Stream #0.1 : stereo
2025/02/23 23:45:52.880376 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000029ef19b8c80] No JPEG data found in image
2025/02/23 23:45:52.880376 [HLS] ffmpeg: capture-usb-hdmi: Error while decoding stream #0:0: Invalid data found when processing input
2025/02/23 23:45:52.880376 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000029ef19b8c80] Found EOI before any SOF, ignoring
2025/02/23 23:45:52.880376 [HLS] ffmpeg: capture-usb-hdmi: [mjpeg @ 0000029ef19b8c80] No JPEG data found in image
2025/02/23 23:45:52.880376 [HLS] ffmpeg: capture-usb-hdmi: Error while decoding stream #0:0: Invalid data found when processing input
2025/02/23 23:45:52.886886 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef8df5a40] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.886886 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef8c13900] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.887414 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef8c208c0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.887414 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef4397f80] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.887928 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef8af5280] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.887928 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef8b24ac0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.887928 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef44c23c0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.887928 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef44ef380] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.888540 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef8e44ac0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.888540 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef93e8c80] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.888540 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef9438040] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.889054 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef94497c0] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.889054 [HLS] ffmpeg: capture-usb-hdmi: [swscaler @ 0000029ef1983c00] [swscaler @ 0000029ef94ca040] deprecated pixel format used, make sure you did set range correctly
2025/02/23 23:45:52.895502 [HLS] ffmpeg: capture-usb-hdmi: [h264_mf @ 0000029ef19b7500] COM must not be in STA mode
2025/02/23 23:45:52.896042 [HLS] ffmpeg: capture-usb-hdmi: Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
2025/02/23 23:45:53.237139 [ERR] Error during stream M3U-USBHDMICapture ch1 USB HDMI Capture: exit status 0xc0000005
2025/02/23 23:45:53.237139 [TNR] Closed connection to M3U-USBHDMICapture for ch1 USB HDMI Capture
And it says HLS in the logs, but i have it on mpeg-ts but did try changing it to HLS in the source settings on the server m3u, but makes no difference. Same log output.
Edit again. Should mention, i forgot to change the name of each device, i was just replacing the one channel in the m3u with the code for the device was testing. I have since added both as 2 channels, and named them accordingly. USB Webcam and USB HDMI Capture.