TEKNO.pemkab.com – Pinterest: Tingkatkan video Android dengan langkah-langkah sederhana ini
Pinterest adalah platform media sosial yang memungkinkan pengguna untuk menemukan, menyimpan, dan berbagi ide-ide dan inspirasi dari seluruh dunia. Di Pinterest, Anda dapat membuat sebuah tabungan visual untuk mendukung proyek-proyek Anda, melihat apa yang lain sedang pin dan menemukan ide-ide baru. Dengan Pinterest, Anda dapat membuat video Anda lebih menarik dan meningkatkan engagement pengikut Anda. Dengan begitu banyak cara untuk memaksimalkan potensi video di Pinterest, mari kita mulai dengan mengenal lebih dalam mengenai langkah-langkah sederhana yang dapat Anda lakukan untuk meningkatkan video Android Anda.
Menurut posting blog baru-baru ini oleh para insinyur perusahaan, raksasa media sosial Pinterest telah meningkatkan kinerja video Android dengan mengoptimalkan pemanasan, konfigurasi, dan integrasi pemutar dalam beberapa langkah sederhana.
Insinyur situs menggambarkan pekerjaan mereka sebagai penyelidikan “tanpa akhir” ke dalam cara kerja ExoPlayer, pemutar media tingkat aplikasi pilihan mereka untuk Android.
Meskipun postingan blog ini disesuaikan untuk Android—ditulis oleh mantan Insinyur Video Android Pinterest Gary Skold, Insinyur Kinerja Android Lin Wang, dan Insinyur Kinerja Android Sheng Liu—ini menunjukkan konsep dasar yang dapat diterapkan dalam konteks lain.
Mari lihat:
Bermain dengan tangan yang hangat
Kuncinya di sini adalah jaringan. Alih-alih menunggu URL video dikembalikan dari server, mereka membuat koneksi jaringan selama waktu pengaktifan aplikasi melalui permintaan HTTP HEAD dummy. Sambungan yang sama akan digunakan untuk memutar video mendatang.
Strategi yang sama berlaku untuk rendering UI.
Strategi serupa yang telah ditetapkan sebelumnya digunakan untuk rendering UI. Default ExoPlayer adalah mengurai URL video sebagai berikut:
- Hitung rasio aspek
- untuk memanggil onContentAspectRarioChanged()
- memberitahukan AspectRatioFrameLayout Rasio aspek
Karena sebagian besar rasio aspek telah disetel, fungsi berikut dapat mencegah hal tersebut terjadi:
- Sesuaikan rasio aspek melalui AspectRatioFrameLayout.setAspectRatio()
- mengabaikan PlayerView.onContentAspectRatioChanged() metode dengan badan kosong (ini mencegah pemain mencoba menghitung ulang rasio aspek).
konfigurasis
Penyangga jangka pendek
Menunda buffer pemutaran hingga data buffer yang cukup disimpan. Karena sebagian besar video Pinterest berdurasi pendek, para teknisi memilih durasi penyanggaan yang lebih singkat. Hasilnya adalah lebih sedikit waktu untuk menunggu dan lebih cepat untuk memuat. setBufferDurationMs() Fungsi ExoPlayer adalah untuk mengatur durasi buffer. Laju buffer ulang meningkat tetapi UX video secara keseluruhan meningkat.
Batasi ukuran dan volume
Dua parameter berikut memuat video ke umpan dan membatasi ukurannya ke ukuran viewport yang benar. Tindakan ini akan menghapus semua ukuran video 1080p di area pandang 360p.
Kumpulan parameter ini menonaktifkan rendering audio, memungkinkan Pinterest memutar beberapa video senyap sekaligus. Ini menghemat bandwidth jaringan dari pengunduhan dan konsumsi memori dari pemrosesan.
Membersihkan cache yang kotor
ExoPlayer menyediakan antarmuka caching yang menyimpan file media yang diunduh di disk. Yang penting adalah ketika Pinterest menemukan kesalahan fatal yang disebabkan oleh bug backend, konten yang buruk juga tertahan di cache dan menyebabkan kesalahan lama setelah bug diperbaiki.
Solusinya adalah dengan menggunakan SimpleCache.removeResource() Untuk menghapus cache kotor saat kesalahan fatal IO berikut dikembalikan darinya Player.Listener.onPlayerError():
- ERROR_CODE_IO_UNSPECIFIED 2000
- ERROR_CODE_IO_INVALID_HTTP_CONTENT_TYPE 2003
- ERROR_CODE_IO_BAD_HTTP_STATUS 2004
- ERROR_CODE_IO_FILE_NOT_FOUND 2005
- ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE 2008
Gabungkan pemain
Pinterest membuat cache untuk mengumpulkan pemain sesuai kebutuhan. Secara historis, ini menampilkan contoh baru dari pemutar yang sedang berjalan, tetapi menyebabkan peningkatan yang signifikan dalam memori dan bandwidth. Tutorial tingkat tinggi mereka ada di bawah.
Lepaskan dengan enkripsi
Beralih bidang antara decoder yang berbeda membutuhkan banyak pekerjaan. Instance pemutar berpegang pada referensi dekoder yang mendasarinya berdasarkan jenis enkode terakhir dari media yang dirender. Pinterest dipindahkan ke agregasi pemain berdasarkan format decoding asli. Keterlambatan yang dihilangkan ini disebabkan oleh pengalihan enkoder, pemutar yang gigih didaur ulang dengan enkoder yang kompatibel dengan pengodean media.
Pengukuran cerdas
Menemukan ukuran kumpulan yang ideal juga menantang – butuh beberapa iterasi untuk menemukan ruang ideal yang diperlukan untuk mengakomodasi beberapa streaming video dan menghindari kesalahan OutOfMemory (OOM) dan Application Not Responding (ANR). Mereka menggunakan dua API berikut untuk membantu hal ini.
Panggilan ini memberi tahu Pinterest saat tiba waktunya untuk menghapus cache pemutarnya saat hampir mengirim OOM.
Bendera ini memungkinkan ExoPlayer mempertahankan referensi langsung ke dekoder video dan menyimpannya di memori bahkan saat tidak digunakan. Ini menyebabkan kerugian yang signifikan pada memori dan stabilitas perangkat. Untuk mempertahankan keduanya, Pinterest membuat logika konservatif berdasarkan siklus hidup aplikasi saat ini dan memori yang tersedia di perangkat.