The support for regular music and video files is straight forward with HTML5. The play, pause, etc. controls for the slideshow can also be done fairly easily with some JavaScript. The design changes, CSS obviously.
So the tricky part is to get the subtitle and effects on video to work. The way I'm offering to do this is by not actually editing the video file, but by displaying an edited version using the <canvas> tag and some JavaScript. This way, every time an effect is added to a video, it won't be necessary to actually save a new file, but just to save the code that makes it display the desired effect.