must wait for player child process; must run player in a thread so the progress line won't be blocked