Open Allethrium opened 2 months ago
Hi, I believe that the problem is that the capture filter cannot modify the compressed stream, provided that it crashes for the RTSP stream. As a workaround, adding :decompress
for the RTSP capture might help. But the good point is that it shouldn't crash in this way.
I already gave the :decompress argument a try with no success, unfortunately.
Ok, thanks a lot. Can you check which of the inputs:
-t testcard:pattern=blank
-t file:/seal.mp4:loop
-t testcard:pattern=smpte_bars
-t rtsp://192.168.1.15:554/1
:decompressdoes it cause if RTSP decompression is enabled? Also the output will be great, because in the output above, it seems that the H.264 compressed stream really causes the problem (when switched to RTSP, the is codec certainly H.264):
[1722263403.938] [switcher] Switched from device 1 to device 4 (rtsp://192.168.1.15:554/1).
[1722263403.938] [vcompress] Compressed frame size: 236; duration: 2.542 ms
uv: src/capture_filter/logo.c:162: filter: Assertion `coder != NULL && decoder != NULL' failed.
Backtrace:
Which leads me to the idea that the subsequent problem is actually different.
The inputs appear to work fine on their own.
I do recall I came across this bug some time ago whilst experimenting with the swmixer and attempting to concatenate multiple feeds together. This may be where the issue lies?
I did just try and use swmix to reproduce.. that didn't work as it appears to be somewhat picky about input formats and conversion, but that's a separate issue.
Hi, I've just create a commit, that will print the codec, for which either encoder or decoder could not have been found as in the error above. Would you be able to try it out? Again, it is in continuous builds.
Hello again,
It appears there may be a possible issue with the capture filter (for adding a logo/watermark etc)
I had come across it before when experimenting with certain color formats for USB input devices, but it seems to be reproducible when taking an H.264 RTSP stream as source.
You can see a switcher command as I've configured the system with Blank, TestCard and an Image input.
Full Command used;
UltraGrid.AppImage --tool uv --capture-filter logo:/banner.pam:25:25 --control-port 6160 -f V:rs:200:250 -t switcher -t testcard:pattern=blank -t file:/seal.mp4:loop -t testcard:pattern=smpte_bars -t rtsp://192.168.1.15:554/1 -s pipewire -c libavcodec:encoder=libaom-av1:usage=realtime:cpu-used=8:safe -P 5004 -m 9000 192.168.1.32 -VV
Log as follows;
This is the relevant part afaik;
For now, I'm adding a test to just drop the capture filter entirely for the problem inputs, but if there's a way I could get it working that would be more ideal for my purposes. I Understand this isn't a priority as it doesn't seem to come up often, but I just wanted to throw it out there.