Stream Securely: Simply and Privately Preserving Live Video Evidence

Cell phone video has been a major game changer for society. While most cell videos are just for fun, some have also been critical as evidence to document acts of aggression, violence, and other abuses. Innumerable attempts to cover up despicable behavior would never have been exposed without the ability for most people to immediately record what they’re seeing.

But sometimes, that’s not enough. Perpetrators are not in ignorance of this development. Once caught in the act, it’s common for any violent thug or even dirty cop to immediately target anybody nearby with their phones out filming. People recording abuses have frequently found the assailant notices them and forcibly takes their phone, either deleting the evidence or smashing the phone entirely. Once this happens, it can be just one person’s word against another.

Stream Securely: Simply and Privately Preserving Live Video Evidence

One of many times someone has attempted to stop another from filming them in public.

Ideally, instead of using your default camera app to film, your phone would stream your video, as you record it, to a server somewhere where it is out of reach of the belligerent buffoon in front of you. If the phone is smashed, everything up until that second still stays recorded. A common choice is to use Facebook or other large site’s app to stream. But maybe you’re not a huge fan of installing some shady app that is definitely going to be tracking you in every way it can and/or maybe don’t want to broadcast your live video to anybody until you know what’s onscreen.

I didn’t see any great options when searching for video streaming apps; the top ones seem to be obviously spyware and don’t do the storing as described above. So I assembled my own. I started with the excellent in-browser RecordRTC, stripped out a lot of unused links and functionality, edited the JS code to use the timeSlice functionality (grabbing chunks of the video stream every second instead of waiting until finish) and removing the code to store the video in JS (so memory usage won’t grow during use since you’re not storing client side in memory). Next I made a simple script on the server side and added JavaScript code to upload each chunk every second to the server. I then edited it to request the front-side camera if you’re on mobile (since, if you’re recording some heinous act I’m assuming you’re not using the camera pointed at… yourself) And finally, I made the blue record button really big so it’s super easy to kick off in just a tap.

The recording page as viewed in a browser

You can build it (or download it) as a single Rust executable that acts as an HTTPS server or deploy it on an Apache/PHP server by copying a few files in. Then open the link over HTTPS in your phone, and add it to your home screen. The first time you start it recording, it will request camera/microphone permission. Grant access permanently and you’ll be off and running, ready to record in a tap next time you see something.

By design you cannot delete video from the web interface, so in the chance the assailant sees what you’re doing, no matter how intimidating the thug is, you can’t be compelled to remove it from your phone and they can’t remove it either. You’ll have to do that by logging into the server manually.

To try it out, you can run the released program yourself, or if you want, a public demo version can be found at scriptjunkie.us/private_record_live/rcrdr.html videos only remain in list for up to 30 minutes, but everyone can see them during that time so don’t record anything improper please.

The code and releases are at https://github.com/scriptjunkie/private-record-live/

By admin