<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	 xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>360 video &#8211; Bitmovin</title>
	<atom:link href="https://bitmovin.com/tag/360-video/feed" rel="self" type="application/rss+xml" />
	<link>https://bitmovin.com</link>
	<description>Bitmovin provides adaptive streaming infrastructure for video publishers and integrators. Fastest cloud encoding and HTML5 Player. Play Video Anywhere.</description>
	<lastBuildDate>Fri, 05 Jan 2024 13:02:34 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://bitmovin.com/wp-content/uploads/2023/11/bitmovin_favicon.svg</url>
	<title>360 video &#8211; Bitmovin</title>
	<link>https://bitmovin.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Encoding VR and 360 Immersive Video for Meta Quest Headsets</title>
		<link>https://bitmovin.com/best-encoding-settings-meta-vr-360-headsets</link>
					<comments>https://bitmovin.com/best-encoding-settings-meta-vr-360-headsets#respond</comments>
		
		<dc:creator><![CDATA[Gabriel Dávila Revelo]]></dc:creator>
		<pubDate>Tue, 14 Nov 2023 07:24:23 +0000</pubDate>
				<category><![CDATA[Developers]]></category>
		<category><![CDATA[360 video]]></category>
		<category><![CDATA[Meta Quest]]></category>
		<category><![CDATA[per-title encoding]]></category>
		<category><![CDATA[video encoding]]></category>
		<category><![CDATA[VR]]></category>
		<guid isPermaLink="false">https://bitmovin.com/?p=258046</guid>

					<description><![CDATA[<p>This article was originally published in April 2023. It was updated Nov 14, 2023 with information about Quest 3 AV1 support. Whether you’re calling it Virtual Reality (VR) or 360 video or Metaverse content, there are a lot of details that should be taken into consideration in order to guarantee a good immersive experience. Things...</p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/best-encoding-settings-meta-vr-360-headsets">Encoding VR and 360 Immersive Video for Meta Quest Headsets</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><em>This article was originally published in April 2023. It was updated Nov 14, 2023 with information about Quest 3 AV1 support.</em></p>



<p>Whether you’re calling it Virtual Reality (VR) or 360 video or Metaverse content, there are a lot of details that should be taken into consideration in order to guarantee a good immersive experience. Things like video resolution, bitrates and codec settings all need to be set in a way that creates a high quality of experience for the viewers, while being conscious of storage and delivery costs that can come with these huge files. Although all this stuff has been widely discussed for 2D displays, like mobile phones and TVs, VR streaming differs enormously from those traditional screens, using different display technology that drastically shortens the viewing distance from eye to screen. In addition to that, VR headset specs may differ from one device to another, so the same video may produce a different visual experience depending on the model or device. In this post we are going to share the things you need to consider, along with tips and best practices for how to encode great looking VR content, specifically for playback on Meta Quest (formerly known as Oculus) headsets.</p>



<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<ul class="wp-block-advgb-summary advgb-toc alignnone"><li class="toc-level-1"><a href="#visual-quality-requirements-of-3dvr-vs-2d-videos-91e83fa5-c6da-4e53-89c0-34f34bdf7ff6">Visual quality requirements of 3D-VR vs 2D videos</a></li><li class="toc-level-2"><a href="#vmaf-for-3dvrnbsp-4923917a-fd04-4e02-b56e-671932f1a31a">VMAF for 3D-VR</a></li><li class="toc-level-2"><a href="#psnr-for-3dvr-8de2af51-2ee9-4533-bd8a-8ddbcfff9fac">PSNR for 3D-VR</a></li><li class="toc-level-1"><a href="#the-best-encoding-settings-for-meta-quest-devices-ccd62a4d-8b6e-4b48-8ed6-16bfe336a43c">The Best Encoding Settings for Meta Quest devices</a></li><li class="toc-level-2"><a href="#resolution-ce011a02-217b-470f-b2aa-de3ef777e6b6">Resolution</a></li><li class="toc-level-2"><a href="#h265-video-codec-settings-cf92f3ca-c86a-4ae1-b765-483b9f9370a1">H265 Video Codec Settings&nbsp;</a></li><li class="toc-level-1"><a href="#building-360vr-encoding-workflows-with-bitmovin-vod-encoding-de3a1733-97fc-4720-85fb-cfed1da73817">Building 360-VR encoding workflows with Bitmovin VOD Encoding</a></li><li class="toc-level-2"><a href="#pertitle-encoding-configuration-for-vrnbsp-c6e2b8d2-67c5-41da-b255-1124a5533a89">Per-Title Encoding configuration for VR</a></li><li class="toc-level-2"><a href="#creating-monoscopic-outputs-from-stereoscopic-inputs-fa93ce41-4584-4cc6-a573-35aa5fd8e92a">Creating monoscopic outputs from stereoscopic inputs</a></li><li class="toc-level-1"><a href="#av1-codec-support-on-meta-quest-3-27773a8d-cb75-4f33-86a3-11967426f315">AV1 Codec Support on Meta Quest 3</a></li></ul>
</div>
</div>
</div>



<div style="height:9px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="visual-quality-requirements-of-3dvr-vs-2d-videos-91e83fa5-c6da-4e53-89c0-34f34bdf7ff6">Visual quality requirements of 3D-VR vs 2D videos</h2>



<p>Unlike traditional 2D screens, where viewers are located at a considerable distance from the screen, VR viewers are looking at a smaller screen much closer to the eyes. This drastically changes the way a video should be encoded in order to guarantee good visual quality for an immersive 3D experience. For this same reason, the traditional 2D video quality metrics such as VMAF and PSNR are not usually useful to measure the visual perception for 3-D VR content, for instance:</p>



<div style="height:14px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="vmaf-for-3dvrnbsp-4923917a-fd04-4e02-b56e-671932f1a31a">VMAF for 3D-VR</h3>



<p>VMAF considers 2D viewers located at a viewing distance in the order of magnitude of the screen size, for example:<br></p>



<ul>
<li><a href="https://github.com/Netflix/vmaf/blob/master/resource/doc/models.md#predict-quality-on-a-4ktv-screen-at-15h" rel="nofollow noopener" target="_blank">4K VMAF model</a> &#8211; vmaf_4k_v0.6.1,&nbsp; takes into consideration that the viewer is located at 1.5H from the screen, where H is the TV screen high.&nbsp;</li>
</ul>



<ul>
<li><a href="https://github.com/Netflix/vmaf/blob/master/resource/doc/models.md#predict-quality-on-a-4ktv-screen-at-15h" rel="nofollow noopener" target="_blank">HD VMAF model</a> &#8211; vmaf_v0.6.1, considers&nbsp; a viewer located at 3H from the screen.</li>
</ul>



<div style="height:12px" aria-hidden="true" class="wp-block-spacer"></div>



<p>The previous models resulted in a pixel density of about 60 pixels per degree (ppd) and 75 ppd &#8211; for 4K and HD respectively. However, when talking about VR videos, the <a href="https://www.oculus.com/blog/vr-display-optics-pancake-lenses-ppd/?locale=pt_PT#:~:text=Meta%20Quest%202%20(-,20%20PPD,-).%20While%20it%E2%80%99s%20not" rel="nofollow noopener" target="_blank">pixel density is highly magnified</a>, for instance, for Meta Quest 2 headsets the specs mention a pixel density of 20 ppd. Therefore, the predefined VMAF models are not suitable.&nbsp; Actually, if you do use VMAF to get the visual quality (VQ) for a VR video intended for headset playback, you’ll probably find it does not look good enough even though it has a high VMAF score &#8211; this is because of the “zoom in” that Quest does in comparison to the traditional screens.&nbsp;</p>



<div style="height:14px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="psnr-for-3dvr-8de2af51-2ee9-4533-bd8a-8ddbcfff9fac">PSNR for 3D-VR</h3>



<p>Even when it is not a rule, it is expected to have good VQ on 2D videos when PSNR values are between 39 dB and 42 dB &#8211; for average to high complexity videos. See [<a href="https://leandromoreira.com/2016/10/09/how-to-measure-video-quality-perception/" rel="nofollow noopener" target="_blank">1</a>] [<a href="https://netflixtechblog.com/toward-a-practical-perceptual-video-quality-metric-653f208b9652" rel="nofollow noopener" target="_blank">2</a>] However, this PSNR range is usually not enough to create a good immersive experience with Quest headsets. For instance, according to some empirical tests we did, we found that at least a PSNR above 48 dB is required for good VQ with Quest devices.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1600" height="900" src="https://bitmovin.com/wp-content/uploads/2023/04/oculus-distance.jpg" alt="- Bitmovin" class="wp-image-258047" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/oculus-distance-300x169.png?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/oculus-distance.jpg?size=384x216&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/oculus-distance-768x432.png?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/oculus-distance.jpg?size=1152x648&amp;lossy=2&amp;strip=1&amp;webp=1 1152w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/oculus-distance-1536x864.png?lossy=2&amp;strip=1&amp;webp=1 1536w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/oculus-distance.jpg?lossy=2&amp;strip=1&amp;webp=1 1600w" sizes="(max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption">image source: <a href="https://www.meta.com/blog/quest/vr-display-optics-pancake-lenses-ppd/?utm_source=www.google.com&amp;utm_medium=oculusredirect" rel="nofollow noopener" target="_blank">Meta Quest Blog</a></figcaption></figure>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="the-best-encoding-settings-for-meta-quest-devices-ccd62a4d-8b6e-4b48-8ed6-16bfe336a43c">The Best Encoding Settings for Meta Quest devices</h2>



<p>A general overview of the Video Requirements can be found at the <a href="https://creator.oculus.com/media-studio/documentation/video-spec/" rel="nofollow noopener" target="_blank">Meta Quest website</a>. Additionally, the following encoding settings may be useful when building your encoding workflow:&nbsp;</p>



<div style="height:7px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="resolution-ce011a02-217b-470f-b2aa-de3ef777e6b6">Resolution</h3>



<p>The minimal resolution suggested by Meta is 3840 x 3840 px for stereoscopic content and 3840 x 1920 px for monoscopic content, which is much higher than <a href="https://developers.google.com/vr/discover/360-degree-media#common_formats" rel="nofollow noopener" target="_blank">earlier generations or mobile devices</a>.&nbsp;&nbsp;</p>



<div style="height:8px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="h265-video-codec-settings-cf92f3ca-c86a-4ae1-b765-483b9f9370a1">H265 Video Codec Settings&nbsp;</h3>



<div style="height:8px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Video Codec</strong> &#8211; Meta Quest devices support H264(AVC) and H265(HEVC) codecs, however given that they require resolutions above 3840 px, we strongly recommend H265 due to the high encoding efficiency it has when comparing it to H264.&nbsp;</p>



<div style="height:7px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>GOP Length</strong> &#8211; In our tests we successfully achieved a good VQ within the recommending bitrate range, using a 2-second GOP length for 30 fps content. However, since the VR experience is not as latency sensitive for video on demand, we suggest using greater GOP lengths in order to improve the encoding efficiency even more if needed.</p>



<div style="height:6px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Target bitrate and CRF</strong> &#8211; Meta suggests a target bitrate between 25-60 Mbps and as mentioned, we strongly suggest using the H265 codec to maintain high visual quality within that range. If the bitrate goes too far above the suggested maximum, customers may experience slow playback or stalling due to device performance issues.&nbsp;</p>



<div style="height:14px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Having said all that, it is worth mentioning that setting a proper bitrate to meet the VQ expectations is really challenging, mainly because the bitrates necessary may change from one piece of content to another depending on their visual complexity. Because of that, we suggest using a CRF based encoding instead of a fixed bitrate. Specifically, we found that when talking about H265, a CRF between 17-18 would produce videos that are suitable for viewing on Quest headsets without excessively high bitrates.&nbsp;</p>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="building-360vr-encoding-workflows-with-bitmovin-vod-encoding-de3a1733-97fc-4720-85fb-cfed1da73817">Building 360-VR encoding workflows with Bitmovin VOD Encoding</h2>



<p>Bitmovin’s VOD Encoding provides a set of highly flexible APIs for creating workflows that fully meet Meta Quest encoding requirements. For instance:</p>



<ul>
<li>If adaptive bitrate streaming is required at the output, <a href="https://bitmovin.com/per-title-encoding/">Bitmovin Per-Title</a> encoding can be used to automatically create the ABR ladder with the top rendition driven by the desired CRF target.</li>



<li>If progressive file output is required, a traditional CRF encoding can be used by capping the bitrates properly.</li>



<li>Additionally, Bitmovin filters can be used to create monoscopic content based on a stereoscopic input, for instance, cropping the original/stereoscopic video to convert it from a top-and-bottom or side-by-side array into a single one. Monoscopic outputs can be viewed on 2D displays, extending the reach of your 360 content beyond headsets.</li>
</ul>



<div style="height:23px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="pertitle-encoding-configuration-for-vrnbsp-c6e2b8d2-67c5-41da-b255-1124a5533a89">Per-Title Encoding configuration for VR</h3>



<p>The following per-title configuration may be used as a reference for encoding a VR content. Depending on the content complexity, the output may include from 4 to 7 renditions with the top rendition targeting a CRF value of 17.</p>



<pre class="wp-block-code"><code>perTitle: {
     h265Configuration: {
       minBitrate: 5000000,
       maxBitrate: 60000000,
       targetQualityCrf: 17,
       minBitrateStepSize: 1.5,
       maxBitrateStepSize: 2,
       codecMinBitrateFactor: 0.6,
       codecMaxBitrateFactor: 1.4,
       codecBufsizeFactor: 2,
       autoRepresentations: {
         adoptConfigurationThreshold: 0,
         },
       },
     }</code></pre>



<p>Theres also full code samples <a href="https://github.com/bitmovin/bitmovin-api-sdk-examples/blob/main/javascript/src/PerTitleEncoding.ts" target="_blank" rel="noreferrer noopener nofollow">here</a> if you would like to dig deeper.</p>



<p>The same configuration can be used to encode any VR format such as top-and-bottom, side-by-side or monoscopic 360 content. The per-title algorithm will automatically propose a proper bitrate and resolution for each VR format based on the input details. Additionally, it is strongly recommended to use VOD_HIGH_QUALITY as an encoding preset and THREE_PASS as encoding mode. This will assure the Bitmovin Encoder delivers the best possible visual quality.&nbsp;</p>



<p>In our tests using typical medium-high complexity content, we found that using a<strong> CRF of 17 produces good VQ for Meta Quest playback</strong>, with PSNR values above 48 dB and bitrates that are usually below the suggested maximum of 60 Mbps.&nbsp;</p>



<p>Alternatively, traditional CRF encoding can be used instead of Per-title, for instance if only one rendition is desired at the output &#8211; with no ABR.</p>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="creating-monoscopic-outputs-from-stereoscopic-inputs-fa93ce41-4584-4cc6-a573-35aa5fd8e92a">Creating monoscopic outputs from stereoscopic inputs</h3>



<p>Usually, VR 360 cameras record the content in stereoscopic format either in top-and-bottom or side-by-side arrangements. However, depending on the customer use case, it could be required to convert the content from stereoscopic to monoscopic formats. This can be easily solved with the Bitmovin VOD Encoding API by applying cropping filters to remove the required pixels or frame percentage from the stereoscopic content, turning it into monoscopic format, i. e., by removing the left/right or the bottom/top side from the input asset.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1536" height="1536" src="https://bitmovin.com/wp-content/uploads/2023/04/stereoscopic_blender-1.jpeg" alt="- Bitmovin" class="wp-image-258049" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/stereoscopic_blender-1-150x150.jpeg?lossy=2&amp;strip=1&amp;webp=1 150w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/stereoscopic_blender-1-300x300.jpeg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/stereoscopic_blender-1.jpeg?size=384x384&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/stereoscopic_blender-1-768x768.jpeg?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/stereoscopic_blender-1.jpeg?size=1152x1152&amp;lossy=2&amp;strip=1&amp;webp=1 1152w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2023/04/stereoscopic_blender-1.jpeg?lossy=2&amp;strip=1&amp;webp=1 1536w" sizes="(max-width: 1536px) 100vw, 1536px" /><figcaption class="wp-element-caption">Top-Bottom Stereoscopic Format source: <a href="https://code.blender.org/2015/03/1451/" rel="nofollow noopener" target="_blank">Blender Foundation</a></figcaption></figure>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<p>For instance, the following javascript snippet would remove the top side of a 3840 x 3840 stereoscopic content:</p>



<pre class="wp-block-code"><code>.....
.....
// Crop filter definition
const cropTopSideFilter = new CropFilter({
  name: "stereo-to-mono-filter-example",
  left: 0,
  right: 0,
  bottom: 0,
  top: 1920,
 })
 
// Crop filter creation 
cropTopSideFilter = await bitmovinApi.encoding.filters.crop.create( cropTopSideFilter)

// Stream Filter definition
const cropTopSideStreamFilter = new StreamFilter({
  id : cropTopSideFilter.id,
  position: 0,
})

// StreamFilter creation
bitmovinApi.encoding.encodings.streams.filters.create(&lt;encoding.id&gt;, &lt;videoStream.id&gt;, &#91;cropTopSideStreamFilter] )
</code></pre>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="av1-codec-support-on-meta-quest-3-27773a8d-cb75-4f33-86a3-11967426f315">AV1 Codec Support on Meta Quest 3</h2>



<p>In the recommended settings above, we strongly suggested using HEVC over H.264 because the newer generation codec offers greater compression efficiency that turns into bandwidth savings and a better quality of experience for users. Now with the Quest 3, you can take advantage of AV1, an even newer codec that outperforms HEVC. On average, our testing has shown that you can maintain equivalent quality while using around 30% lower bitrate with AV1. This will depend on the type of content you’re working with, so if you’re experimenting with AV1 for the Quest 3, choosing a bitrate that’s ~25% lower than your HEVC encoding would be a good place to start.  DEOVR <a href="https://deovr.com/blog/77-testing-av1-video-ahead-of-the-quest-3" rel="nofollow noopener" target="_blank">shared</a> a 2900p sample .mp4 file encoded with AV1, but you can also create your own with a Bitmovin trial account.</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ready to start encoding your own 360 content for Meta Quest headsets? Sign up for a <a href="https://bitmovin.com/dashboard/signup">free trial</a> and get going today! </p>



<div style="height:39px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Related links:</p>



<p><a href="https://bitmovin.com/docs/encoding/tutorials/per-title-configuration-options-explained">Bitmovin Docs &#8211; Encoding Tutorials | Per-Title Configuration Options explained</a></p>



<p><a href="https://bitmovin.com/demos/vr-360">Bitmovin Player 360 video demo</a></p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/best-encoding-settings-meta-vr-360-headsets">Encoding VR and 360 Immersive Video for Meta Quest Headsets</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://bitmovin.com/best-encoding-settings-meta-vr-360-headsets/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bitmovin Receives Excellence in DASH Award for Tile-Based Streaming of VR and 360° Video</title>
		<link>https://bitmovin.com/bitmovin-receives-excellence-dash-award-tile-based-streaming-vr-360-video</link>
		
		<dc:creator><![CDATA[Tanya Vernitsky]]></dc:creator>
		<pubDate>Wed, 28 Jun 2017 09:24:40 +0000</pubDate>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[360 video]]></category>
		<category><![CDATA[VR]]></category>
		<guid isPermaLink="false">http://bitmovin.com/?p=20703</guid>

					<description><![CDATA[<p>Tile-Based Streaming is set to play a major role in delivering VR and 360 video to mainstream audiences by reducing bandwidth requirements, reducing costs and vastly increasing accessibility. Bitmovin engineers and co-founders Mario Graf (@grafmar_io), Christian Timmerer (@timse7), and Christopher Mueller (@chris_bitmovin) have been awarded the Excellence in DASH Award at ACM Multimedia Systems 2017 in Taipei, Taiwan....</p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/bitmovin-receives-excellence-dash-award-tile-based-streaming-vr-360-video">Bitmovin Receives Excellence in DASH Award for Tile-Based Streaming of VR and 360° Video</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="size-full wp-image-20704 alignnone" src="https://bitmovin.com/wp-content/uploads/2017/06/800-feature-image-DASH-Award.jpg" alt="Tile-Based Streaming could be the future of VR and 360 video" width="800" height="368" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/06/800-feature-image-DASH-Award-300x138.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/06/800-feature-image-DASH-Award.jpg?size=384x177&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/06/800-feature-image-DASH-Award-768x353.jpg?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/06/800-feature-image-DASH-Award.jpg?lossy=2&amp;strip=1&amp;webp=1 800w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<blockquote><p>Tile-Based Streaming is set to play a major role in delivering <a href="https://bitmovin.com/360-vr-video/">VR and 360</a> video to mainstream audiences by reducing bandwidth requirements, reducing costs and vastly increasing accessibility.</p></blockquote>
<p><span style="font-weight: 400;">Bitmovin engineers and co-founders Mario Graf (<a href="https://twitter.com/grafmar_io" rel="nofollow noopener" target="_blank">@grafmar_io</a>), Christian Timmerer (<a href="https://twitter.com/timse7" rel="nofollow noopener" target="_blank">@timse7</a>), and Christopher Mueller (<a href="https://twitter.com/chris_bitmovin" rel="nofollow noopener" target="_blank">@chris_bitmovin</a>) have been awarded the Excellence in DASH Award at ACM Multimedia Systems 2017 in Taipei, Taiwan.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">The Bitmovin team receives the third place award for their paper “</span><span style="font-weight: 400;">Towards Bandwidth Efficient Adaptive Streaming of Omnidirectional Video over HTTP: Design, Implementation, and Evaluation</span><span style="font-weight: 400;">” [</span><a href="http://dl.acm.org/citation.cfm?id=3084016" rel="nofollow noopener" target="_blank"><span style="font-weight: 400;">PDF</span></a><span style="font-weight: 400;">], [</span><a href="https://multimediacommunication.blogspot.co.at/2017/04/acm-mmsys17-special-session-paper.html" rel="nofollow noopener" target="_blank"><span style="font-weight: 400;">Session Slides</span></a><span style="font-weight: 400;">]. In this paper, the researchers analyze adaptive bitrate streaming of VR and 360-degree video over HTTP and describe the use of </span><span style="font-weight: 400;">tiles</span><span style="font-weight: 400;">, as specified within modern video codecs, such HEVC/H.265 and VP9, to recognize</span><b> bitrate savings of 40-65%</b><span style="font-weight: 400;">. </span><br />
<span style="font-weight: 400;">These findings establish a baseline for advanced streaming techniques of immersive video, such as VR and 360-degree video, including real-life applications and the outline of the research roadmap. Bitmovin is committed to shaping the future of online video and building streaming solutions for commercial applications that enhance end-user experience and reduce friction for video developers. You can learn more about Bitmovin end-to-end support for immersive video in this tutorial &#8211; </span><a href="https://bitmovin.com/tutorials/vr-360-video-encoding-playout/"><span style="font-weight: 400;">VR &amp; 360° Video and Adaptive Bitrate Streaming</span></a><span style="font-weight: 400;">.  </span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">The </span><a href="http://dashif.org/excellence-in-dash-award-acm-mmsys-2017/" rel="nofollow noopener" target="_blank"><span style="font-weight: 400;">award</span></a><span style="font-weight: 400;"> is established by the DASH Industry Forum. The DASH-IF “creates interoperability guidelines on the usage of the MPEG-DASH streaming standard, promotes and catalyze the adoption of MPEG-DASH and help transition it from a specification into a real business. It consists of the major streaming and media companies, such as Microsoft, Netflix, Google, Ericsson, Samsung and Adobe</span><span style="font-weight: 400;">.” Bitmovin was among the first to deploy DASH in accordance with the DASH-IF open standard guidelines. We are an active member of the DASH-IF and actively contribute research and testing data to the DASH community.</span></p>
<h2>What and Why is Tile Based Streaming?</h2>
<p>The nature of 360 video creates much larger files sizes simply due to the extra pixels required for a spherical image. But many of these pixels delivered in the video stream are outside of the viewport and are <strong>never seen</strong>. This causes <strong>unnecessarily high</strong> bandwidth requirements and CDN costs.<br />
Tile based streaming is a revolutionary technique that solves this problem by breaking a 360° video into “tiles”, and streams the highest quality only to visible sections of the video. At the same time it uses lower quality (smaller) files for unseen tiles.<br />
<img loading="lazy" decoding="async" class="size-full wp-image-20721 alignnone" src="https://bitmovin.com/wp-content/uploads/2017/06/tile-based.jpg" alt="Tile Based Streaming will save bandwidth and reduce CDN costs" width="800" height="404" /><br />
This technique will be among the next major innovations in the area of 360 &amp; VR video, and will offer huge cost savings and quality improvements, and Bitmovin is leading the way towards making this technology available for commercial applications.<br />
To see tile-based streaming in action, request a demo with our video solutions experts.</p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/bitmovin-receives-excellence-dash-award-tile-based-streaming-vr-360-video">Bitmovin Receives Excellence in DASH Award for Tile-Based Streaming of VR and 360° Video</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>360 degree (live) adaptive streaming with RICOH THETA S and Bitmovin</title>
		<link>https://bitmovin.com/360-degree-live-adaptive-streaming-with-ricoh-theta-s-and-bitmovin</link>
		
		<dc:creator><![CDATA[Christian Timmerer]]></dc:creator>
		<pubDate>Thu, 30 Mar 2017 13:29:09 +0000</pubDate>
				<category><![CDATA[Innovation]]></category>
		<category><![CDATA[360 video]]></category>
		<category><![CDATA[live encoding]]></category>
		<guid isPermaLink="false">https://bitmovin.com/?p=18960</guid>

					<description><![CDATA[<p>Recently I got the RICOH THETA S 360-degree camera and I asked myself how to setup a (live) adaptive streaming session using Bitmovin cloud encoding and HTML5 player. I quickly found some general guidelines on the internet but before providing step-by-step instructions one has to consider the following: Update the firmware of your Ricoh Theta S by downloading...</p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/360-degree-live-adaptive-streaming-with-ricoh-theta-s-and-bitmovin">360 degree (live) adaptive streaming with RICOH THETA S and Bitmovin</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Recently I got the RICOH THETA S 360-degree camera and I asked myself how to setup a (live) adaptive streaming session using Bitmovin <a href="https://bitmovin.com/cloud-encoding-service/">cloud encoding</a> and <a href="https://bitmovin.com/html5-player/">HTML5 player</a>. I quickly found some <a href="http://theta360.guide/community-document/live-streaming.html" target="_blank" rel="noopener noreferrer nofollow">general guidelines</a> on the internet but before providing step-by-step instructions one has to consider the following:</p>
<ul>
<li>Update the firmware of your Ricoh Theta S by downloading the <a href="https://theta360.com/en/support/download/" target="_blank" rel="noopener noreferrer nofollow">basic app</a>, start it (while the camera is connected via USB) and go to File -&gt; Firmware Update&#8230; and follow the steps on the screen. It&#8217;s pretty easy and mine got updated from v1.11 to v1.82.</li>
<li>Think about a storage solution for your files generated by the Bitmovin <a href="https://bitmovin.com/cloud-encoding-service/">cloud encoding</a> and possible options are FTP, Amazon S3, Google Cloud Storage, and Dropbox. I used Amazon S3 for this setup which provides a bucket name, &#8220;AWS Access Key&#8221;, and &#8220;AWS Secret Key&#8221;.</li>
<li>Setup a basic web site and make sure it works with the Bitmovin <a href="https://bitmovin.com/html5-player/">HTML5 player</a> for video on demand services with the content hosted on the previously selected storage solution (i.e., avoid any CORS issues). In my setup I used WordPress and the Bitmovin WordPress plugin which makes it very easy&#8230;</li>
</ul>
<h3>Step 1: Follow steps 1-4 from <a href="http://theta360.guide/community-document/live-streaming.html" target="_blank" rel="noopener noreferrer nofollow">here</a>.</h3>
<p>Follow steps 1-4 from the <a href="http://theta360.guide/community-document/live-streaming.html" target="_blank" rel="noopener noreferrer nofollow">general guidelines</a>. Basically, install the <a href="https://theta360.com/en/support/download/" target="_blank" rel="noopener noreferrer nofollow">live-streaming app</a>, register the device, and install/configure <a href="https://obsproject.com/" target="_blank" rel="noopener noreferrer">OBS</a>. Enable the live streaming on theRICOH THETA S and within OBS use the &#8220;Custom Streaming Server&#8221; of the &#8220;Stream&#8221; settings. That basically connects the RICOH THETA S with OBS on your local computer. The next step is forwarding this stream to the Bitmovin <a href="https://bitmovin.com/cloud-encoding-service/">cloud encoding</a> service for DASH/HLS streaming.</p>
<h3>Step 2: Create a new Bitmovin Output</h3>
<ol>
<li>Login to the Bitmovin portal and go to Encoding -&gt; Outputs -&gt; Create Output</li>
<li>Select Amazon S3 and use any “Output Profile name”, e.g., ricoh-livestream-test</li>
<li>Enter the name of your Bucket from Amazon S3</li>
<li>The prefix is not needed</li>
<li>Select any “Host-Region” (preferably one close to where you are)</li>
<li>Enter the ”AWS Access Key&#8221; and the “AWS Secret Key” from Amazon S3</li>
<li>Make sure the &#8220;Create Public S3 URLs&#8221; checkbox is enabled</li>
</ol>
<p>An example screenshot is shown below.<br />
<img loading="lazy" decoding="async" class="aligncenter wp-image-18962 size-large" src="https://bitmovin.com/wp-content/uploads/2017/03/CreateOutput-1024x299.png" alt="- Bitmovin" width="1024" height="299" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateOutput-300x88.png?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateOutput.png?size=384x112&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateOutput-768x224.png?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateOutput-1024x299.png?lossy=2&amp;strip=1&amp;webp=1 1024w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateOutput-1536x448.png?lossy=2&amp;strip=1&amp;webp=1 1536w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateOutput-2048x598.png?lossy=2&amp;strip=1&amp;webp=1 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><br />
Finally, click the “+” sign to create it and if everything is correct, the output will be created, otherwise an error message will be shown. In such a case, make sure the bucket name and keys are correct as provided when creating a bucket on Amazon S3.</p>
<h3>Step 3: Create a new Bitmovin Livestream</h3>
<ol>
<li>Login to the Bitmovin portal and go to Live (beta) -&gt; Create Livestream</li>
<li>Select &#8220;Encoding-Profile&#8221;: bitcodin fullHD is sufficient (4K not needed as the device provides only fullHD)</li>
<li>Select &#8220;Output-Profile&#8221;: select the output you’ve created in previous step (ricoh-livestream-test)</li>
<li>Add a &#8220;Livestream-Name&#8221; (any string works here), e.g., ricoh-livestream-test</li>
<li>Add a &#8220;Stream-Key&#8221; (any string works here), e.g., ricohlivestreamtest</li>
<li>Click &#8220;Create Live Stream&#8221;, an &#8220;Important Notice&#8221; shows up &amp; click &#8220;Create Live Stream&#8221;</li>
<li>Wait (could take some time, you may reload the page or go to the &#8220;Overview&#8221;) for RTMP PUSH URL to be used in OBS</li>
</ol>
<p>An example screenshot is shown below which displays the RTMP PUSH URL, Stream Key, MPD URL, and HLS URL to be used in the next steps.<br />
<img loading="lazy" decoding="async" class="aligncenter wp-image-18963 size-large" src="https://bitmovin.com/wp-content/uploads/2017/03/CreateLivestream3-1024x329.png" alt="- Bitmovin" width="1024" height="329" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateLivestream3-300x96.png?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateLivestream3.png?size=384x123&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateLivestream3-768x247.png?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateLivestream3-1024x329.png?lossy=2&amp;strip=1&amp;webp=1 1024w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateLivestream3-1536x493.png?lossy=2&amp;strip=1&amp;webp=1 1536w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/CreateLivestream3-2048x657.png?lossy=2&amp;strip=1&amp;webp=1 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<h3>Step 4: Start Streaming in OBS</h3>
<ol>
<li>Go to OBS -&gt; Settings</li>
<li>In section &#8220;Stream&#8221;, select &#8220;Custom Streaming Server&#8221;</li>
<li>Enter the RTMP PUSH URL from Bitmovin in the &#8220;URL&#8221; field of OBS</li>
<li>Enter the Stream Key from Bitmovin in the &#8220;Stream key&#8221; field of OBS</li>
<li>Click &#8220;OK&#8221; and then click &#8220;Start Streaming&#8221; in OBS</li>
</ol>
<p>An example screenshot is shown below and if everything works fine OBS will stream to the Bitmovin cloud encoding service.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18975 size-large" src="https://bitmovin.com/wp-content/uploads/2017/03/OBSStreamSetting-1024x789.png" alt="- Bitmovin" width="1024" height="789" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/OBSStreamSetting-300x231.png?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/OBSStreamSetting.png?size=384x296&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/OBSStreamSetting-768x592.png?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/OBSStreamSetting-1024x789.png?lossy=2&amp;strip=1&amp;webp=1 1024w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/OBSStreamSetting-1536x1184.png?lossy=2&amp;strip=1&amp;webp=1 1536w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/OBSStreamSetting.png?lossy=2&amp;strip=1&amp;webp=1 1930w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<h3>Step 5: Setup the HTML5 Player</h3>
<p>Basically follow the instructions <a href="https://bitmovin.com/tutorials/vr-360-video-encoding-playout/">here</a> or in my case I simply used WordPress and the Bitmovin WordPress plugin. In such a case&#8230;</p>
<ol>
<li>Within WordPress, create a post or page and go to the Bitmovin WP plugin</li>
<li>Select &#8220;Add New Video&#8221;</li>
<li>Enter any name/title of the new video</li>
<li>In the &#8220;Video&#8221; section, enter the &#8220;DASH URL&#8221; and &#8220;HLS URL&#8221; from the Bitmovin livestream provided in step 3 (i.e., the MPD URL and the HLS URL)</li>
<li>In the &#8220;Player&#8221; section, select latest stable (in my case this was latest version 7)</li>
<li>In the &#8220;VR&#8221; section, select startup mode &#8220;2d&#8221; and leave the rest as is</li>
</ol>
<p>An example screenshot is shown below.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18976 size-large" src="https://bitmovin.com/wp-content/uploads/2017/03/WPAddNewVideo-1024x845.png" alt="- Bitmovin" width="1024" height="845" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/WPAddNewVideo-300x248.png?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/WPAddNewVideo.png?size=384x317&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/WPAddNewVideo-768x634.png?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/WPAddNewVideo-1024x845.png?lossy=2&amp;strip=1&amp;webp=1 1024w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/WPAddNewVideo-1536x1268.png?lossy=2&amp;strip=1&amp;webp=1 1536w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2017/03/WPAddNewVideo-2048x1690.png?lossy=2&amp;strip=1&amp;webp=1 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>Finally, click on &#8220;Publish&#8221; in WordPress which will give you a shortcut code to be placed (copy/paste) into your site or post and you&#8217;re done&#8230;!<br />
A similar approach can be used for video on demand content but in such a case you don&#8217;t need OBS as you simply encode your content using the Bitmovin <a href="https://bitmovin.com/cloud-encoding-service/">cloud encoding</a> and the <a href="https://bitmovin.com/html5-player/">HTML5 player</a> for the actual streaming.<br />
<strong>More Resources:</strong></p>
<ul>
<li><a href="https://bitmovin.com/360-vr-video/">Download our 360/VR Datasheet</a></li>
<li><a href="https://bitmovin.com/video-encoding-data-sheet/">Download our Encoding Datasheet</a></li>
<li><a href="https://bitmovin.com/video-player-datasheet/">Download our Player Datasheet</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://bitmovin.com/360-degree-live-adaptive-streaming-with-ricoh-theta-s-and-bitmovin">360 degree (live) adaptive streaming with RICOH THETA S and Bitmovin</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Build a Virtual Reality Website for HTML5 Browsers</title>
		<link>https://bitmovin.com/html5-vr-player-virtual-reality-technology</link>
		
		<dc:creator><![CDATA[Tristan Boyd]]></dc:creator>
		<pubDate>Thu, 23 Jun 2016 07:27:21 +0000</pubDate>
				<category><![CDATA[Developers]]></category>
		<category><![CDATA[360 video]]></category>
		<category><![CDATA[video player]]></category>
		<category><![CDATA[virtual reality]]></category>
		<guid isPermaLink="false">http://bitmovin.com/?p=9092</guid>

					<description><![CDATA[<p>Thanks to MOZVR and their A-Frame JavaScript framework, you can now create a completely immersive web experience in standard web browsers. Usually when you think Virtual Reality or 360° you expect to open a video or some sort of software application. Thanks to MozVR’s A-FRAME, the internet is now available in Virtual Reality format, which means...</p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/html5-vr-player-virtual-reality-technology">Build a Virtual Reality Website for HTML5 Browsers</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-9192 aligncenter" src="https://bitmovin.com/wp-content/uploads/2016/06/VR-360-in-html5.jpg" alt="Virtual Reality in HTML5 browsers" width="1024" height="512" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/VR-360-in-html5-300x150.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/VR-360-in-html5.jpg?size=384x192&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/VR-360-in-html5-768x384.jpg?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/VR-360-in-html5.jpg?lossy=2&amp;strip=1&amp;webp=1 1024w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<blockquote><p>Thanks to MOZVR and their A-Frame JavaScript framework, you can now create a completely immersive web experience in standard web browsers.</p></blockquote>
<p>Usually when you think Virtual Reality or 360° you expect to open a video or some sort of software application. Thanks to <a href="https://aframe.io/" target="_blank" rel="noopener noreferrer nofollow">MozVR’s A-FRAME</a>, the internet is now available in Virtual Reality format, which means you can enter a virtual reality environment simply by opening a normal website.</p>
<h2>An HTML5/JavaScript VR Environment</h2>
<p>Imagine creating a virtual cinema for your video portal. Allow users to &#8220;walk&#8221; through the foyer, browsing film posters and viewing trailers right on the wall. Once the user selects a film to watch, she can walk into the cinema, maybe even choose the best seat, before sitting down to watch the film on an enormous cinema screen.<br />
Obviously this sort of immersive experience is easy enough to create (if you have the skills) in a host of Virtual Reality software environments and computer game frameworks, but up until now, not in a normal web browser.<br />
MOZVR and their new A-FRAME framework is changing all that. It is now relatively simple to create a three dimensional environment that loads directly into the user’s browser without any interruption to their experience. A smooth transition from online browsing to VR.<br />
Looking ahead a little further, the steady push towards HTML5 compliance from all the major browsers means that it is becoming relatively easy to embed an HTML5 VR player or an <a href="https://bitmovin.com/docs/player/tutorials/how-to-setup-vr-and-360-video-playback">html5 360 video player</a> within the HTML5 VR environment. Theoretically you could embed VR movies and experiences within your web based VR cinema environment and create a browser based &#8220;Virtual VR cinema.&#8221;</p>
<h2>VR Browser Demo</h2>
<p>We have created a very simple demonstration to show how easy it is to get started with Virtual Reality in HTML5 and JavaScript. This demo contains less than 40 lines of code in one HTML file. It links to the a-frame.js JavaScript file and to two images. You can enter the VR environment simply by following the link below. Control your position and view using your mouse and the W,A,S and D keys on your keyboard.<br />
<a href="https://bitmovin.com/A-FRAME/index.html" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter wp-image-9093 size-full" src="https://bitmovin.com/wp-content/uploads/2016/06/virtual-reality-websites.jpg" alt="Virtual reality technology" width="800" height="320" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/virtual-reality-websites-300x120.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/virtual-reality-websites.jpg?size=384x154&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/virtual-reality-websites-768x307.jpg?lossy=2&amp;strip=1&amp;webp=1 768w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/virtual-reality-websites.jpg?lossy=2&amp;strip=1&amp;webp=1 800w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<h2>Getting Started with Browser Based Virtual Reality Technology</h2>
<p>Aframe is a JavaScript framework for building 3 dimensional environments within the browser. It wraps <a href="https://threejs.org/" target="_blank" rel="noopener noreferrer nofollow">three.js</a> and <a href="https://en.wikipedia.org/wiki/WebGL" target="_blank" rel="noopener noreferrer nofollow">WebGL </a>into HTML elements, creating an insanely easy to use framework that allows you to create a three dimensional web space within minutes.<br />
To create a scene like the demonstration above can be done in a few minutes. The first step is to create a basic HTML file, and include the JavaScript plugin in the head of your HTML document in the same way you would include JQuery or any other JavaScript file.</p>
<pre><pre class="brush: xml; title: ; notranslate">&amp;amp;amp;lt;script src=&quot;https://aframe.io/releases/0.2.0/aframe.min.js&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/script&amp;amp;amp;gt;</pre>
<h2>Creating the 3D Scene</h2>
<p>Once that is in place you can create the 3D scene using the a-scene tags. Within this tag, you can create elements, set up your camera positioning and define the way the background looks. In my simple demonstration I created a sky, four shapes, some simple animations and activated the cursor so that the user can trigger the animations using a hover event.<br />
The first section of my code defines some assets, namely the Bitmovin logo (logo.jpg) and the background 3D image (image.jpg) I assign ID tags to these assets so that I can reference them later.</p>
<pre><pre class="brush: xml; title: ; notranslate">
&amp;amp;amp;lt;a-assets&amp;amp;amp;gt;
&amp;amp;amp;lt;img id=&quot;logo&quot; src=&quot;logo.png&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;img id=&quot;bg&quot; src=&quot;image.jpg&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-assets&amp;amp;amp;gt;
</pre>
<p>With the assets in place, creating the background is as easy as using the a-sky tag.</p>
<pre><pre class="brush: xml; title: ; notranslate">&amp;amp;amp;lt;a-sky src=&quot;#bg&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-sky&amp;amp;amp;gt;</pre>
<p>There are also</p>
<h2>Spheres, Boxes, Cones and Other Shapes</h2>
<p>The logo shapes are slightly more complicated, but still very quick to set up. Each shape is treated as an element, with a range of configurable attributes. By using the &#8220;a-box&#8221; tag I can create square or rectangular shape and can control the appearance and behavior by adding various attributes, such as height and width. The &#8220;a-animation&#8221;, set within the &#8220;a-box&#8221; tag allows me to assign an animation to that particular element. The other three shapes are controlled in exactly the same way, but use the tags; a-sphere, a-cone and a-torus.</p>
<pre><pre class="brush: xml; title: ; notranslate">
&amp;amp;amp;lt;a-box color=&quot;#ffffff&quot; width=&quot;6&quot; height=&quot;4&quot; depth=&quot;4&quot; position=&quot;0 0 -5&quot; rotation=&quot;40 50 10&quot; scale=&quot;0.5 0.5 0.5&quot; src=&quot;#logo&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;a-animation attribute=&quot;rotation&quot; begin=&quot;hovered&quot; repeat=&quot;0&quot; to=&quot;270 360 360&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-animation&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-box&amp;amp;amp;gt;
</pre>
<p>You will notice that many of the attributes contain three attributes. Basically you can think of this as being one for each dimension. X-axis, Y-axis and Z-axis. Rather than thinking about it too much, I found that the best way to get most of the settings correct was to start with trial and error, especially when it comes to working out things like how the box should rotate or where each of the boxes should be positioned.<br />
One of the really fun things about A-Frame is that the 3D environment is available by default. As soon as you have a scene up and running you will be able to “walk” around it and turn your viewer in all directions, controlling your scene in the same way you control a first person computer game. The primitives mentioned above allow one to start building the environment immediately. A-Frame also offers an impressive set of demos and a very well organised documentation section to help you get up and running quickly.</p>
<h2>The Live Code</h2>
<p>This is the final html page as it sits on the site. It pulls the A-Frame JavaScript directly from the aframe.io server, and the only extra files required are the two images.</p>
<pre><pre class="brush: xml; title: ; notranslate">
&amp;amp;amp;lt;!DOCTYPE html&amp;amp;amp;gt;
&amp;amp;amp;lt;html&amp;amp;amp;gt;
&amp;amp;amp;lt;head&amp;amp;amp;gt;
&amp;amp;amp;lt;meta charset=&quot;utf-8&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;title&amp;amp;amp;gt;Bitmovin&amp;amp;amp;lt;/title&amp;amp;amp;gt;
&amp;amp;amp;lt;meta name=&quot;description&quot; content=&quot;Bitmovin 3D World Demo&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;script src=&quot;https://aframe.io/releases/0.2.0/aframe.min.js&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/script&amp;amp;amp;gt;
&amp;amp;amp;lt;/head&amp;amp;amp;gt;
&amp;amp;amp;lt;body&amp;amp;amp;gt;
&amp;amp;amp;lt;a-scene&amp;amp;amp;gt;
&amp;amp;amp;lt;a-assets&amp;amp;amp;gt;
&amp;amp;amp;lt;img id=&quot;logo&quot; src=&quot;logo.png&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;img id=&quot;bg&quot; src=&quot;image.jpg&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-assets&amp;amp;amp;gt;
&amp;amp;amp;lt;a-sky src=&quot;#bg&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-sky&amp;amp;amp;gt;
&amp;amp;amp;lt;a-box color=&quot;#ffffff&quot; width=&quot;6&quot; height=&quot;4&quot; depth=&quot;4&quot; position=&quot;0 0 -8&quot; rotation=&quot;40 50 10&quot; scale=&quot;0.5 0.5 0.5&quot; src=&quot;#logo&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;a-animation attribute=&quot;rotation&quot; begin=&quot;hovered&quot; repeat=&quot;0&quot; to=&quot;270 360 360&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-animation&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-box&amp;amp;amp;gt;
&amp;amp;amp;lt;a-sphere color=&quot;#ffffff&quot; width=&quot;6&quot; height=&quot;4&quot; depth=&quot;4&quot; position=&quot;5 0 2&quot; rotation=&quot;40 50 10&quot; scale=&quot;0.5 0.5 0.5&quot; src=&quot;#logo&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;a-animation attribute=&quot;rotation&quot; begin=&quot;hovered&quot; repeat=&quot;0&quot; to=&quot;270 360 360&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-animation&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-sphere&amp;amp;amp;gt;
&amp;amp;amp;lt;a-cone color=&quot;#ffffff&quot; width=&quot;6&quot; height=&quot;4&quot; depth=&quot;4&quot; position=&quot;-5 0 2&quot; rotation=&quot;40 50 10&quot; scale=&quot;0.5 0.5 0.5&quot; src=&quot;#logo&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;a-animation attribute=&quot;rotation&quot; begin=&quot;hovered&quot; repeat=&quot;0&quot; to=&quot;360 180 360&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-animation&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-cone&amp;amp;amp;gt;
&amp;amp;amp;lt;a-torus color=&quot;#ffffff&quot; width=&quot;6&quot; height=&quot;4&quot; depth=&quot;4&quot; position=&quot;0 0 6&quot; rotation=&quot;40 50 10&quot; scale=&quot;0.5 0.5 0.5&quot; src=&quot;#logo&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;a-animation attribute=&quot;rotation&quot; begin=&quot;hovered&quot; repeat=&quot;0&quot; to=&quot;360 180 360&quot;&amp;amp;amp;gt;&amp;amp;amp;lt;/a-animation&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-torus&amp;amp;amp;gt;
&amp;amp;amp;lt;a-camera position=&quot;0 0 0&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;a-cursor color=&quot;#ccc&quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-camera&amp;amp;amp;gt;
&amp;amp;amp;lt;/a-scene&amp;amp;amp;gt;
&amp;amp;amp;lt;/body&amp;amp;amp;gt;
&amp;amp;amp;lt;/html&amp;amp;amp;gt;
</pre>
<p>A good way to get an idea of what this framework is capable of is on the <a href="https://aframe.io/blog/" target="_blank" rel="noopener noreferrer nofollow">A-Frame blog</a>, where you can see their weekly progress as well as some of the best virtual reality websites that have been produced using A-Frame. We have also created a short list of our favorites A-frame VR examples and listed them below.</p>
<h2>5 of the Best VR Websites Built with A-Frame</h2>
<p><a href="https://almossawi.com/aframe-d3-visualization/demo/" target="_blank" rel="noopener noreferrer nofollow"><img loading="lazy" decoding="async" class="alignnone wp-image-9157 size-full" src="https://bitmovin.com/wp-content/uploads/2016/06/UK-3d-map.jpg" alt="A-frame example 1" width="600" height="350" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/UK-3d-map-300x175.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/UK-3d-map.jpg?size=384x224&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/UK-3d-map.jpg?lossy=2&amp;strip=1&amp;webp=1 600w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="https://almossawi.com/aframe-d3-visualization/demo/" target="_blank" rel="noopener noreferrer nofollow">Where is Piers Morgan disliked the most?</a></h3>
<p>This is a humorous 3D environment that shows a map of the UK, with a three dimensional graph displaying the number of &#8220;dislikes&#8221; for Piers Morgan (a British television personality) per city. Fly over the country to get a visual impression of this celebrities popularity levels.</p>
<hr />
<p><a href="https://www.360syria.com/" target="_blank" rel="noopener noreferrer nofollow"><img loading="lazy" decoding="async" class="alignnone wp-image-9158 size-full" src="https://bitmovin.com/wp-content/uploads/2016/06/syria.jpg" alt="A-frame example 2" width="600" height="350" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/syria-300x175.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/syria.jpg?size=384x224&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/syria.jpg?lossy=2&amp;strip=1&amp;webp=1 600w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="https://www.360syria.com/" target="_blank" rel="noopener noreferrer nofollow">360 Syria &#8211; Fear of the Sky</a></h3>
<p>This website, built for Amnesty International, uses A-Frame to present a confronting 360° view life as a Syrian, living in a city ravaged by war. The presentation and use of video in this example is very well done and creates a very powerful message. The video is delivered directly through standard HTML5 &lt;video&gt; tags in MP4 format.</p>
<hr />
<p><a href="https://www.washingtonpost.com/video/mars/public/" target="_blank" rel="noopener noreferrer nofollow"><img loading="lazy" decoding="async" class="alignnone wp-image-9160 size-full" src="https://bitmovin.com/wp-content/uploads/2016/06/mars.jpg" alt="A-frame example 4" width="600" height="350" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/mars-300x175.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/mars.jpg?size=384x224&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/mars.jpg?lossy=2&amp;strip=1&amp;webp=1 600w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="https://www.washingtonpost.com/video/mars/public/" target="_blank" rel="noopener noreferrer nofollow">Mars, an interactive journey</a></h3>
<p>This is a fairly simple 360° view of mars, including a model of the Curiosity Rover and a series of informational images with accompanying audio.</p>
<hr />
<p><a href="https://vrwikimuseum.com/wiki/Stegoceras" target="_blank" rel="noopener noreferrer nofollow"><img loading="lazy" decoding="async" class="wp-image-9161 size-full alignnone" src="https://bitmovin.com/wp-content/uploads/2016/06/wiki-museum.jpg" alt="A-frame example 5" width="600" height="350" srcset="https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/wiki-museum-300x175.jpg?lossy=2&amp;strip=1&amp;webp=1 300w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/wiki-museum.jpg?size=384x224&amp;lossy=2&amp;strip=1&amp;webp=1 384w, https://b3148424.smushcdn.com/3148424/wp-content/uploads/2016/06/wiki-museum.jpg?lossy=2&amp;strip=1&amp;webp=1 600w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="https://vrwikimuseum.com/wiki/Stegoceras" target="_blank" rel="noopener noreferrer nofollow">VR Wiki Museum</a></h3>
<p>This is a very interesting attempt to create a virtual museum version of Wikipedia. Walk through the halls of the Wiki Museum, see three dimensional statues, read information and look at photographs wall. Walking through doors takes you to new areas of the website.</p>
<h2>Bitmovin and the HTML5 VR Player</h2>
<p>Virtual Reality is a fast growing space. That is why Bitmovin is spending a lot of time to make sure that both our <a href="https://bitmovin.com/video-player-datasheet/">HTML5 Adaptive Streaming Player</a> and our <a href="https://bitmovin.com/video-encoding-data-sheet/">Cloud Encoding Service</a> are completely ready to handle 360° video streaming and video within VR environments. We are constantly working on solutions to deliver video everywhere, browser based VR included. Our experiments with A-Frame and other browser based virtual reality technologies are just beginning. Look out for our follow up articles on VR in the browser and the HTML5 VR Player.<br />
Get access to our 360° video enabled HTML5 Player or Encoding service with a <a href="https://bitmovin.com/dashboard/signup">free account today!</a></p>
<p>The post <a rel="nofollow" href="https://bitmovin.com/html5-vr-player-virtual-reality-technology">Build a Virtual Reality Website for HTML5 Browsers</a> appeared first on <a rel="nofollow" href="https://bitmovin.com">Bitmovin</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
