Bagikan melalui


HoloLens (generasi ke-1) dan Azure 306: Streaming video


Catatan

Tutorial Mixed Reality Academy dirancang dengan HoloLens (generasi ke-1) dan Mixed Reality Immersive Headsets dalam pikiran. Dengan demikian, kami merasa penting untuk meninggalkan tutorial ini di tempat bagi pengembang yang masih mencari panduan dalam mengembangkan untuk perangkat tersebut. Tutorial ini tidak akan diperbarui dengan toolset atau interaksi terbaru yang digunakan untuk HoloLens 2. Mereka akan dipertahankan untuk terus bekerja pada perangkat yang didukung. Akan ada serangkaian tutorial baru yang akan diposting di masa depan yang akan menunjukkan cara mengembangkan untuk HoloLens 2. Pemberitahuan ini akan diperbarui dengan tautan ke tutorial tersebut ketika diposting.


Cuplikan layar contoh Windows Mixed Reality V R.Cuplikan layar pengalaman Windows Mixed Reality V R.

Dalam kursus ini Anda akan mempelajari bagaimana menghubungkan Azure Media Services Anda ke pengalaman Windows Mixed Reality VR untuk memungkinkan streaming pemutaran video 360 derajat pada headset imersif.

Azure Media Services adalah kumpulan layanan yang memberi Anda layanan streaming video berkualitas siaran untuk menjangkau audiens yang lebih besar di perangkat seluler paling populer saat ini. Untuk informasi selengkapnya, kunjungi halaman Azure Media Services.

Setelah menyelesaikan kursus ini, Anda akan memiliki aplikasi headset imersif realitas campuran, yang akan dapat melakukan hal berikut:

  1. Ambil video 360 derajat dari Azure Storage, melalui Azure Media Service.

  2. Tampilkan video 360 derajat yang diambil dalam adegan Unity.

  3. Navigasikan antara dua adegan, dengan dua video yang berbeda.

Dalam aplikasi Anda, terserah Anda tentang bagaimana Anda akan mengintegrasikan hasilnya dengan desain Anda. Kursus ini dirancang untuk mengajari Anda cara mengintegrasikan Layanan Azure dengan Proyek Unity Anda. Ini adalah tugas Anda untuk menggunakan pengetahuan yang Anda peroleh dari kursus ini untuk meningkatkan aplikasi realitas campuran Anda.

Dukungan perangkat

Kursus HoloLens Headset imersif
MR dan Azure 306: Streaming video ✔️

Prasyarat

Catatan

Tutorial ini dirancang untuk pengembang yang memiliki pengalaman dasar dengan Unity dan C#. Perlu diketahui juga bahwa prasyarat dan instruksi tertulis dalam dokumen ini mewakili apa yang telah diuji dan diverifikasi pada saat penulisan (Mei 2018). Anda bebas menggunakan perangkat lunak terbaru, seperti yang tercantum dalam artikel instal alat, meskipun tidak boleh diasumsikan bahwa informasi dalam kursus ini akan sangat cocok dengan apa yang akan Anda temukan di perangkat lunak yang lebih baru daripada apa yang tercantum di bawah ini.

Kami merekomendasikan perangkat keras dan perangkat lunak berikut untuk kursus ini:

Sebelum memulai

  1. Untuk menghindari masalah saat membangun proyek ini, sangat disarankan agar Anda membuat proyek yang disebutkan dalam tutorial ini di folder root atau near-root (jalur folder panjang dapat menyebabkan masalah pada build-time).

  2. Siapkan dan uji Mixed Reality Immersive Headset Anda.

    Catatan

    Anda tidak akan memerlukan Pengontrol Gerakan untuk kursus ini. Jika Anda memerlukan dukungan untuk menyiapkan Immersive Headset, silakan klik tautan tentang cara menyiapkan Windows Mixed Reality.

Bab 1 - Portal Microsoft Azure: membuat Akun Azure Storage

Untuk menggunakan Azure Storage Service, Anda harus membuat dan mengonfigurasi Akun Penyimpanan di portal Azure.

  1. Masuk ke Portal Microsoft Azure.

    Catatan

    Jika Anda belum memiliki akun Azure, Anda harus membuatnya. Jika Anda mengikuti tutorial ini dalam situasi ruang kelas atau lab, mintalah instruktur atau salah satu proktor untuk membantu menyiapkan akun baru Anda.

  2. Setelah Anda masuk, klik Akun penyimpanan di menu sebelah kiri.

    Cuplikan layar menu Portal Microsoft Azure. Akun penyimpanan disorot.

  3. Pada tab Akun Penyimpanan, klik Tambahkan.

    Cuplikan layar kotak dialog akun penyimpanan. Tambahkan disorot.

  4. Di tab Buat akun penyimpanan:

    1. Sisipkan Nama untuk akun Anda, ketahuilah bidang ini hanya menerima angka, dan huruf kecil.

    2. Untuk Model penyebaran, pilih Resource manager.

    3. Untuk Jenis akun, pilih Penyimpanan (tujuan umum v1).

    4. Untuk Performa, pilih Standar.*

    5. Untuk Replikasi pilih Penyimpanan redundan lokal (LRS).

    6. Biarkan Transfer aman diperlukan sebagai Dinonaktifkan.

    7. Pilih Langganan.

    8. Pilih Grup sumber daya atau buat yang baru. Grup sumber daya menyediakan cara untuk memantau, mengontrol akses, menyediakan, dan mengelola penagihan untuk kumpulan aset Azure.

    9. Tentukan Lokasi untuk grup sumber daya Anda (jika Anda membuat Grup Sumber Daya baru). Lokasi idealnya akan berada di wilayah tempat aplikasi akan berjalan. Beberapa aset Azure hanya tersedia di wilayah tertentu.

  5. Anda perlu mengonfirmasi bahwa Anda telah memahami Syarat dan Ketentuan yang diterapkan pada Layanan ini.

    Cuplikan layar halaman buat akun penyimpanan.

  6. Setelah mengklik Buat, Anda harus menunggu layanan dibuat, ini mungkin memakan waktu satu menit.

  7. Pemberitahuan akan muncul di portal setelah instans Layanan dibuat.

    Cuplikan layar pemberitahuan penyebaran berhasil.

  8. Pada titik ini Anda tidak perlu mengikuti sumber daya, cukup pindah ke Bab berikutnya.

Bab 2 - Portal Microsoft Azure: membuat Media Service

Untuk menggunakan Azure Media Service, Anda harus mengonfigurasi instans layanan agar tersedia untuk aplikasi Anda (di mana pemegang akun harus menjadi Admin).

  1. Di Portal Microsoft Azure, klik Buat sumber daya di sudut kiri atas, dan cari Media Service, tekan Enter. Sumber daya yang Anda inginkan saat ini memiliki ikon merah muda; klik ini, untuk menampilkan halaman baru.

    Cuplikan layar Portal Microsoft Azure. Opsi Media Services disorot.

  2. Halaman baru akan memberikan deskripsi Media Service. Di kiri bawah perintah ini, klik tombol Buat , untuk membuat asosiasi dengan layanan ini.

    Cuplikan layar Portal Microsoft Azure. Tombol Buat disorot.

  3. Setelah Anda mengklik Buat panel akan muncul di mana Anda perlu memberikan beberapa detail tentang Media Service baru Anda:

    1. Masukkan Nama Akun yang Anda inginkan untuk instans layanan ini.

    2. Pilih Langganan.

    3. Pilih Grup Sumber Daya atau buat yang baru. Grup sumber daya menyediakan cara untuk memantau, mengontrol akses, menyediakan, dan mengelola penagihan untuk kumpulan aset Azure. Disarankan untuk menyimpan semua layanan Azure yang terkait dengan satu proyek (misalnya seperti lab ini) di bawah grup sumber daya umum).

    Jika Anda ingin membaca selengkapnya tentang Grup Sumber Daya Azure, ikuti tautan ini tentang cara mengelola Grup Sumber Daya Azure.

    1. Tentukan Lokasi untuk grup sumber daya Anda (jika Anda membuat Grup Sumber Daya baru). Lokasi idealnya akan berada di wilayah tempat aplikasi akan berjalan. Beberapa aset Azure hanya tersedia di wilayah tertentu.

    2. Untuk bagian Akun Penyimpanan, klik bagian Silakan pilih... , lalu klik Akun Penyimpanan yang Anda buat di Bab terakhir.

    3. Anda juga perlu mengonfirmasi bahwa Anda telah memahami Syarat dan Ketentuan yang diterapkan pada Layanan ini.

    4. Klik Buat.

      Cuplikan layar halaman Buat Akun Media Service.

  4. Setelah mengklik Buat, Anda harus menunggu layanan dibuat, ini mungkin memakan waktu satu menit.

  5. Pemberitahuan akan muncul di portal setelah instans Layanan dibuat.

    Cuplikan layar ikon pemberitahuan di menu portal.

  6. Klik pemberitahuan untuk menjelajahi instans Layanan baru Anda.

    Cuplikan layar pemberitahuan untuk penyebaran yang berhasil.

  7. Klik tombol Buka sumber daya di pemberitahuan untuk menjelajahi instans Layanan baru Anda.

  8. Dalam halaman layanan Media baru, di dalam panel di sebelah kiri, klik tautan Aset , yang sekitar setengah ke bawah.

  9. Pada halaman berikutnya, di sudut kiri atas halaman, klik Unggah.

    Cuplikan layar halaman Aset. Opsi Unggah dan Aset disorot.

  10. Klik ikon Folder untuk menelusuri file Anda dan pilih Video 360 pertama yang ingin Anda streaming.

    Anda dapat mengikuti tautan ini untuk mengunduh video sampel.

    Cuplikan layar halaman unggah aset video.

Peringatan

Nama file panjang dapat menyebabkan masalah dengan encoder: jadi untuk memastikan video tidak memiliki masalah, pertimbangkan untuk mempersingkat panjang nama file video Anda.

  1. Bilah kemajuan akan berubah menjadi hijau ketika video selesai diunggah.

    Cuplikan layar bilah kemajuan unggah aset video.

  2. Klik teks di atas (yourservicename - Aset) untuk kembali ke halaman Aset .

  3. Anda akan melihat bahwa video Anda telah berhasil diunggah. Klik di atasnya.

    Cuplikan layar halaman Aset. Video 1 titik M P 4 disorot.

  4. Halaman yang Anda alihkan akan menampilkan informasi terperinci tentang video Anda. Untuk dapat menggunakan video, Anda perlu mengodekannya, dengan mengklik tombol Enkode di kiri atas halaman.

    Cuplikan layar halaman aset. Tombol enkode disorot.

  5. Panel baru akan muncul di sebelah kanan, di mana Anda akan dapat mengatur opsi pengodean untuk file Anda. Atur properti berikut (beberapa akan sudah diatur secara default):

    1. Nama penyandi media Media Encoder Standard

    2. Pengodean prasetel Konten Adaptif Beberapa Laju Bit MP4

    3. Pemrosesan Media Encoder Standard nama pekerjaan Video1.mp4

    4. Nama aset media output Video1.mp4 -- Media Encoder Standard yang dikodekan

      Cuplikan layar halaman enkode aset.

  6. Klik tombol Buat.

  7. Anda akan melihat bilah dengan pekerjaan Pengodean ditambahkan, klik bilah itu dan panel akan muncul dengan kemajuan Pengodean yang ditampilkan di dalamnya.

    Cuplikan layar bilah pemberitahuan berlabel pekerjaan pengodean ditambahkan.

    Cuplikan layar halaman pemrosesan encoder.

  8. Tunggu hingga Pekerjaan selesai. Setelah selesai, jangan ragu untuk menutup panel dengan 'X' di kanan atas panel tersebut.

    Cuplikan layar bilah kemajuan dengan status selesai.

    Cuplikan layar menu atas halaman pemrosesan coder media.

    Penting

    Waktu yang diperlukan, tergantung pada ukuran file video Anda. Proses ini dapat memakan waktu cukup lama.

  9. Sekarang setelah versi video yang dikodekan telah dibuat, Anda dapat menerbitkannya untuk membuatnya dapat diakses. Untuk melakukannya, klik tautan biru Aset untuk kembali ke halaman aset.

    Cuplikan layar Portal Microsoft Azure. Tautan aset disorot.

  10. Anda akan melihat video Anda bersama dengan yang lain, yang merupakan Jenis Aset Multi-Laju Bit MP4.

    Cuplikan layar menu aset Microsoft Azure.

    Catatan

    Anda mungkin melihat bahwa aset baru, bersama video awal Anda, Tidak Diketahui, dan memiliki '0' byte untuk Ukurannya, cukup refresh jendela Anda untuk diperbarui.

  11. Klik aset baru ini.

    Cuplikan layar aset daftar direktori.

  12. Anda akan melihat panel serupa dengan yang Anda gunakan sebelumnya, hanya ini adalah aset yang berbeda. Klik tombol Terbitkan yang terletak di tengah atas halaman.

    Cuplikan layar bilah menu atas. Tombol Terbitkan disorot.

  13. Anda akan diminta untuk mengatur Pencari Lokasi, yang merupakan titik masuk, ke file di Aset Anda. Untuk skenario Anda, atur properti berikut:

    1. Jenis pencari>lokasi Progresif.

    2. Tanggal dan waktu akan ditetapkan untuk Anda, dari tanggal Anda saat ini, hingga waktu di masa mendatang (seratus tahun dalam kasus ini). Biarkan apa adanya atau ubah sesuai keinginan.

    Catatan

    Untuk informasi selengkapnya tentang Pencari Lokasi, dan apa yang bisa Anda pilih, kunjungi Dokumentasi Azure Media Services.

  14. Di bagian bawah panel tersebut, klik tombol Tambahkan .

    Cuplikan layar memperlihatkan daftar direktori dengan aset untuk menerbitkan dialog.

  15. Video Anda sekarang diterbitkan dan dapat di-streaming dengan menggunakan titik akhirnya. Lebih jauh ke bawah halaman adalah bagian File . Di sinilah berbagai versi video Anda yang dikodekan. Pilih resolusi setinggi mungkin satu (pada gambar di bawahnya adalah file 1920x960), lalu panel di sebelah kanan akan muncul. Di sana Anda akan menemukan URL Unduhan. Salin Titik Akhir ini karena Anda akan menggunakannya nanti dalam kode Anda.

    Cuplikan layar bagian Microsoft Azure Files.

    Cuplikan layar halaman informasi aset.

    Catatan

    Anda juga dapat menekan tombol Putar untuk memutar video dan mengujinya.

  16. Anda sekarang perlu mengunggah video kedua yang akan Anda gunakan di Lab ini. Ikuti langkah-langkah di atas, ulangi proses yang sama untuk video kedua. Pastikan Anda menyalin Titik Akhir kedua juga. Gunakan tautan berikut untuk mengunduh video kedua.

  17. Setelah kedua video dipublikasikan, Anda siap untuk pindah ke Bab berikutnya.

Bab 3 - Menyiapkan Proyek Unity

Berikut ini adalah pengaturan khas untuk mengembangkan dengan Mixed Reality, dan dengan demikian, adalah templat yang baik untuk proyek lain.

  1. Buka Unity dan klik Baru.

    Cuplikan layar tab proyek Unity. Tombol Baru disorot.

  2. Anda sekarang perlu memberikan nama Proyek Unity, menyisipkan MR_360VideoStreaming.. Pastikan jenis proyek diatur ke 3D. Atur Lokasi ke tempat yang sesuai untuk Anda (ingat, lebih dekat ke direktori akar lebih baik). Lalu, klik Buat proyek.

    Cuplikan layar halaman proyek baru Unity.

  3. Dengan Unity terbuka, ada baiknya memeriksa Editor Skrip default diatur ke Visual Studio. Buka EditPreferensi lalu dari jendela baru, navigasikan ke Alat Eksternal. Ubah Editor Skrip Eksternal ke Visual Studio 2017. Tutup jendela Preferensi .

    Cuplikan layar menu editor skrip eksternal. Visual Studio 2017 dipilih.

  4. Selanjutnya, buka Pengaturan Build Filedan alihkan platform ke Platform Windows Universal, dengan mengklik tombol Beralih Platform.

  5. Pastikan juga bahwa:

    1. Perangkat Target diatur ke Perangkat Apa Pun.

    2. Jenis Build diatur ke D3D.

    3. SDK diatur ke Terbaru diinstal.

    4. Versi Visual Studio diatur ke Terbaru yang terinstal.

    5. Build and Run diatur ke Komputer Lokal.

    6. Jangan khawatir tentang menyiapkan Adegan sekarang, karena Anda akan menyiapkannya nanti.

    7. Pengaturan yang tersisa harus dibiarkan sebagai default untuk saat ini.

      Cuplikan layar pengaturan build Unity.

  6. Di jendela Pengaturan Build, klik tombol Pengaturan Pemutar, ini akan membuka panel terkait di ruang tempat Pemeriksa berada.

  7. Di panel ini, beberapa pengaturan perlu diverifikasi:

    1. Di tab Pengaturan Lainnya:

      1. Versi Runtime Pembuatan Skrip harus Stabil (Setara.NET 3.5).

      2. Backend Scripting harus .NET.

      3. Tingkat Kompatibilitas API harus .NET 4.6.

        Cuplikan layar memperlihatkan halaman Pengaturan untuk Platform Windows Universal.

    2. Selanjutnya di bawah panel, di Pengaturan XR (ditemukan di bawah Pengaturan Penerbitan), centang Realitas Virtual yang Didukung, pastikan Windows Mixed Reality SDK ditambahkan.

      Cuplikan layar pengaturan Unity X R.

    3. Dalam tab Pengaturan Penerbitan, di bawah Kemampuan, periksa:

      • InternetClient

        Cuplikan layar Kemampuan. Klien Internet diperiksa.

  8. Setelah Anda membuat perubahan tersebut, tutup jendela Pengaturan Build.

  9. Simpan Proyek Simpan FileProyek Anda.

Bab 4 - Mengimpor paket InsideOutSphere Unity

Penting

Jika Anda ingin melewati komponen Unity Siapkan kursus ini, dan lanjutkan langsung ke kode, jangan ragu untuk mengunduh .unitypackage ini, impor ke proyek Anda sebagai Paket Kustom, dan kemudian lanjutkan dari Bab 5. Anda masih perlu membuat Proyek Unity.

Untuk kursus ini, Anda harus mengunduh Paket Aset Unity yang disebut InsideOutSphere.unitypackage.

Cara mengimpor unitypackage:

  1. Dengan dasbor Unity di depan Anda, klik Aset di menu di bagian atas layar, lalu klik Impor Paket Kustom Paket > Kustom.

    Cuplikan layar menu aset. Menu paket impor terbuka. Paket Kustom dipilih.

  2. Gunakan pemilih file untuk memilih paket InsideOutSphere.unitypackage dan klik Buka. Daftar komponen untuk aset ini akan ditampilkan kepada Anda. Konfirmasi impor dengan mengklik Impor.

    Cuplikan layar Impor Paket Unity.

  3. Setelah selesai mengimpor, Anda akan melihat tiga folder baru, Materi, Model, dan Prefabs, telah ditambahkan ke folder Aset Anda. Struktur folder semacam ini khas untuk proyek Unity.

    Cuplikan layar folder aset.

    1. Buka folder Model, dan Anda akan melihat bahwa model InsideOutSphere telah diimpor.

    2. Dalam folder Materials Anda akan menemukan bahan InsideOutSpheres lambert1, bersama dengan materi yang disebut ButtonMaterial, yang digunakan oleh GazeButton, yang akan Anda lihat segera.

    3. Folder Prefabs berisi prefab InsideOutSphere yang berisi model InsideOutSphere dan GazeButton.

    4. Tidak ada kode yang disertakan, Anda akan menulis kode dengan mengikuti kursus ini.

  4. Dalam Hierarki, pilih objek Kamera Utama, dan perbarui komponen berikut:

    1. Mengubah

      1. Posisi = X: 0, Y: 0, Z: 0.

      2. Rotasi = X: 0, Y: 0, Z: 0.

      3. Skala X: 1, Y: 1, Z: 1.

    2. Kamera

      1. Bendera Bersih: Warna Solid.

      2. Clipping Planes: Dekat: 0.1, Jauh: 6.

        Cuplikan layar Pemeriksa.

  5. Navigasi ke folder Prefab, lalu seret prefab InsideOutSphere ke panel Hierarki.

    Cuplikan layar menu folder Prefab dan lingkungan pengembang.

  6. Perluas objek InsideOutSphere di dalam Hierarki dengan mengklik panah kecil di sampingnya. Anda akan melihat objek anak di bawahnya yang disebut GazeButton. Ini akan digunakan untuk mengubah adegan dan dengan demikian video.

    Cuplikan layar tab hierarki.

  7. Di Jendela Pemeriksa klik komponen Transformasi InsideOutSphere, pastikan bahwa properti berikut diatur:

Transformasi - Posisi

X Y Z
0 0 0

Transformasi - Rotasi

X Y Z
0 50- 0

Transformasi - Skala

X Y Z
0 0 0

Cuplikan layar Pemeriksa terbuka untuk Inside Out Sphere.

  1. Klik objek anak GazeButton, dan atur Transformasinya sebagai berikut:

Transformasi - Posisi

X Y Z
3.6 1.3 0

Transformasi - Rotasi

X Y Z
0 0 0

Transformasi - Skala

X Y Z
1 1 1

Cuplikan layar tab adegan terbuka.

Bab 5 - Buat kelas VideoController

Kelas VideoController menghosting dua titik akhir video yang akan digunakan untuk melakukan streaming konten dari Azure Media Service.

Untuk membuat kelas ini:

  1. Klik kanan di Folder Aset, yang terletak di Panel Proyek , dan klik Buat > Folder. Beri nama folder Skrip.

    Cuplikan layar menu folder aset. Menu buat terbuka dan folder dipilih.

    Cuplikan layar tab proyek. Folder Aset dipilih.

  2. Klik dua kali pada folder Skrip untuk membukanya.

  3. Klik kanan di dalam folder, lalu klik Buat > Skrip C#. Beri nama skrip VideoController.

    Cuplikan layar file bernama Video Controller.

  4. Klik dua kali pada skrip VideoController baru untuk membukanya dengan Visual Studio 2017.

    Cuplikan layar kode untuk file Video Controller.

  5. Perbarui namespace layanan di bagian atas file kode sebagai berikut:

    using System.Collections;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.Video;
    
  6. Masukkan variabel berikut di kelas VideoController, bersama dengan metode Awake():

        /// <summary> 
        /// Provides Singleton-like behaviour to this class. 
        /// </summary> 
        public static VideoController instance; 
    
        /// <summary> 
        /// Reference to the Camera VideoPlayer Component.
        /// </summary> 
        private VideoPlayer videoPlayer; 
    
        /// <summary>
        /// Reference to the Camera AudioSource Component.
        /// </summary> 
        private AudioSource audioSource; 
    
        /// <summary> 
        /// Reference to the texture used to project the video streaming 
        /// </summary> 
        private RenderTexture videoStreamRenderTexture;
    
        /// <summary>
        /// Insert here the first video endpoint
        /// </summary>
        private string video1endpoint = "-- Insert video 1 Endpoint here --";
    
        /// <summary>
        /// Insert here the second video endpoint
        /// </summary>
        private string video2endpoint = "-- Insert video 2 Endpoint here --";
    
        /// <summary> 
        /// Reference to the Inside-Out Sphere. 
        /// </summary> 
        public GameObject sphere;
    
        void Awake()
        {
            instance = this;
        }
    
  7. Sekarang saatnya untuk memasukkan titik akhir dari video Azure Media Service Anda:

    1. Yang pertama ke dalam variabel video1endpoint .

    2. Yang kedua ke dalam variabel video2endpoint .

    Peringatan

    Ada masalah yang diketahui dengan menggunakan https dalam Unity, dengan versi 2017.4.1f1. Jika video memberikan kesalahan saat diputar, coba gunakan 'http' sebagai gantinya.

  8. Selanjutnya, metode Start() perlu diedit. Metode ini akan dipicu setiap kali pengguna beralih adegan (akibatnya mengalihkan video) dengan melihat Tombol Tatapan.

        // Use this for initialization
        void Start()
        {
            Application.runInBackground = true;
            StartCoroutine(PlayVideo());
        }
    
  9. Mengikuti metode Start(), masukkan metode IEnumerator PlayVideo(), yang akan digunakan untuk memulai video dengan mulus (sehingga tidak ada gagap yang terlihat).

        private IEnumerator PlayVideo()
        {
            // create a new render texture to display the video 
            videoStreamRenderTexture = new RenderTexture(2160, 1440, 32, RenderTextureFormat.ARGB32);
    
            videoStreamRenderTexture.Create();
    
            // assign the render texture to the object material 
            Material sphereMaterial = sphere.GetComponent<Renderer>().sharedMaterial;
    
            //create a VideoPlayer component 
            videoPlayer = gameObject.AddComponent<VideoPlayer>();
    
            // Set the video to loop. 
            videoPlayer.isLooping = true;
    
            // Set the VideoPlayer component to play the video from the texture 
            videoPlayer.renderMode = VideoRenderMode.RenderTexture;
    
            videoPlayer.targetTexture = videoStreamRenderTexture;
    
            // Add AudioSource 
            audioSource = gameObject.AddComponent<AudioSource>();
    
            // Pause Audio play on Awake 
            audioSource.playOnAwake = true;
            audioSource.Pause();
    
            // Set Audio Output to AudioSource 
            videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
            videoPlayer.source = VideoSource.Url;
    
            // Assign the Audio from Video to AudioSource to be played 
            videoPlayer.EnableAudioTrack(0, true);
            videoPlayer.SetTargetAudioSource(0, audioSource);
    
            // Assign the video Url depending on the current scene 
            switch (SceneManager.GetActiveScene().name)
            {
                case "VideoScene1":
                    videoPlayer.url = video1endpoint;
                    break;
    
                case "VideoScene2":
                    videoPlayer.url = video2endpoint;
                    break;
    
                default:
                    break;
            }
    
            //Set video To Play then prepare Audio to prevent Buffering 
            videoPlayer.Prepare();
    
            while (!videoPlayer.isPrepared)
            {
                yield return null;
            }
    
            sphereMaterial.mainTexture = videoStreamRenderTexture;
    
            //Play Video 
            videoPlayer.Play();
    
            //Play Sound 
            audioSource.Play();
    
            while (videoPlayer.isPlaying)
            {
                yield return null;
            }
        }
    
  10. Metode terakhir yang Anda butuhkan untuk kelas ini adalah metode ChangeScene(), yang akan digunakan untuk bertukar antar adegan.

        public void ChangeScene()
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().name == "VideoScene1" ? "VideoScene2" : "VideoScene1");
        }
    

    Tip

    Metode ChangeScene() menggunakan fitur C# yang berguna yang disebut Operator Kondisional. Ini memungkinkan kondisi untuk diperiksa, dan kemudian nilai yang dikembalikan berdasarkan hasil pemeriksaan, semuanya dalam satu pernyataan. Ikuti tautan ini untuk mempelajari selengkapnya tentang Operator Bersyarah.

  11. Simpan perubahan Anda di Visual Studio sebelum kembali ke Unity.

  12. Kembali ke Editor Unity, klik dan seret kelas VideoController [dari]{.underline} folder Skrip ke objek Kamera Utama di Panel Hierarki .

  13. Klik Kamera Utama dan lihat Panel Inspektur. Anda akan melihat bahwa dalam komponen Skrip yang baru ditambahkan, ada bidang dengan nilai kosong. Ini adalah bidang referensi, yang menargetkan variabel publik dalam kode Anda.

  14. Seret objek InsideOutSphere dari Panel Hierarki ke slot Sphere, seperti yang ditunjukkan pada gambar di bawah ini.

    Cuplikan layar menu hierarki. Kamera Utama dipilih.Cuplikan layar slot Sphere.

Bab 6 - Buat kelas Tatap

Kelas ini bertanggung jawab untuk membuat Raycast yang akan diproyeksikan ke depan dari Kamera Utama, untuk mendeteksi objek mana yang dilihat pengguna. Dalam hal ini, Raycast perlu mengidentifikasi apakah pengguna melihat objek GazeButton di adegan dan memicu perilaku.

Untuk membuat Kelas ini:

  1. Buka folder Skrip yang Anda buat sebelumnya.

  2. Klik kanan di Panel Proyek , BuatSkrip C#. Beri nama tataian skrip.

  3. Klik dua kali pada skrip Tatap baru untuk membukanya dengan Visual Studio 2017.

  4. Pastikan namespace berikut berada di bagian atas skrip, dan hapus yang lain:

    using UnityEngine;
    
  5. Kemudian tambahkan variabel berikut di dalam kelas Tatap:

        /// <summary> 
        /// Provides Singleton-like behaviour to this class. 
        /// </summary> 
        public static Gaze instance;
    
        /// <summary> 
        /// Provides a reference to the object the user is currently looking at. 
        /// </summary> 
        public GameObject FocusedGameObject { get; private set; }
    
        /// <summary> 
        /// Provides a reference to compare whether the user is still looking at 
        /// the same object (and has not looked away). 
        /// </summary> 
        private GameObject oldFocusedObject = null;
    
        /// <summary> 
        /// Max Ray Distance 
        /// </summary> 
        float gazeMaxDistance = 300;
    
        /// <summary> 
        /// Provides whether an object has been successfully hit by the raycast. 
        /// </summary> 
        public bool Hit { get; private set; }
    
  6. Kode untuk metode Awake() dan Start() sekarang perlu ditambahkan.

        private void Awake()
        {
            // Set this class to behave similar to singleton 
            instance = this;
        }
    
        void Start()
        {
            FocusedGameObject = null;
        }
    
  7. Tambahkan kode berikut dalam metode Update() untuk memproyeksikan Raycast dan mendeteksi hit target:

        void Update()
        {
            // Set the old focused gameobject. 
            oldFocusedObject = FocusedGameObject;
            RaycastHit hitInfo;
    
            // Initialise Raycasting. 
            Hit = Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitInfo, gazeMaxDistance);
    
            // Check whether raycast has hit. 
            if (Hit == true)
            {
                // Check whether the hit has a collider. 
                if (hitInfo.collider != null)
                {
                    // Set the focused object with what the user just looked at. 
                    FocusedGameObject = hitInfo.collider.gameObject;
                }
                else
                {
                    // Object looked on is not valid, set focused gameobject to null. 
                    FocusedGameObject = null;
                }
            }
            else
            {
                // No object looked upon, set focused gameobject to null.
                FocusedGameObject = null;
            }
    
            // Check whether the previous focused object is this same 
            // object (so to stop spamming of function). 
            if (FocusedGameObject != oldFocusedObject)
            {
                // Compare whether the new Focused Object has the desired tag we set previously. 
                if (FocusedGameObject.CompareTag("GazeButton"))
                {
                    FocusedGameObject.SetActive(false);
                    VideoController.instance.ChangeScene();
                }
            }
        }
    
  8. Simpan perubahan Anda di Visual Studio sebelum kembali ke Unity.

  9. Klik dan seret kelas Tatap dari folder Skrip ke objek Kamera Utama di Panel Hierarki .

Bab 7 - Menyiapkan dua Adegan Unity

Tujuan dari Bab ini adalah untuk mengatur dua adegan, masing-masing menghosting video untuk di-streaming. Anda akan menduplikasi adegan yang telah Anda buat, sehingga Anda tidak perlu mengaturnya lagi, meskipun Anda kemudian akan mengedit adegan baru, sehingga objek GazeButton berada di lokasi yang berbeda dan memiliki penampilan yang berbeda. Ini untuk menunjukkan cara mengubah antar adegan.

  1. Lakukan ini dengan masuk ke File > Simpan Adegan sebagai.... Jendela penyimpanan akan muncul. Klik tombol Folder baru.

    Bab 7 - Menyiapkan dua Adegan Unity

  2. Beri nama folder Adegan.

  3. Jendela Simpan Adegan masih akan terbuka. Buka folder Adegan yang baru dibuat.

  4. Di bidang Nama file: teks, ketik VideoScene1, lalu tekan Simpan.

  5. Kembali ke Unity, buka folder Adegan Anda, dan klik kiri file VideoScene1 Anda. Gunakan keyboard Anda, dan tekan Ctrl + D Anda akan menduplikasi adegan tersebut

    Tip

    Perintah Duplikat juga dapat dilakukan dengan menavigasi ke Edit > Duplikat.

  6. Unity akan secara otomatis menambahkan nomor nama adegan, tetapi tetap periksa, untuk memastikannya cocok dengan kode yang disisipkan sebelumnya.

    Anda harus memiliki VideoScene1 dan VideoScene2.

  7. Dengan dua adegan Anda, buka Pengaturan Build File>. Dengan jendela Pengaturan Build terbuka, seret adegan Anda ke bagian Adegan di Build .

    Cuplikan layar jendela Pengaturan Build.

    Tip

    Anda dapat memilih kedua adegan dari folder Adegan Anda melalui penahanan tombol Ctrl, lalu mengklik kiri setiap adegan, dan akhirnya menyeret keduanya ke seberang.

  8. Tutup jendela Pengaturan Build, dan klik dua kali pada VideoScene2.

  9. Dengan adegan kedua terbuka, klik objek anak GazeButton dari InsideOutSphere, dan atur Transformasinya sebagai berikut:

Transformasi - Posisi

X Y Z
0 1.3 3.6

Transformasi - Rotasi

X Y Z
0 0 0

Transformasi - Skala

X Y Z
1 1 1
  1. Dengan anak GazeButton masih dipilih, lihat Inspektur dan di Filter Mesh. Klik target kecil di samping bidang referensi Mesh :

    Cuplikan layar inspektur untuk Tombol Tatap.

  2. Jendela popup Pilih Jala akan muncul. Klik dua kali jala Kubus dari daftar Aset.

    Cuplikan layar jendela popup Pilih Jala.

  3. Filter Mesh akan diperbarui, dan sekarang menjadi Kubus. Sekarang, klik ikon Roda Gigi di samping Sphere Collider dan klik Hapus Komponen, untuk menghapus collider dari objek ini.

    Cuplikan layar menu Sphere Collider. Hapus komponen dipilih.

  4. Dengan GazeButton masih dipilih, klik tombol Tambahkan Komponen di bagian bawah Pemeriksa. Di bidang pencarian, kotak jenis, dan Box Collider akan menjadi opsi -- klik itu, untuk menambahkan Box Collider ke objek GazeButton Anda.

    Cuplikan layar kotak pencarian Tambahkan Komponen.

  5. GazeButton sekarang sebagian diperbarui, untuk terlihat berbeda, namun, Anda sekarang akan membuat Bahan baru, sehingga terlihat benar-benar berbeda, dan lebih mudah dikenali sebagai objek yang berbeda, daripada objek di adegan pertama.

  6. Navigasikan ke folder Materi Anda, di dalam Panel Proyek. Duplikat Materi ButtonMaterial (tekan Ctrl + D pada keyboard, atau klik kiri Materi, lalu dari opsi menu Edit file, pilih Duplikat).

    Cuplikan layar folder Materi di tab proyek.Cuplikan layar menu edit dengan duplikat dipilih.

  7. Pilih Materi ButtonMaterial baru (di sini bernama ButtonMaterial 1), dan di dalam Pemeriksa, klik jendela warna Albedo. Popup akan muncul, di mana Anda dapat memilih warna lain (pilih mana pun yang Anda suka), lalu tutup popup. Materi akan menjadi instansnya sendiri, dan berbeda dengan aslinya.

    Cuplikan layar popup pemilihan warna.

  8. Seret Materi baru ke anak GazeButton, untuk memperbarui tampilannya sepenuhnya, sehingga mudah dibedakan dari tombol adegan pertama.

    Cuplikan layar tab adegan editor proyek.

  9. Pada titik ini Anda dapat menguji proyek di Editor sebelum membangun proyek UWP.

    • Tekan tombol Putar di Editor dan kenakan headset Anda.

      Cuplikan layar memperlihatkan tombol putar, jeda, dan lewati. Tombol putar disorot.

  10. Lihatlah dua objek GazeButton untuk beralih antara video pertama dan kedua.

Bab 8 - Bangun Solusi UWP

Setelah Anda memastikan bahwa editor tidak memiliki kesalahan, Anda siap untuk Membangun.

Untuk Membangun:

  1. Simpan adegan saat ini dengan mengklik Simpan File>.

  2. Centang kotak yang disebut Unity C# Projects (ini penting karena akan memungkinkan Anda mengedit kelas setelah build selesai).

  3. Buka Pengaturan Build File>, klik Build.

  4. Anda akan diminta untuk memilih folder tempat Anda ingin membangun Solusi.

  5. Buat folder BUILDS dan di dalam folder tersebut buat folder lain dengan nama pilihan Anda yang sesuai.

  6. Klik folder baru Anda lalu klik Pilih Folder, jadi untuk memilih folder tersebut, untuk memulai build di lokasi tersebut.

    Cuplikan layar folder BUILDS disorot.Cuplikan layar folder Build Streaming Video disorot.

  7. Setelah Unity selesai membangun (mungkin perlu waktu), Unity akan membuka jendela File Explorer di lokasi build Anda.

Bab 9 - Sebarkan di Komputer Lokal

Setelah build selesai, jendela File Explorer akan muncul di lokasi build Anda. Buka Folder yang Anda beri nama dan buat, lalu klik dua kali pada file solusi (.sln) dalam folder tersebut, untuk membuka solusi Anda dengan Visual Studio 2017.

Satu-satunya hal yang tersisa untuk dilakukan adalah menyebarkan aplikasi Anda ke komputer Anda (atau Komputer Lokal).

Untuk menyebarkan ke Komputer Lokal:

  1. Di Visual Studio 2017, buka file solusi yang baru saja dibuat.

  2. Di Platform Solusi, pilih x86, Komputer Lokal.

  3. Di Konfigurasi Solusi pilih Debug.

    Cuplikan layar menu Konfigurasi Solusi.

  4. Anda sekarang perlu memulihkan paket apa pun ke solusi Anda. Klik kanan pada Solusi Anda, dan klik Pulihkan Paket NuGet untuk Solusi...

    Catatan

    Ini dilakukan karena paket yang dibangun Unity perlu ditargetkan untuk bekerja dengan referensi komputer lokal Anda.

  5. Buka menu Build dan klik Sebarkan Solusi untuk memuat samping aplikasi ke komputer Anda. Visual Studio akan terlebih dahulu membangun lalu menyebarkan aplikasi Anda.

  6. Aplikasi Anda sekarang akan muncul dalam daftar aplikasi yang diinstal, siap untuk diluncurkan.

    Cuplikan layar daftar aplikasi yang diinstal.

Saat menjalankan aplikasi Mixed Reality, Anda akan berada dalam model InsideOutSphere yang Anda gunakan dalam aplikasi Anda. Bola ini akan menjadi tempat video akan dialirkan, memberikan tampilan 360 derajat, dari video masuk (yang difilmkan untuk perspektif semacam ini). Jangan terkejut jika video membutuhkan waktu beberapa detik untuk dimuat, aplikasi Anda tunduk pada kecepatan Internet yang tersedia, karena video perlu diambil dan kemudian diunduh, jadi untuk melakukan streaming ke aplikasi Anda. Ketika Anda siap, ubah adegan dan buka video kedua Anda, dengan menatap bola merah! Kemudian jangan ragu untuk kembali, menggunakan kubus biru di adegan kedua!

Aplikasi Azure Media Service Anda yang sudah selesai

Selamat, Anda membuat aplikasi realitas campuran yang memanfaatkan Azure Media Service untuk melakukan streaming video 360.

Cuplikan layar contoh aplikasi realitas campuran.

Cuplikan layar contoh aplikasi realitas campuran.

Latihan Bonus

Latihan 1

Sangat mungkin untuk hanya menggunakan satu adegan untuk mengubah video dalam tutorial ini. Bereksperimen dengan aplikasi Anda dan membuatnya menjadi satu adegan! Mungkin bahkan menambahkan video lain ke dalam campuran.

Latihan 2

Bereksperimenlah dengan Azure dan Unity, dan coba terapkan kemampuan aplikasi untuk secara otomatis memilih video dengan ukuran file yang berbeda, tergantung pada kekuatan koneksi Internet.