I'm trying to synchronize playback on two computers. Seems like a simple enough thing...
But I've been working the last four days, and have reached my frustration limit. Here's what I've tried so far:
1) Using VideoLAN with the netsync plugin. It performs a seek when the error reaches a threshold, which causes an obvious jump and is unacceptably ugly. I want to use VLC's ability to adjust the playback rate to smoothly correct instead.
2) Modifying the plugin. I'm a Windows/MCU developer and am not terribly familiar with the required C toolchains, Linux, repositories, etc. Spent two days without success, and gave up to try other options. (If a preconfigured VirtualBox image capable of successfully compiling VLC were available, it would have been a HUGE help, hint hint. I found better coders than me struggling with this as well.)
3) Writing my own simple media player using libvlc. Explored the available .NET wrappers to find them outdated, incomplete, or non-functional.
4) Writing my own wrapper. Was going well until I found that both libvlc_media_player_get_position and libvlc_media_player_get_time only update 3-4 times a second, crippling their accuracy. Worse, I found mention of a bug that causes them to stop updating altogether under certain conditions. Unacceptable.
5) Getting the playback position the way netsync does it - using the input_Control function in libvlccore with the INPUT_GET_PCR_SYSTEM parameter. This looked extremely promising until I discovered that if playback rate is altered, the times returned by this function don't likewise speed up/down, and no longer bear any relationship to actual media position.
I've run out of ideas, and am REALLY tired of dead end approaches at this point. So I'm asking for help. How do you get an instantaneous and reasonably accurate playback position, with none of the bugs/limitations/caveats mentioned above?