Refactor streaming source to use MediaSource