I am receiving UDP streaming through ffmpeg ffplay, but there is a problem that the video is broken. I'm using a GoPro Hero 10 camera, but I can't receive more than three camera streams because the streaming is fixed with the UDP 8554 port.
So using Raspberry Pi 4 and nginx reverse proxy for each camera, multi camera streaming successfully received on another Raspberry Pi.
In conclusion, GoPro camera UDP streaming -> Raspberry Pi received. use nginx reverse proxy -> another Raspberry Pi received.
However, there is an issue that streaming video quality is broken.
I used ffplay:
ffplay udp://@:23002
and the following error also appears:
[h264 @ 0x91cb4ed0] reference picture missing during reorderf=0/0
[h264 @ 0x91cb4ed0] Missing reference picture, default is 65559
[h264 @ 0x91d234d0] reference picture missing during reorder
[h264 @ 0x91d234d0] Missing reference picture, default is 65559
[h264 @ 0x93028ba0] reference picture missing during reorderf=0/0
[h264 @ 0x93028ba0] Missing reference picture, default is 65560
[h264 @ 0x9302d6d0] mmco: unref short failure 0KB sq= 0B f=0/0
[h264 @ 0x9302d6d0] number of reference frames (0+3) exceeds max (2; probably corrupt input), discarding one
[mpegts @ 0x93000630] Packet corrupt (stream = 0, dts = 73156083)
[mpegts @ 0x93000630] Packet corrupt (stream = 0, dts = 73159086)
[mpegts @ 0x93000630] Packet corrupt (stream = 0, dts = 73165092)
[h264 @ 0x9302d6d0] reference picture missing during reorderf=0/0
[h264 @ 0x9302d6d0] Missing reference picture, default is 65540
[h264 @ 0x930e08e0] reference picture missing during reorderf=0/0
[h264 @ 0x930e08e0] Missing reference picture, default is 65541
so I use the ffplay option -fflag +discardcorrupt
and
use -vf "setpts=N/60/TB"
.
Conclusion: ffplay udp://@:23002 -fflag +discardcorrupt -vf "setpts=N/60/TB"
It's better than before, but still breaks when the change in streaming video is large.
And the packet corrupt still remains, I don't know how to set the pts value that fits the streaming video.
Or is there an issue that I didn't find?
I'm looking for a way to match the pts.
But I wonder if this is the right way.
I'd appreciate your help to the lost.