How to run a "video watch party" with your friends by streaming a local movie of yours

You have a movie locally as a file you want to stream to your friends Your friends need to install the VLC video player (http://www.videolan.org/) on whatever the platform of their choice (Windows, Linux, Mac, Android) You know how to do a "port forward" on your internet router. It's not hard and can easily be googled, but obviously how to do that depends on your router.

1. Install VLC, and configure it for streaming





2. Create a port forward





Now, so far you would only be able to access the streamed video inside your local Wifi network. What needs to be done is logging into your internet modem or router and create a "port forward". This port forward needs to go from, say external port 8080 to the streaming machine's port 8080 (or a different port if you changed that earlier). How this is done is very specific to the modem/router, you will have to look that up.





3. Edit the m3u8 file

The m3u8 file is the file you actually send to your friends. It is a very small text file that contains the address to your server.



Create a text file with the ".m3u8" file extension, e.g. "SocialHangout.m3u8", and put the following text into it:



#EXTM3U

#EXTINF:0,<your static IP address>:<the port>

#EXTVLCOPT:network-caching=1000

http://<your static IP address>:<the port>



"<the port>" is 8080 if you left it the default value earlier, or whatever other value you set it to otherwise.

"<your static IP address>" you can get by simply googling "what's my ip address". The resulting 4 numbers (with periods in the middle) is the IP address that goes into the two fields above. The m3u8 file is the file you actually send to your friends. It is a very small text file that contains the address to your server.Create a text file with the ".m3u8" file extension, e.g. "SocialHangout.m3u8", and put the following text into it:





4. Watching the movie!





You need to a) instruct your friends to install VLC on their machine/smartphone and b) send that small m3u8 file. After installation they should be able to just click on the m3u8 file, and the movie should run for them!





During the actual watching, you can hit pause if you want to take a break, but note that that doesn't work all too well, the client VLCs start complaining. It doesn't break anything, but it's not quite as clean as one would hope. The great benefit of this approach of watching the movie is though, all the clients don't drift too far from each other. Also, you can have a chat client running side by side to talk about the movie.









At the time of writing, the world is socially distancing due to Covid-19, and I was looking for a way to do a movie night with my friends. Now, there are solutions out there like Chrome plugins to synchronize Netflix etc, but all of them had some kind of constraint (everybody needs the same browser, or the same streaming service, or pay money...) that made it unsuitable for our purposes.The approach this blog post documents requires the following:Download VLC from here http://www.videolan.org/ and install. The server can't be run on Android, this will have to be a proper OS.Start VLC, and select from the menu "Media->Stream..."Click "+Add..." and select the video file. Click "Stream".Click "Next".In the "New destination" drop-down list, select "HTTP", then click "Add" next to it.You can leave the defaults here, or you can change for example the port (but remember it later during editing of the m3u8 file).Click "Next".On this screen, I usually uncheck "Activate transcoding". The option means if it should convert the movie into a different format for streaming, or just push it as is. Unless you have reason to believe you should convert it (maybe a smaller bitrate to conserve upload speed, or change the format so more players can play your file), leave it unchecked.Click "Next".I'm not sure what this screen does, I just leave the default.When you click "Stream", you will go back to the VLC main window and see the progress bar moving. That means it is streaming.