Yes, relay is possible, but I'm not sure if a shorter window solves the issue - you could stream your cam feed.
Another option would be to limit the number of validations in the time window or to introduce a 'cool down' time - the next validation attempt has to wait 3 cycles to be valid. Relay would still be possible, but when the person on spot wants to validate for themself, relay could be more of a hassle. Last but not least, the browser could ask for the the location and calculate the distance to the device (location can be spoofed ..).
A stream is generally of lower quality than a photo which should make it significantly more difficult to get a good scan of a QR code from a stream --- particularly if the code is changing every few seconds. I'd probably recommend showing a code for 3 seconds then a black screen for 3 seconds then repeat with a different code.
Cameras need to focus on both ends and the stream has to be scaled to fit the available display parameters. Could easily turn into an exercise in frustration.
Another option would be to limit the number of validations in the time window or to introduce a 'cool down' time - the next validation attempt has to wait 3 cycles to be valid. Relay would still be possible, but when the person on spot wants to validate for themself, relay could be more of a hassle. Last but not least, the browser could ask for the the location and calculate the distance to the device (location can be spoofed ..).