Pemeran Web
Aplikasi Android untuk mengekstrak URL video (file/stream) dari situs web dan menontonnya di tempat lain (pemutar video internal/eksternal, Google Chromecast, ExoAirPlayer).
Tangkapan layar..
Wisata
-
BrowserActivity
ditampilkan saat aplikasi dimulai, dan mencakup:- browser web yang sangat mendasar
- ikon bilah tindakan:
- tombol penanda
- menambah/menghapus URL situs web saat ini ke/dari daftar Bookmark yang disimpan secara persisten
- item menu bilah tindakan:
- Bookmark
- buka laci di sebelah kiri: Bookmark
- Video
- buka laci di sebelah kanan: Video
- Pengaturan
- KELUAR
- tutup semua UI dan keluar dari aplikasi
- laci di sebelah kiri: Bookmark
- berisi daftar persisten dari:
- URL situs web yang telah disimpan melalui ikon sakelar bookmark
- URL video yang telah disimpan melalui laci Video
- klik item daftar untuk:
- buka URL situs web di WebView
- tonton URL video
-
SettingsActivity
menentukan tindakan tertentu yang akan dilakukan
- klik lama item daftar untuk:
- laci di sebelah kanan: Video
- berisi daftar sementara URL video yang ditemukan di halaman web yang saat ini dimuat di
WebView
- daftar ini dihapus setiap kali
WebView
menavigasi ke halaman web baru
- klik item daftar untuk:
- tambahkan URL video ke daftar Bookmark yang disimpan secara persisten
- tonton URL video
-
SettingsActivity
menentukan tindakan tertentu yang akan dilakukan
- klik lama item daftar untuk:
-
SettingsActivity
dimulai dari menu actionbar di BrowserActivity
, dan mencakup:- Pemutar Video untuk memilih apakah akan menonton video menggunakan..
- internal dengan pengirim Chromecast
- luar
- mulai Pemilih aktivitas dengan Intent implisit
- tindakan
-
android.intent.action.VIEW
- data
- jenis
- tipe pantomim untuk format video
- tambahan
-
referUrl
- (String) URL rujukan
- digunakan oleh ExoAirPlayer
- Pengirim ExoAirPlayer
- mulai
ExoAirPlayerSenderActivity
- Konfigurasi HLS-Proxy
- mulai Pemilih aktivitas dengan Intent implisit
- tindakan
-
android.intent.action.VIEW
- data
-
http://webcast-reloaded.surge.sh/proxy.html#/watch/${base64_video}/referer/${base64_referer}
- jenis
- mulai
HlsProxyConfigurationActivity
- hanya jika tidak ada Aktivitas yang memiliki filter Intent yang cocok
- yang seharusnya tidak pernah terjadi, karena browser web standar mana pun harus menawarkan untuk menangani Intent ini
-
VideoActivity
dimulai ketika URL video ditonton menggunakan pemutar video internal, dan mencakup:- Pemain Exo
- menampilkan ikon di sudut kanan bawah bilah alat kontrol video untuk mengaktifkan/menonaktifkan mode layar penuh
- Pengirim Chromecast
- menampilkan ikon cast actionbar ketika setidaknya satu Google Chromecast terdeteksi di LAN
- saat terhubung ke Chromecast
- URL video dikomunikasikan ke aplikasi penerima yang berjalan di Chromecast
- aplikasi penerima Chromecast memuat URL video di pemutar video HTML5 yang tertanam
- transfer data video terjadi langsung antara Chromecast dan server yang menghosting URL video
- transfer tidak akan terpengaruh oleh kejadian-kejadian berikut:
-
VideoActivity
terhenti -
BrowserActivity
berhenti - Aplikasi WebCast keluar
- Perangkat Android dimatikan
- daftar URL video
- klik item daftar untuk:
- memutar URL video
- jika terhubung ke Chromecast:
- jika tidak:
- di Android, di ExoPlayer
- semua permintaan HTTP menyertakan url referensi
-
ExoAirPlayerSenderActivity
dimulai ketika URL video ditonton menggunakan pengirim ExoAirPlayer, dan mencakup:-
WebView
yang memuat satu halaman web- URL halaman web tergantung pada versi Android
- Android 5.0 dan yang lebih baru
- versi menggunakan javascript modern ES6+
- Android 4.x dan lebih lama
- versi menggunakan javascript yang sesuai dengan ES5
- Hash URL berisi:
-
#/watch/${base64_video}/referer/${base64_referer}
- halaman web membaca data dari hash URL dan mengisi kolom sebelumnya:
- halaman web membaca data dari cookie dan mengisi kolom sebelumnya:
- tuan rumah
- pelabuhan
- https
- menyediakan UI dasar untuk mengontrol aplikasi penerima ExoAirPlayer apa pun yang dapat dijangkau melalui jaringan
-
HlsProxyConfigurationActivity
dimulai ketika URL video ditonton menggunakan konfigurasi HLS-Proxy pada perangkat tanpa browser web apa pun, dan mencakup:-
WebView
yang memuat halaman web yang sesuai dengan ES5- Hash URL berisi:
-
#/watch/${base64_video}/referer/${base64_referer}
- halaman web membaca data dari hash URL dan mengisi kolom sebelumnya:
- halaman web membaca data dari cookie dan mengisi kolom sebelumnya:
- tuan rumah
- pelabuhan
- https
- mengklik tombol Load Player melakukan tugas-tugas berikut:
- mengonfigurasi URL video baru yang mengalihkan manifes HLS melalui HLS-Proxy
- mengalihkan
WebView
ke halaman web lain yang mendukung ES5 yang menyediakan tujuan titik akhir opsional untuk manifes HLS yang diproksi- Halaman web ES6 untuk pengirim ExoAirPlayer
- Halaman web ES5 untuk pengirim Chromecast
- di
WebView
pada Android 4.x dan lebih lama:- fungsi pemutar video tidak berfungsi
- di
WebView
pada Android 5.0 dan yang lebih baru:- fungsionalitas pemutar video berfungsi
- Fungsi pengirim Chromecast tidak berfungsi
Peringatan Penting
beberapa URL video mungkin diputar di WebCast dan ExoAirPlayer, namun tidak dapat diputar di Chromecast atau pemutar video eksternal lainnya
- hal ini dapat terjadi ketika URL video dihosting oleh server yang menggunakan header permintaan HTTP
Referer
untuk membatasi akses, yang merupakan strategi umum- WebCast dan ExoAirPlayer memiliki fungsi untuk mengonfigurasi nilai header ini untuk setiap URL video unik
- Aplikasi penerima Chromecast tidak dapat mengubah nilai header ini karena dibatasi oleh kebijakan keamanan browser standar
- spesifikasi untuk XHR dan pengambilan melarang perubahan header permintaan HTTP tertentu, termasuk
Referer
- aplikasi penerima Chromecast WebCast
- mencoba mengubah nilai header ini
- mengungkapkan di konsol debugger jarak jauh bahwa upaya ini memunculkan peringatan:
- Menolak untuk menyetel "perujuk" tajuk yang tidak aman
- pemutar video eksternal lainnya perlu:
- baca
referUrl
ekstra di Intent awal - konfigurasikan pustaka klien HTTP-nya untuk mengubah nilai header ini
- HLS-Proxy menyediakan solusi tujuan umum yang nyaman
- pengaturan untuk integrasi dengan WebCast:
- instal HLS-Proxy
-
npm install --global "@warren-bank/hls-proxy"
- instal WebMonkey
- aplikasi untuk membuka konfigurasi HLS-Proxy
- di WebMonkey
- instal skrip pengguna WebCast-Reloaded
- menambahkan fungsionalitas yang ditingkatkan ke halaman web yang sesuai dengan ES5 yang menyediakan konfigurasi HLS-Proxy
- mengaktifkan tombol berlabel: Mulai Aplikasi
- ketika diklik:
- mulai Pemilih aktivitas dengan Intent implisit
- tindakan
-
android.intent.action.VIEW
- data
- URL manifes HLS yang diproksi
- jenis
- di WebCast
- Pengaturan > Pemutar Video > Konfigurasi HLS-Proxy
- penggunaan:
- jalankan HLS-Proxy
-
hlsd --port 8080 --req-insecure --useragent "Chrome/90"
- di WebCast
- menavigasi
WebView
internal ke halaman yang memiliki streaming video HLS yang diinginkan - buka laci Video (di sebelah kanan)
- klik pada URL untuk streaming video HLS yang diinginkan
- klik: Tonton
- pemilih Aktivitas akan dimulai
- WebMonkey akan disertakan dalam daftar aplikasi yang berisi Aktivitas yang cocok
- klik: WebMonkey
- di WebMonkey
- konfigurasikan lokasi instance HLS-Proxy Anda yang sedang berjalan:
- tuan rumah
- pelabuhan
- https
- klik: Mulai Aplikasi
- pemilih Aktivitas akan dimulai
- WebCast akan disertakan dalam daftar aplikasi yang berisi Aktivitas yang cocok
- klik: Pemutar Video WebCast
- di WebCast
- klik Ikon pengirim Chromecast untuk mentransmisikan streaming video HLS yang diproksi ke perangkat Chromecast
komponen Android System WebView
sepenuhnya bertanggung jawab atas pengalaman browser web
- komponen ini memiliki sejarah yang rumit
- tanpa menjelaskan secara detail:
- pada versi Android <5.0
- komponen
WebView
dimasukkan ke dalam firmware- tidak dapat diperbarui
- melakukan pekerjaan yang buruk dalam memuat halaman web modern, karena bahasa javascript (ES6+) dan spesifikasi html (HTML5) telah berubah secara signifikan
- pada versi Android >= 5.0
- komponen
WebView
adalah aplikasi mandiri
- pada versi Android >= 7.0
- komponen
WebView
digantikan oleh komponen browser web Google Chrome, jika diinstal dan diaktifkan
Organisasi Git Repo
- cabang basi
- 01-yayasan
- kumpulan aplikasi kecil untuk mengembangkan dan menguji fitur eksperimental
- 02-webcast-httpclient
- menggunakan perpustakaan klien HTTP eksternal: Apache HttpClient
- menggunakan header respons
Content-Type
untuk mendeteksi file video
- 03-webcast-okhttp
- menggunakan perpustakaan klien HTTP eksternal: okhttp
- menggunakan header respons
Content-Type
untuk mendeteksi file video
- 04-nama file webcast
- menggunakan
WebView
untuk mengunduh semua permintaan HTTP - menggunakan ekspresi reguler untuk mendeteksi ekstensi file yang terkait dengan format video dalam permintaan URL
- cabang aktif
- 05-webcast-nama file-media3
- menggunakan
WebView
untuk mengunduh semua permintaan HTTP - menggunakan ekspresi reguler untuk mendeteksi ekstensi file yang terkait dengan format video dalam permintaan URL
- dibangun berdasarkan cabang nama file 04-webcast, dan bermigrasi dari ExoPlayer ke AndroidX Media3
- 00-aplikasi-penerima-chromecast
- Aplikasi penerima Chromecast WebCast
- gh-halaman
- Aplikasi penerima Chromecast WebCast
- KEPALA cabang ini harus selalu merujuk/alias KEPALA cabang 00-chromecast-receiver-app
- dihosting oleh Halaman GitHub
Sorotan Kode Sumber
- identifikasi URL video dalam permintaan HTTP keluar
-
BrowserWebViewClient
- regex untuk mendeteksi file video
- metodologi yang sama seperti yang diterapkan oleh ekstensi browser web
- Ekstensi Chromium "WebCast-Reloaded".
- regex untuk mendeteksi file video
Legal
- hak cipta: Warren Bank
- lisensi: GPL-2.0