Very cool :) I wonder if you could potentially use colour to increase the data rate a bit? (although then it wouldn't be a standard QR code I guess)
http://www.jammarcade.net/backer-32/ -- I've got one of these devices, which was used back in the day, to store data on a VHS tape, in a similar way to what you're transmitting.
In the spirit of uncommon data transfer methods, here's my ridiculously slow version, using a cddrive:
Not OP here: Yes that would definitely work, but you have to be aware that color channels of the monitor and camera are not mapped 1:1, there will be some overlap.
Also be aware the light in the environment influences the light received by the camera (or emitted by the monitor surface, depending on the way you want to look at it). You may have to tweak the threshold if the light changes.
@OP: please do this, it will triple your data without additional costs. Don't ignore the color channels!
I think that even using more than one bit per RGB channel isn't hard. For example, 0 -64-128-192-255 for each RGB would increase the speed for 15 times. The 1-2kbps would become 30kbps, a modem from few years ago.
When using the real webcam (and not just passing files around), just one frame for calibration and no auto-white balance should be enough.
http://www.jammarcade.net/backer-32/ -- I've got one of these devices, which was used back in the day, to store data on a VHS tape, in a similar way to what you're transmitting.
In the spirit of uncommon data transfer methods, here's my ridiculously slow version, using a cddrive:
https://www.anfractuosity.com/projects/cditter/
To transmit 'hello' it takes around 13 minutes ;)