Base64 ke Video

Input Base64

Secara online memulihkan data video yang dikodekan Base64 menjadi file video MP4/WebM/OGG yang dapat diputar, mendukung pengenalan otomatis prefix Data URL, semua operasi dilakukan secara lokal di browser, data video tidak diunggah ke server, cocok untuk debugging API backend, verifikasi encoding video, pemulihan video inline frontend, setelah decoding dapat langsung dipreview, diputar dan diunduh.

Rekomendasi Terkait

Kasus penggunaan

  • Debug API video backend: saat API mengembalikan data video berkode Base64, langsung paste ke alat untuk preview cepat, verifikasi apakah response API benar, tanpa perlu menulis kode decoding frontend
  • Verifikasi output encoding video: setelah menghasilkan video Base64 menggunakan FFmpeg atau layanan transcoding cloud, decode dan putar untuk memverifikasi apakah hasil transcoding normal, troubleshooting masalah encoding yang rusak
  • Pemulihan video inline frontend: ekstrak video inline format Data URL di HTML, CSS atau JavaScript (data:video/mp4;base64,...), pulihkan menjadi file video yang dapat dilihat
  • Validasi cepat data video: bandingkan apakah dua video Base64 mendecode konten yang sama, atau verifikasi apakah ada kerusakan data selama transmisi Base64
  • Preview sementara video pendek: untuk klip video pendek yang tidak perlu disimpan ke lokal, langsung preview dan putar di alat, tentukan apakah perlu diunduh setelah mengonfirmasi konten
  • Parsing data crawler: data video berkode Base64 yang di-crawl oleh web crawler, cepat dipulihkan menjadi file yang dapat diputar untuk review atau analisis konten
  • Debug pengembangan client: saat mengembangkan aplikasi mobile dan mini-program, ketika backend mengembalikan video Base64, gunakan alat ini untuk memverifikasi kebenaran data sebelum melakukan pengembangan decoding client
  • Tujuan demonstrasi pengajaran: sebagai alat demonstrasi online saat menjelaskan prinsip encoding Base64, teknologi Data URL, penggunaan Blob/URL.createObjectURL frontend
  • Preview lampiran email: beberapa sistem email mengonversi lampiran menjadi Base64 untuk disematkan, setelah diekstrak dapat dengan cepat memulihkan konten video untuk dilihat
  • Bantuan reproduksi bug: ketika tim pengujian melaporkan bug terkait video, berikan data Base64, developer dapat dengan cepat memulihkan video untuk mereproduksi skenario masalah

Cara Penggunaan

  1. Dapatkan data video Base64: salin string video berkode Base64 dari response API, log, source HTML, database, dll., mendukung dengan atau tanpa prefix Data URL
  2. Paste ke area input: paste lengkap teks Base64 yang disalin ke kotak input alat, alat akan otomatis mengenali apakah mengandung prefix data:video/...;base64,
  3. Konfirmasi atau pilih format: jika input mengandung prefix Data URL, alat akan otomatis mengenali tipe MIME; jika Base64 murni, pilih format video yang sesuai secara manual (MP4/WebM/OGG)
  4. Klik tombol decode: setelah mengklik tombol decode, alat akan menjalankan decoding Base64, konversi Uint8Array, pembuatan Blob di browser secara lokal, menampilkan pesan status selama proses
  5. Lihat informasi video: setelah decoding selesai, lihat informasi dasar video termasuk ukuran file, tipe MIME, konfirmasi format, verifikasi apakah decoding berhasil
  6. Preview dan putar video: gunakan pemutar HTML5 bawaan halaman untuk preview video, drag progress bar untuk memeriksa apakah konten video lengkap, gambar dan suara normal
  7. Unduh file video: setelah mengonfirmasi video benar, klik tombol unduh untuk menyimpan video Blob ke lokal, file akan otomatis mencocokkan ekstensi yang benar (.mp4/.webm/.ogg)

Fitur

  • Pengenalan format input yang cerdas: deteksi otomatis encoding Base64 murni dan format Data URL lengkap (prefix data:video/...;base64,), decoding dapat dilakukan tanpa menghapus prefix secara manual
  • Dukungan multi-format video: dukungan penuh untuk tipe MIME video yang didukung native oleh browser modern seperti MP4 (video/mp4), WebM (video/webm), OGG (video/ogg)
  • Pemrosesan lokal di browser: semua operasi decoding Base64, generasi Blob, preview video dilakukan sepenuhnya di browser pengguna melalui JavaScript, data video tidak dikirim ke server mana pun
  • Preview dan pemutaran instan: setelah decoding, otomatis menghasilkan pemutar video HTML5 dengan kontrol pemutaran lengkap seperti play, pause, drag progress, pengaturan volume, fullscreen
  • Unduh file asli: satu klik untuk menyimpan video yang telah didecode ke file lokal, otomatis memilih ekstensi file yang benar berdasarkan tipe MIME (.mp4/.webm/.ogg)
  • Deteksi tipe MIME otomatis: mengenali format video secara otomatis dari prefix Data URL, pengguna tidak perlu memilih secara manual; mendukung penentuan format manual saat input Base64 murni
  • Feedback progress decoding real-time: menampilkan status pemrosesan saat mendecode data Base64 berukuran besar, mencegah pengguna mengira halaman mengalami hang
  • Tampilan metadata video: setelah decoding menampilkan informasi dasar seperti ukuran video, tipe MIME, durasi (saat dapat diputar), resolusi
  • Pesan diagnosis error: memberikan pesan error yang jelas dan saran troubleshooting saat format input salah, encoding Base64 rusak, atau format video tidak didukung
  • Dukungan drag-drop dan paste: mendukung paste teks Base64 langsung, drag-drop file teks ke area input, meningkatkan efisiensi debugging
  • Perbaikan otomatis masalah encoding: menangani otomatis masalah format umum seperti karakter padding Base64 (=) yang hilang, karakter whitespace, newline
  • Kompatibilitas lintas browser: mendukung semua browser modern seperti Chrome, Firefox, Safari, Edge, menggunakan API atob dan Uint8Array standar
  • Desain responsif: mendukung penggunaan di desktop dan mobile, dapat mendecode dan mempreview video pendek dengan normal di ponsel dan tablet
  • Jaminan keamanan privasi: data video diproses sepenuhnya di memori lokal, data segera dihapus setelah menutup halaman, tidak meninggalkan cache atau catatan apa pun

Pertanyaan Umum

Format video apa saja yang didukung alat Base64 ke video?

Mendukung format video mainstream yang dapat diputar native browser: MP4 (video/mp4, encoding H.264+AAC), WebM (video/webm, encoding VP8/VP9+Vorbis/Opus), OGG (video/ogg, encoding Theora+Vorbis). Di antaranya format MP4 memiliki kompatibilitas terbaik, didukung semua browser modern dan perangkat mobile, disarankan untuk diutamakan. Jika video Anda adalah format lain (seperti MOV, AVI, MKV), perlu transcoding menjadi MP4 (H.264+AAC) menggunakan FFmpeg terlebih dahulu sebelum encoding Base64.

Apakah input perlu menyertakan prefix data:video/mp4;base64?

Tidak perlu. Alat mendukung dua format input: ①String Base64 murni (tanpa prefix apa pun); ②Data URL lengkap (dengan prefix data:video/xxx;base64,). Alat akan otomatis mendeteksi apakah input mengandung prefix, jika ada akan otomatis mengekstrak konten Base64 dan mengenali tipe MIME. Disarankan langsung menyalin konten lengkap yang dikembalikan API, tidak perlu menangani prefix secara manual.

Apakah video setelah decoding dapat langsung diputar di browser?

Bisa. Setelah decoding selesai, alat akan menghasilkan pemutar video HTML5 bawaan, mendukung fungsi lengkap seperti play/pause, drag progress bar, pengaturan volume, pemutaran fullscreen, Anda dapat langsung mempreview konten video di halaman, mengonfirmasi gambar dan suara normal baru memutuskan apakah perlu diunduh ke lokal.

Apakah mendukung pemrosesan video Base64 berukuran besar? Apakah ada batasan ukuran?

Alat itu sendiri tidak memiliki batasan ukuran yang ketat, tetapi browser memiliki batasan memori dan performa. Encoding Base64 akan membuat ukuran video meningkat sekitar 33%, selama proses decoding browser perlu mengalokasikan memori untuk menyimpan string Base64, string biner, Uint8Array, Blob dan beberapa salinan lainnya, memori puncak mungkin 3-5 kali ukuran video asli. Disarankan memproses Base64 dalam 5MB (sesuai video asli sekitar 3.7MB) relatif lancar, Base64 di atas 10MB dapat menyebabkan halaman lag, video besar tidak disarankan menggunakan cara Base64, disarankan menggunakan cara upload file tradisional dan pemuatan URL.

Apakah data video akan diunggah ke server? Apakah privasi aman?

Semua operasi decoding selesai sepenuhnya secara lokal di browser Anda melalui JavaScript, data video tidak akan diunggah ke server mana pun, juga tidak mengirim request jaringan apa pun. Setelah menutup halaman, data video akan segera dihapus dari memori browser, tidak meninggalkan cache atau catatan apa pun. Anda dapat memutus jaringan lalu menggunakan alat ini, fungsi decoding tetap bekerja normal.

Mengapa video setelah encoding Base64 1/3 lebih besar dari file asli?

Ini ditentukan oleh prinsip encoding Base64, bukan masalah alat. Base64 mengodekan ulang setiap 3 byte (24 bit) data biner menjadi 4 karakter ASCII (setiap karakter menempati 1 byte), jadi volume setelah encoding adalah 4/3≈133% dari aslinya, yaitu volume meningkat sekitar 33%. Jika panjang data asli bukan kelipatan 3, bagian akhir akan diisi dengan tanda =, peningkatan volume aktual sekitar 33%-37%. Peningkatan volume ini adalah karakteristik umum semua encoding Base64, bukan masalah alat ini.

Mengapa MP4 Base64 saya setelah decoding tidak dapat diputar?

MP4 hanyalah format kontainer, encoding video di dalamnya harus format yang didukung browser agar dapat diputar. 99% kasus adalah encoding video bukan H.264, atau encoding audio bukan AAC. Misalnya di MP4 dikemas encoding H.265(HEVC), AV1, dll., browser mungkin tidak dapat memutar. Anda dapat menggunakan perintah FFmpeg ffmpeg -i input.mp4 untuk melihat informasi encoding, jika bukan H.264+AAC, transcoding dengan perintah ffmpeg -i input.mp4 -c:v libx264 -c:a aac -movflags +faststart output.mp4 lalu encoding menjadi Base64. Selain itu juga perlu mengonfirmasi tipe MIME diatur ke video/mp4, data Base64 lengkap tidak terpotong.

Bagaimana cara memverifikasi encoding video saya kompatibel dengan browser?

Disarankan menggunakan alat FFmpeg untuk verifikasi: setelah menginstal FFmpeg jalankan ffmpeg -i yourvideo.mp4, lihat baris Video dan Audio dalam informasi output. Baris Video harus berisi h264 (atau avc), baris Audio harus berisi aac. Misalnya: Stream #0:0(eng): Video: h264 (avc1/0x31637661...), Stream #0:1(eng): Audio: aac (mp4a/0x6134706D...). Jika bukan kedua encoding ini, perlu transcoding. Juga dapat langsung menarik file video asli ke jendela browser Chrome, jika dapat diputar langsung, berarti encoding kompatibel dengan browser.

Apa ekstensi file video yang diunduh setelah decoding?

Alat akan secara otomatis mencocokkan ekstensi file yang benar berdasarkan tipe MIME yang Anda pilih (atau dikenali otomatis): video/mp4 sesuai .mp4, video/webm sesuai .webm, video/ogg sesuai .ogv. Anda tidak perlu mengubah ekstensi secara manual, file yang diunduh dapat langsung dibuka dengan pemutar default sistem.

Apakah newline dan spasi dalam string Base64 memengaruhi decoding?

Tidak memengaruhi. Alat akan secara otomatis menangani karakter whitespace seperti newline (\n), carriage return (\r), spasi, tab dalam string Base64, karakter-karakter ini akan dihapus terlebih dahulu sebelum decoding. Jadi meskipun Base64 Anda adalah format multi-baris (seperti format MIME yang newline setiap 76 karakter), atau ada spasi tata letak yang terbawa saat menyalin, semuanya dapat didecode normal.

Bagaimana cara frontend mengimplementasikan Base64 ke video dengan JavaScript?

Logika kode inti adalah sebagai berikut: ①Hapus prefix Data URL untuk mendapatkan Base64 murni; ②Gunakan atob(base64Str) untuk mendecode menjadi string biner; ③Konversi string biner menjadi Uint8Array (iterasi setiap karakter ambil charCode); ④Gunakan new Blob([uint8Array], {type: 'video/mp4'}) untuk membuat Blob; ⑤Gunakan URL.createObjectURL(blob) untuk menghasilkan URL sementara; ⑥Atur URL ke video.src. Perhatikan setelah digunakan panggil URL.revokeObjectURL(url) untuk melepaskan memori, menghindari memory leak.

Apa perbedaan antara video Data URL dan video Blob URL?

Data URL adalah menulis data Base64 lengkap langsung di dalam URL, formatnya data:video/mp4;base64,XXXX, URL itu sendiri berisi semua data; Blob URL adalah referensi sementara format blob:// yang dihasilkan oleh URL.createObjectURL(), menunjuk ke objek Blob di memori browser, URL itu sendiri pendek tidak berisi data. Data URL setiap kali digunakan harus memparse seluruh string Base64, performa lebih buruk; Blob URL lebih efisien, cocok untuk pemutaran dan reuse. Alat ini secara internal menggunakan cara Blob URL untuk mengimplementasikan pemutar.

Skenario apa yang cocok menggunakan encoding video Base64? Skenario apa yang tidak cocok?

Skenario cocok: ①Video pendek dalam beberapa MB (animasi loading, petunjuk panduan, animasi ikon); ②Perlu menyematkan video ke Demo/dokumen file HTML tunggal; ③Video kecil yang disematkan di email; ④Transmisi sementara video kecil saat debugging antarmuka API. Skenario tidak cocok: ①Video di atas 5MB (pembengkakan volume 33% terlalu membuang bandwidth); ②Video yang diunggah pengguna (ukuran tidak terkontrol); ③Video panjang yang perlu dimuat streaming atau drag progress; ④Video yang perlu di-cache dan digunakan kembali oleh browser (Data URL tidak dapat di-cache secara terpisah); ⑤Konten video untuk pengguna di lingkungan produksi (seharusnya menggunakan CDN dan URL file eksternal).

Mengapa video setelah decoding diputar normal di Safari, malah tidak bisa di Chrome?

Situasi ini relatif jarang, biasanya karena encoding video adalah H.265(HEVC) — Safari di macOS dan iOS mendukung H.265 dengan baik (ada akselerasi perangkat keras), tetapi Chrome dan Firefox dukungan H.265 terbatas (membutuhkan perangkat keras dan lisensi). Solusinya adalah transcoding menjadi encoding H.264, ini adalah encoding universal yang didukung semua browser. Sebaliknya Chrome dapat memutar Safari tidak bisa lebih umum, biasanya Profile/Level encoding terlalu tinggi atau moov atom di akhir file.

Konversi timbal balik video Base64 dan file video, apakah kualitas gambar akan hilang?

Tidak akan kehilangan kualitas gambar. Base64 adalah metode encoding, bukan kompresi atau transcoding, ia hanya melakukan konversi pemetaan satu-satu antara data biner dan string teks. Video dikonversi ke Base64 lalu didecode kembali, data biner yang didapat sama persis dengan file video asli (sama byte demi byte), tidak akan ada kehilangan kualitas gambar atau suara sama sekali, mirip dengan salin-tempel file daripada konversi kompresi. Selama proses encoding dan decoding Base64 benar, kualitas video sama persis dengan file asli.

Pemecahan Masalah

Video tidak dapat diputar setelah decoding Base64, video HTML5 menampilkan format tidak didukung atau layar hitam

Kesalahan pengaturan tipe MIME: video MP4 diatur menjadi video/webm, atau tipe lain yang tidak cocok Encoding video bukan format yang didukung browser: misalnya di MP4 adalah encoding H.265 bukan H.264 Data Base64 terpotong selama proses penyalinan, kurang bagian awal atau akhir, menyebabkan file rusak Kesalahan penanganan prefix Data URL: prefix juga ikut didecode sebagai Base64, atau saat menghapus prefix tidak sengaja menghapus karakter awal Base64 Video asli itu sendiri sudah rusak, atau format khusus yang tidak didukung browser Resolusi video melebihi batas browser, atau menggunakan format piksel yang tidak didukung browser (seperti YUV 10-bit) Header file video (ftyp atom) rusak, browser tidak dapat mengenali format kontainer MP4

Fungsi atob() melempar InvalidCharacterError decoding gagal

String Base64 mengandung karakter ilegal: charset standar Base64 hanya memiliki 65 karakter A-Z, a-z, 0-9, +, /, = Prefix Data URL data:video/mp4;base64, tidak dihapus, langsung dikirim ke atob() String tercampur karakter whitespace seperti newline \n, carriage return \r, spasi, tab Saat menyalin dari Word/halaman web dll. terbawa tanda baca Cina, karakter lebar penuh atau karakter khusus yang tidak terlihat String Base64 telah di-URL encode (tambah + menjadi %2B, garis miring / menjadi %2F), perlu di-URL decode terlebih dahulu Panjang string Base64 bukan kelipatan 4, dan karakter padding = hilang menyebabkan atob verifikasi gagal Beberapa bahasa backend (seperti Java, Python) encoder Base64 menggunakan varian URL-safe (- dan _ menggantikan + dan /)

Video dapat diputar normal di Chrome/Firefox, tetapi tidak dapat diputar di Safari

Safari memiliki persyaratan lebih ketat untuk Profile dan Level encoding H.264, konfigurasi tingkat lanjut seperti High Profile Level 5.1 mungkin tidak didukung moov atom (metadata) file MP4 di akhir file bukan di awal, Safari perlu menunggu semua terunduh sebelum dapat diputar Encoding audio bukan AAC, Safari kurang mendukung audio lain seperti MP3 di kontainer MP4 Resolusi atau bitrate video terlalu tinggi, melebihi kemampuan decoding perangkat keras Safari (terutama iOS Safari) Menggunakan fitur encoding yang tidak didukung Safari, seperti kedalaman warna 10-bit, beberapa fitur H.264 iOS Safari mengharuskan video mengatur atribut playsinline agar dapat diputar inline, jika tidak akan fullscreen atau tidak dapat diputar Safari memiliki persyaratan untuk sample rate track audio, sample rate non-standar (seperti non 44.1kHz/48kHz) dapat menyebabkan pemutaran gagal

Halaman lag, browser crash saat mendecode video Base64 berukuran besar

JavaScript adalah single-threaded, atob() dan konversi Uint8Array dieksekusi di main thread, akan memblokir rendering UI Selama proses decoding Base64 menghasilkan beberapa string dan array besar, penggunaan memori tinggi (saat mendecode Base64 10MB, memori puncak mungkin menempati puluhan MB) Membuat Blob dan Object URL juga membutuhkan memori, video besar mudah memicu batas memori browser Perangkat mobile memiliki memori lebih kecil, lebih mudah mengalami crash OOM (Out of Memory) Tidak menggunakan Web Worker, semua operasi di main thread, memblokir event loop Browser memiliki batasan pada panjang string tunggal (mesin V8 sekitar 512MB sampai 1GB), string Base64 yang sangat panjang mungkin tidak dapat diparse dengan benar Garbage collection (GC) yang sering selama proses decoding juga menyebabkan halaman lag dan respons lambat

Base64 yang disalin dari response API, video setelah decoding rusak tidak dapat diputar

Backend saat mengembalikan Base64 otomatis melakukan escape pada karakter khusus (seperti + diubah menjadi spasi, atau masalah escape JSON) Saat parsing JSON tidak menangani karakter khusus dalam string Base64 dengan benar Kesalahan encoding saat backend melakukan encoding Base64, misalnya memperlakukan data biner sebagai string UTF-8 Data dimodifikasi selama kompresi gzip atau transmisi HTTP Saat menyalin dari Chrome DevTools, preview Response panel Network mungkin memotong atau melakukan escape pada string panjang Backend menggunakan varian Base64 yang berbeda (seperti Base64 URL-safe, menggunakan - dan _ menggantikan + dan /) dan frontend tidak menanganinya Response API dipaginasi atau terpotong, data Base64 tidak lengkap

Video hanya ada gambar tidak ada suara, atau suara dan gambar tidak sinkron

Encoding audio tidak didukung browser: misalnya di MP4 menggunakan MP3 atau Opus daripada AAC Parameter audio diatur tidak tepat saat transcoding video, menyebabkan timestamp (PTS/DTS) error Data Base64 tidak lengkap, tepat memotong sebagian data track audio Video adalah variable frame rate (VFR), beberapa browser kurang mendukung video VFR menyebabkan audio dan gambar tidak sinkron Video asli itu sendiri memiliki masalah sinkronisasi audio dan gambar, bukan disebabkan oleh decoding Base64 Sample rate audio atau jumlah channel tidak didukung browser, menyebabkan decoding track audio gagal Timebase track audio dan track video dalam kontainer video tidak konsisten, menyebabkan offset sinkronisasi saat pemutaran

Glosarium

Base64
Metode encoding yang merepresentasikan data biner menggunakan 64 karakter yang dapat dicetak, setiap 3 byte data biner dikodekan menjadi 4 byte teks ASCII, volume meningkat sekitar 33%, sering digunakan untuk mentransmisikan data biner dalam protokol teks.
Data URL
Skema URI yang didefinisikan RFC 2397, formatnya data:[mediatype][;base64],data, memungkinkan file kecil disematkan langsung ke dalam dokumen, tidak memerlukan HTTP request tambahan.
Tipe MIME
Identifikasi tipe media, digunakan untuk menunjukkan format dokumen atau file, format video dimulai dengan video/, seperti video/mp4, video/webm, video/ogg, browser menentukan cara menangani resource berdasarkan tipe MIME.
Blob
Binary Large Object, objek yang merepresentasikan data biner mentah yang tidak dapat diubah di browser, dapat digunakan untuk menyimpan data file seperti video, gambar, menghasilkan URL yang dapat diakses melalui URL.createObjectURL().
atob()
Fungsi bawaan browser, digunakan untuk mendecode string berkode Base64 menjadi string biner (ASCII to Binary), fungsi encoding yang sesuai adalah btoa() (Binary to ASCII).
btoa()
Fungsi bawaan browser, digunakan untuk mengodekan string biner menjadi string Base64 (Binary to ASCII), adalah operasi kebalikan dari atob(), digunakan saat mengonversi video ke Base64.
Uint8Array
Array bertipe JavaScript, menyimpan integer unsigned 8-bit (0-255), setiap elemen sesuai dengan satu byte, adalah cara standar untuk memproses data biner, setelah decoding Base64 perlu dikonversi ke Uint8Array baru kemudian membuat Blob.
MP4
MPEG-4 Part 14, format kontainer multimedia yang umum digunakan, biasanya mengemas encoding video H.264 dan encoding audio AAC, kompatibilitas Web terbaik, ekstensi file .mp4.
WebM
Format kontainer video open source bebas royalti yang diluncurkan Google, biasanya menggunakan encoding video VP8/VP9/AV1 dan encoding audio Vorbis/Opus, rasio kompresi lebih baik dari MP4, Chrome/Firefox/Edge mendukung dengan baik.
OGG
Format kontainer multimedia open source yang dikembangkan Xiph Foundation, video biasanya menggunakan encoding Theora, audio menggunakan encoding Vorbis, sekarang berangsur digantikan oleh WebM, ekstensi file .ogv.
H.264/AVC
Standar encoding video yang paling banyak digunakan saat ini, juga disebut AVC (Advanced Video Coding), keseimbangan kompresi dan kualitas baik, ada dukungan akselerasi perangkat keras, encoding video standar kontainer MP4, kompatibel dengan semua browser.
AAC
Advanced Audio Coding, encoding audio tingkat lanjut, encoding audio standar kontainer MP4, penerus format MP3, ukuran file lebih kecil pada kualitas yang sama, didukung semua browser modern.
Object URL
URL sementara yang dibuat melalui URL.createObjectURL(blob), formatnya blob://..., dapat langsung digunakan untuk atribut src tag seperti video/img, menunjuk ke data Blob di memori, setelah digunakan perlu revokeObjectURL untuk melepaskan.
FFmpeg
Alat pemrosesan audio-video open source, dapat digunakan untuk operasi seperti transcoding video, klip, melihat informasi encoding, kompresi, adalah alat standar industri untuk memproses video, penting untuk verifikasi dan konversi encoding video.
moov atom
Atom metadata dalam file MP4, berisi data kunci seperti durasi video, resolusi, informasi encoding, parameter decoding. moov di awal file agar dapat diputar dengan cepat, video Web disarankan diletakkan di awal (faststart).
Format Kontainer
Format file yang mengemas aliran video, aliran audio, subtitle, metadata, seperti MP4, WebM, OGG, MKV, format kontainer tidak sama dengan format encoding, kontainer yang sama dapat mengemas encoding yang berbeda.
Encoding Video
Algoritma untuk mengompresi dan mendekompresi data video, yang umum adalah H.264, H.265(HEVC), VP8, VP9, AV1, encoding menentukan rasio kompresi dan kualitas gambar, encoding yang didukung browser menentukan apakah video dapat diputar.
Debugging API
Proses verifikasi kebenaran data saat mengembangkan antarmuka frontend-backend, alat ini dapat digunakan untuk preview cepat apakah data video Base64 yang dikembalikan API benar, tanpa perlu menulis kode decoding frontend.
Chrome DevTools
Alat developer bawaan browser Chrome, panel Network dapat melihat request dan response API, dapat menyalin data video Base64 dari sana untuk debugging.
Karakter Padding =
Di akhir encoding Base64 mungkin muncul 1 atau 2 tanda sama dengan, digunakan untuk mengisi panjang hasil encoding menjadi kelipatan 4, padding yang hilang saat decoding dapat menyebabkan error, alat dapat memperbaiki masalah padding secara otomatis.

Tabel Perbandingan Tipe MIME Video Web dan Kompatibilitas

Tipe MIMEFormat KontainerEncoding Video UmumEncoding Audio UmumKompatibilitas BrowserEkstensi File
video/mp4MP4 (MPEG-4 Part 14)H.264/AVC, H.265/HEVC, AV1AAC, MP3Semua browser modern (Chrome/Firefox/Safari/Edge/iOS/Android), kombinasi H.264+AAC 100% kompatibel.mp4, .m4v
video/webmWebMVP8, VP9, AV1Vorbis, OpusChrome/Firefox/Edge/Opera dukung penuh, Safari 14.1+ dukung, iOS Safari 15+ dukung sebagian.webm
video/oggOggTheoraVorbisFirefox/Chrome lama/Opera dukung, Safari tidak dukung, sekarang penggunaan berkurang.ogv, .ogg
video/quicktimeQuickTime (MOV)ProRes, H.264AAC, PCMUtamanya Safari/macOS yang dukung, browser lain kompatibilitas buruk.mov
video/x-matroskaMatroskaH.264, VP9, AV1, dll.Berbagai encodingDukungan native browser buruk, biasanya butuh pemutar pihak ketiga, tidak disarankan untuk Web.mkv

Kode Error Umum Decoding Video Base64 dan Solusi

Gejala Error/Pesan ErrorPenyebab MungkinArah TroubleshootingSolusi
atob() melaporkan error: InvalidCharacterError atau "not correctly encoded"String Base64 mengandung karakter ilegal; prefix Data URL tidak dihapus; ada whitespace/newlinePeriksa apakah string input hanya mengandung A-Za-z0-9+/=; konfirmasi apakah prefix data: sudah dihapusHapus prefix data:video/...;base64,; hapus semua newline, spasi, tab; periksa apakah ada karakter Cina atau karakter khusus yang tercampur
Decode berhasil tetapi video tidak dapat diputar, menampilkan "format video tidak didukung"Tipe MIME salah; encoding video tidak didukung browser; header file rusakKonfirmasi apakah tipe MIME cocok dengan format aktual video; gunakan FFmpeg untuk memeriksa informasi encodingPilih tipe MIME yang benar (MP4 gunakan video/mp4); transcoding dengan FFmpeg menjadi H.264+AAC (MP4); periksa apakah awal dan akhir Base64 lengkap
Video ada gambar tidak ada suara, atau ada suara tidak ada gambarSalah satu encoding audio atau video tidak didukung browser; track audio atau video rusakGunakan FFmpeg untuk melihat stream apa saja yang ada di video dan encoding-nyaMP4 harus video H.264+audio AAC; WebM gunakan VP8/VP9+Vorbis/Opus; transcoding ulang menjadi format kompatibel standar
Layar video berbintik, hijau, mozaikData Base64 tidak lengkap (terpotong); data rusak selama decoding; keyframe hilangBandingkan panjang Base64 asli, periksa apakah salinan lengkapSalin ulang string Base64 yang lengkap; periksa apakah ada karakter yang hilang selama transmisi; verifikasi apakah file video asli itu sendiri normal
Ukuran video setelah decoding tidak konsisten dengan file asliKesalahan penanganan karakter padding Base64 =; masalah encoding saat konversi string biner ke Uint8ArrayPeriksa apakah logika decoding menangani padding dengan benar; konfirmasi rentang charCodeAt adalah 0-255Pastikan tanda = di akhir Base64 ditangani dengan benar; periksa apakah logika konversi Uint8Array benar
Halaman lag tidak merespons saat mendecode video besarDecoding Base64 dieksekusi di main thread, memblokir UI; video terlalu besar melebihi batas memoriLihat ukuran data Base64, Base64 di atas 10MB (video asli sekitar 7.5MB) dapat menyebabkan lagVideo besar tidak disarankan menggunakan Base64; pertimbangkan menggunakan Web Worker untuk decoding background; pemrosesan chunk; beralih ke cara upload file
Safari dapat mendecode tetapi tidak dapat memutar, Chrome normalSafari memiliki persyaratan lebih ketat untuk encoding video; moov atom tidak di awal file; Profile/Level encoding terlalu tinggiGunakan FFmpeg untuk memeriksa H.264 Profile dan Level; periksa posisi moovTambahkan -movflags +faststart saat transcoding; gunakan H.264 Baseline/Main Profile, Level tidak melebihi 4.1; konfirmasi audio adalah AAC
Data URL langsung diatur ke video src tidak dapat diputarFormat Data URL salah; tipe MIME salah tulis; bagian Base64 rusakPeriksa apakah format Data URL adalah data:video/xxx;base64,xxxxKonfirmasi tipe MIME benar; koma adalah koma Inggris; bagian Base64 lengkap; beberapa mobile memiliki batasan ukuran pada Data URL

Tabel Perbandingan Ukuran Video Asli dan Ukuran Setelah Encoding Base64

Ukuran Video AsliUkuran Setelah Encoding Base64 (kira-kira)Peningkatan VolumeOverhead Header Data URLApakah Cocok untuk InlineSkenario Khas
100 KB~133 KB+33%Sekitar 20 byteDisarankanAnimasi ikon sangat kecil, animasi loading tanpa suara beberapa detik
500 KB~667 KB+33%Sekitar 20 byteDisarankanAnimasi loop pendek, video pendek petunjuk operasi, animasi feedback tombol
1 MB~1.33 MB+33%Sekitar 20 byteTergantung situasiVideo panduan 5-10 detik, animasi demo resolusi rendah, perhatikan performa first screen
2 MB~2.67 MB+33%Sekitar 20 byteTidak disarankanMendekati batas ukuran video inline, akan meningkatkan waktu loading halaman secara signifikan
5 MB~6.67 MB+33%Sekitar 20 byteTidak disarankanVolume terlalu besar, tidak disarankan inline Base64, ganti ke file video eksternal
10 MB~13.3 MB+33%Sekitar 20 byteDilarangBerdampak serius pada loading halaman, dapat menyebabkan crash memori tidak cukup di mobile
50 MB~66.7 MB+33%Sekitar 20 byteDilarangSama sekali jangan gunakan Base64 untuk memproses video sebesar ini, harus menggunakan cara upload/pemuatan file