  Virtual reality (VR) video provides an immersive 360 viewing experience to a
user wearing a head-mounted display: as the user rotates his head,
correspondingly different fields-of-view (FoV) of the 360 video are rendered
for observation. Transmitting the entire 360 video in high quality over
bandwidth-constrained networks from server to client for real-time playback is
challenging. In this paper we propose a multi-stream switching framework for VR
video streaming: the server pre-encodes a set of VR video streams covering
different view ranges that account for server-client round trip time (RTT)
delay, and during streaming the server transmits and switches streams according
to a user's detected head rotation angle. For a given RTT, we formulate an
optimization to seek multiple VR streams of different view ranges and the
head-angle-to-stream mapping function simultaneously, in order to minimize the
expected distortion subject to bandwidth and storage constraints. We propose an
alternating algorithm that, at each iteration, computes the optimal streams
while keeping the mapping function fixed and vice versa. Experiments show that
for the same bandwidth, our multi-stream switching scheme outperforms a
non-switching single-stream approach by up to 2.9dB in PSNR.
