Synchronized video playback over the network
I would like to play the same video on two different computers, and synchronize them approximately over the internet. I'd like to watch videos together with my friend while talking on Skype. It'd be preferable that if one of us stops/starts the video, it stops/starts on the other side as well.
The sync doesn't need to be second-perfect, but the videos shouldn't drift apart over time. It needs to work on Windows, and shouldn't be too difficult to set up (i.e. I need to talk someone through setting it up). Both computers are behind routers (home adsl connection).
Are there any existing solutions for this?
Clarification: What I'm looking for is a remote-control solution for both players on both computers, akin to http://www.synchtube.com/. Streaming is not a viable solution because of constrained upload bandwidth on both sides (ADSL). The same video file is present on both computers.
Solution 1:
After looking for a similar solution myself (synchronized playback with files on both computers, no streaming nor multicast), I found several solutions, most being free and some being opensource.
Desktop applications
The following applications must be installed on both computers to allow synchronized playback:
SyncPlay: opensource software to synchronize playback of videos and/or audio files. The synchronization packets will pass through the SyncPlay servers, but the software is opensource so you can make your own master server if you want. Crossplatform and works with several different players, like mpv or VLC (v2 natively supported in latest SyncPlay, before you had to install the additional VLC-syncplay plugin -- for VLC v3 there is an issue that will get resolved in the future). SyncPlay itself is quite easy to use: just launch SyncPlay and choose a (IRC-like) server, a room name and a file to sync and it will launch your video player with everything needed. You can then tell your friends to choose the same server, room name and file to be synchronized. A full log will show everyone's actions in realtime.
RiftMax Theater is a media player that is specifically made to synchronize playback.
Virtual Reality Theaters, like VRTV Free and similar Cardboard/Occulus virtual reality apps: if both of you have a virtual headset, the "virtual theater" apps usually offer synchronized playback over internet with users of the same headset.
Web-based apps
These applications run in the browser but they allow to use your own files:
- Gaze
- Synaptop
Solution 2:
http://www.mplayerhq.hu/DOCS/HTML/en/networksync.html
Seems that mplayer lets you sync video over the network.
Solution 3:
There are a few approaches.
1) Super easy not real sync
Copy the file to both computers, get on skype, say "1, 2, 3.. GO" and start at the same time. To improve upon the exactness of this, you could both sync to the same NTP server (http://ntp.org/; http://www.nist.gov/pml/div688/grp40/its.cfm; http://technet.microsoft.com/en-us/library/cc773061(WS.10).aspx) and then set up a Schedule/Cron/At script (http://support.microsoft.com/kb/308569; http://adminschoice.com/crontab-quick-reference). This is probably the least technical way to do this. I am assuming here this is not just a YouTube or web video you can both click on; in term of bandwidth streaming there is probably a negligible difference in transmitting the file ahead of time)
3) Video Conferencing
Video conferencing software like GoToMeeting, Adobe Connect, Microsoft NetMeeting, etc. often have video streaming features. Orb, TVersity, etc and other media streamers might also work if you play around with them. You will have to look into the specifics to see their offerings and features, I don't have any practical experience implementing what you are looking for here.
3) Heavily Technical
What you are probably looking for is to "mutlicast" your video. This means using a streaming protocol like RTP, the same signal will be sent to multiple recipients. Using the video playe VLC, you can accomplish this. Here is a basic guide I googled very quickly (http://www.wikihow.com/Use-Vlc-to-Stream-Audio-and-Video-to-Multiple-Computers-on-Your-Network-Using-Multicast). Did not check if its good, but if you search for "vlc mutlicast" you should find other tutorials. It should also work with other video players, do some searching.
While you can run IP multicast over the Internet, that may be difficult, problematic, and involve your ISP. So, what you will probably want to do is to connect to the other user over a VPN - a virtual private network. This means that you connect to each other as if you were on the same LAN, just virtually. This allows you to run all sorts of local/LAN only protocols and applications. Programs like Hamachi, TeamViewer, and others will help you set up a VPN. You can also set this up at the system level, do some research there or google for other packaged solutions.
The specifics and testing of your solution, I leave as a learning activity for you. In searching this for you, some people noted their VPN did not support multicast protocols or that there were lag issues. Try this route if you want to play around with network settings, but go with syncing or video conferencing software sounds like it will be easier.
Other suggestions I won't elaborate on unless you really want to know:
- Upload the video to a sharing site somewhere and just count down to click go, there could be possible lag or delay issues since there is no synchronization.
- Try using a screen sharing app (I think Skype has plugins for multiple viewers), vnc, etc. My guess is this will result in pretty poor quality.
Because there is always going to be network lag, I would think the easier option is for both of you to have a local copy
Edit
I have noted the OP's comment, but wanted to add some more info for others who may come across this who are interested in streaming. I remembered Winamp's shoutcast has a video support, so I did a basic search and found this. I think one should be able to make a private video-radio station for streaming to friends. http://en.wikipedia.org/wiki/Nullsoft_Streaming_Video http://www.scvi.net/stream/index.htm