Logo saluran FAST โ tanda kecil di sudut โ adalah satu-satunya konstanta visual di setiap program, setiap jeda iklan, setiap slate yang ditayangkan saluran tersebut. Logo tersebut harus terlihat profesional di setiap tingkat kualitas yang mungkin diterima pemirsa. Pendekatan naif โ mengunggah satu gambar master dan membiarkan AWS MediaLive menskalakannya per rendisi โ menghasilkan logo yang tajam pada 1080p dan yang terlihat buram pada 360p. Itu adalah masalah merek untuk setiap pemirsa yang tidak menggunakan broadband. Berikut adalah cara kami menyesuaikan ukuran logo dengan kisi piksel yang tepat untuk setiap rendisi.
Ikhtisar Cepat
| Aspek | Detail |
|---|---|
| Domain | Overlay logo saluran (DOG) pada saluran FAST |
| Mekanisme | StaticImageOutputActivate per output per rendisi (1080p, 720p, 480p, 360p) |
| Pembuatan aset | Skrip Python menggunakan resampling Lanczos |
| Waktu aktivasi | 1.5 detik setelah pergantian input setiap program |
| Status | 1x stack per-rendisi dalam produksi |
Masalah Bisnis
Saluran FAST tidak hanya menyajikan satu tingkat kualitas. MediaLive mengodekan saluran yang sama menjadi beberapa rendisi โ 1080p, 720p, 480p, 360p โ dan pemutar setiap pemirsa memilih yang terbaik yang dapat didukung oleh koneksi mereka. Pemirsa seluler dengan data seluler menonton 360p; pemirsa smart-TV dengan broadband mendapatkan 1080p. Mereka semua melihat tanda merek yang sama, dan mereka semua berharap itu terlihat profesional. Ketika logo tajam pada 1080p dan terlihat buram pada 360p, merek tersebut tidak konsisten โ bukan detail kecil pada saluran 24/7 di mana logo adalah satu-satunya elemen yang dilihat pemirsa lebih dari program tunggal mana pun.
Di Mana Overlay Sebenarnya Diterapkan
Dalam pipeline encoder multi-rendisi, overlay dapat diterapkan di dua tempat:
Sebelum penskala per-rendisi, di mana satu gambar master digabungkan ke sumber dan semuanya diskalakan per output โ inilah yang dilakukan MediaLive dengan tindakan StaticImageActivate global
setelah penskala, di mana setiap output mendapatkan overlay-nya sendiri diterapkan setelah kanvas sudah berukuran akhir. Perbedaannya terlihat kecil di API. Secara visual, tidak demikian. Apa pun yang digabungkan sebelum penskala akan mewarisi setiap artefak yang diperkenalkan penskala, dan pada 360p, penskala sangat agresif.

Mengapa Perbaikan yang Jelas Gagal
"Unggah satu master dan biarkan MediaLive menskalakannya." Tindakan global menggabungkan master sebelum penskala per-output berjalan. Master besar yang diskalakan menjadi logo 64ร21px untuk 360p adalah reduksi sekitar 40x โ bahkan resampling Lanczos kehilangan detail halus pada rasio tersebut, dan hasilnya kemudian melewati rantai kompresi yang sama dengan video itu sendiri.
"Gunakan master yang lebih besar." Ini membuat rasio downscale lebih besar, bukan lebih kecil โ artefak menjadi lebih buruk, bukan lebih baik.
"Lewati logo pada output SD." Persyaratan kepatuhan dan merek membutuhkan tanda tersebut pada setiap rendisi. Bukan pilihan.
"Bakar logo ke dalam video sumber pada saat encode." Kehilangan setiap tuas operasional โ tidak ada perubahan logo per kampanye atau per wilayah, dan tidak ada pembaruan tanpa mengodekan ulang seluruh pustaka.
"Gunakan overlay global dengan koordinat manual per resolusi." Tindakan global menghitung posisi terhadap referensi tetap 1920ร1080, sehingga video sumber yang lebih sempit dari itu menghasilkan koordinat di luar kanvas โ logo melayang dari sudut atau terpotong.
Tuas sebenarnya adalah melewati penskalaan overlay MediaLive sepenuhnya: sesuaikan ukuran logo dengan kanvas setiap rendisi sendiri, sebelum encoder menyentuhnya.
Solusi
Logo setiap rendisi dirender sebelumnya ke dimensi piksel yang tepat dan disimpan sebagai PNG terpisah. Di setiap batas program, orkestrator Lambda mengeluarkan empat tindakan StaticImageOutputActivate โ satu per rendisi โ masing-masing menunjuk ke PNG yang sudah disesuaikan ukurannya untuk output tertentu tersebut. MediaLive tidak melakukan penskalaan pada overlay.
GLOBAL (naif) PER-OUTPUT (yang kami kirim)
master.png โโโบ gabung ke master.png โโโบ Lanczos resize (offline)
kanvas sumber menjadi 4 PNG ukuran tepat
โ โ
โผ โผ
penskala per-rendisi penskala per-rendisi
(juga menskala (overlay tidak disentuh โ
overlay โ logo buram digabungkan setelah, pada
pada output SD) ukuran piksel yang tepat)Skrip Python menghasilkan empat PNG berukuran tersebut dari satu master menggunakan resampling Lanczos, dipilih karena perilaku yang dapat diprediksi dan dapat diulang pada ukuran kecil daripada untuk memenangkan kontes kualitas piksel. Setiap logo menempati sekitar 10% dari lebar kanvasnya โ terlihat tanpa mengganggu โ dan menambahkan rendisi baru adalah satu entri array ditambah satu PNG baru.
Keputusan Penting yang Patut Disebutkan
Penundaan aktivasi 1.5 detik. Tindakan watermark-on dipicu 1.5 detik setelah setiap pergantian input, bukan pada saat pergantian yang tepat โ mengaktifkan segera dapat menyebabkan flicker terhadap frame yang belum stabil. Nilai tersebut disesuaikan secara empiris dan dipusatkan sebagai konstanta tunggal sehingga penyesuaian di masa mendatang hanya memerlukan satu baris perubahan.
Pembuatan aset secara offline, dipicu oleh manusia โ dengan sengaja. Pipeline resize Lanczos tidak diotomatisasi sebagai langkah build atau transformasi sisi CDN. Aset logo cukup jarang berubah sehingga regenerasi satu perintah adalah tingkat otomatisasi yang tepat; biaya membangun otomatisasi lebih lanjut lebih besar daripada menjalankan skrip dua kali setahun.
Varian "tebal" ada tetapi tidak dikirimkan. Generator juga menghasilkan varian dilated-alpha dengan guratan yang lebih tebal, dimaksudkan untuk bertahan dari kuantisasi H.264 pada bitrate SD rendah. Ini tidak dalam produksi โ varian standar sudah cukup untuk rentang bitrate saat ini, dan belum ada pengukuran yang membenarkan perubahan. Ini ada sebagai mode standby yang telah diuji kode: murah untuk tetap tersedia, prematur untuk dikirimkan.
Apa yang Masih Kami Pantau
Tidak ada pipeline video produksi yang benar-benar selesai, dan masih ada peluang untuk menyempurnakan pendekatan ini seiring waktu.
Implementasi saat ini memastikan bahwa setiap rendisi menerima logo yang disiapkan secara khusus untuk resolusi outputnya sendiri, menghilangkan penskalaan overlay runtime dari pipeline MediaLive. Namun, tampilan akhir masih secara alami dibatasi oleh resolusi setiap rendisi dan kompresi video, khususnya pada bitrate yang lebih rendah. Seiring berkembangnya profil streaming, kami akan terus mengevaluasi apakah perlakuan logo yang berbeda memberikan manfaat visual yang terukur dalam kondisi tersebut.
Generator aset sudah mendukung varian logo standar dan yang lebih tebal. Jika pengujian di masa mendatang menunjukkan bahwa versi yang lebih tebal bekerja lebih baik untuk rendisi bitrate yang lebih rendah, kami akan membuat pemilihan varian logo berdasarkan konfigurasi sehingga dapat diubah tanpa mendeploy ulang aplikasi.
Hasil
Setiap rendisi kini menerima logo yang ukurannya disesuaikan secara khusus untuk kanvasnya sendiri, dengan MediaLive tidak melakukan penskalaan overlay runtime. Setiap output menggunakan karya seni yang disiapkan untuk resolusi targetnya, menghindari pelunakan tambahan yang diperkenalkan oleh penskalaan overlay runtime sambil mempertahankan kualitas visual praktis terbaik yang dapat diberikan oleh rendisi tersebut.
Bug pergeseran koordinat dari pendekatan overlay global sebelumnya, di mana logo dapat bergeser pada video sumber yang lebih sempit dari 1920px, secara struktural dihilangkan karena aktivasi per-output beroperasi sepenuhnya dalam koordinat output.
Mengganti logo kini menjadi tugas operasional yang sederhana: buat ulang aset spesifik rendisi dengan satu skrip dan unggah. Tidak diperlukan pengodean ulang video dan tidak ada pengeditan manual per-rendisi.
Implementasi ini mengikuti prinsip rekayasa sederhana: selesaikan masalah sedini mungkin dalam pipeline, dan desainlah berdasarkan kemampuan platform daripada mengandalkan solusi sementara di hilir. Dengan menyiapkan aset yang benar sebelum encoding, pipeline live tetap lebih sederhana, lebih dapat diprediksi, dan lebih mudah dipelihara.
Jika Anda mengalami masalah kualitas rendisi atau overlay serupa pada pipeline video live, hubungi kami.
Tumpukan Teknologi: AWS MediaLive ยท AWS Lambda ยท AWS S3 ยท NestJS ยท TypeScript ยท Python (Pillow)

