--- // src/pages/test-player.astro // Standalone Ultra-Premium diagnostics dashboard for TXAPlayer and Supabase connection. // Bypasses all decoy/Zalo blocks by not using Layout.astro. import { txasupabase } from '../lib/txasupabase.js'; // Get movie details from Supabase to demonstrate active integration const slug = 'nu-hoang-nuoc-mat'; const movieData = await txasupabase.getMovieBySlug(slug).catch(() => null); const movieName = movieData?.movie?.name || 'Nữ Hoàng Nước Mắt'; const thumbUrl = movieData?.movie?.thumb_url || ''; const posterUrl = movieData?.movie?.poster_url || ''; // Extract first episode details const episodes = movieData?.episodes || []; const firstServer = episodes[0] || null; const firstEpisode = firstServer?.server_data?.[0] || null; const directM3u8 = firstEpisode?.link_m3u8 || 'https://s2.phim1280.tv/20240310/Qah2fQHw/index.m3u8'; const embedUrl = firstEpisode?.link_embed || 'https://player.phimapi.com/player/?url=https://s2.phim1280.tv/20240310/Qah2fQHw/index.m3u8'; // Verify Supabase Connection state let isSupabaseConnected = false; let dbErrorMsg = ''; try { const { data, error } = await txasupabase.client.from('settings').select('key').limit(1); if (!error) { isSupabaseConnected = true; } else { dbErrorMsg = error.message; } } catch (e: any) { dbErrorMsg = e.message; } --- TXAPlayer Diagnostics Dashboard | Platinum Premium
Local Diagnostics Active

TXAPlayer Video Sandbox

Đường dẫn nguồn đang phát: {directM3u8}

Real-time Logger & CORS Diagnostician

Supabase Database: {isSupabaseConnected ? ( Connected ) : ( Error: {dbErrorMsg} )}
Client-Side CORS Test: Testing Link...
M3U8 Fetch Diagnostic: Awaiting Init
Local Dev Environment: localhost:4321
[SYSTEM] Diagnostics Board initialized. Ready to record sandbox events...

Technical Analysis: Why it fails on Vercel

Serverless Proxy Streaming Limitations
Khi deploy trên tphimx.vercel.app (Vercel serverless platform), player bị lỗi không load được phim khi qua cổng proxy /api/proxy-media vì các giới hạn nghiêm ngặt sau của Vercel Free Plan:
  • Payload Body Size Limit (4.5 MB): Các file phân đoạn phim HLS (.ts) thường có kích thước lớn từ 3 MB đến 10 MB. Khi proxy cố tải toàn bộ file này vào memory (response.arrayBuffer()) và trả về, Vercel sẽ ngay lập tức chặn đứng response vì vượt quá giới hạn 4.5 MB, trả về mã lỗi 502 (Bad Gateway) hoặc 504 (Gateway Timeout).
  • Serverless Execution Timeout (10 giây): Quá trình tải các file segment lớn từ server phim gốc thông qua serverless function thường mất nhiều thời gian. Nếu quá 10 giây, Vercel sẽ ngắt kết nối hoàn toàn.
  • Băng thông và Giới hạn Streaming: Serverless functions không được tối ưu để stream liên tục luồng video nặng.
Giải pháp tối ưu & chuyên nghiệp:
  1. Cho phép chạy Direct (Không Proxy): Hầu hết các server phim (như NguonC, KKPhim) đã bật sẵn CORS header (Access-Control-Allow-Origin: *). Hãy ưu tiên phát link gốc trực tiếp trên client để giải phóng hoàn toàn gánh nặng cho server.
  2. Reverse Proxy chuyên dụng: Thay vì dùng Astro endpoint (chạy serverless trên Vercel), hãy cài đặt một proxy nhẹ bằng Cloudflare Workers (miễn phí 100.000 requests/ngày, hỗ trợ streaming mượt mà) hoặc Nginx/Node.js Reverse Proxy chạy trên VPS giá rẻ.
  3. Sử dụng nguồn Embed (Iframe): Nguồn nhúng iframe chạy hoàn toàn trên sandbox độc lập của bên thứ ba, đảm bảo 100% không bị ảnh hưởng bởi CORS hay Vercel proxy.
Movie Metadata
{thumbUrl && (
{movieName}
)}
Tên Phim {movieName}
Tập phim demo Tập 1 - Nguồn HLS
Server luồng {firstServer?.server_name || '#Hà Nội (Vietsub)'}
Sandboxing API Status
Astro Mode: SSR / Dynamic
Astro Local Dev: active
Supabase Host: jjmzipyewddbepnelawf.supabase.co
Security Gatekeeper

Trang này được xây dựng độc lập và nằm ngoài bộ lọc Layout.astro. Tránh các lỗi kiểm duyệt Cookie, kiểm duyệt nguồn Referer hay chặn đứng do Zalo Gatekeeper, giúp việc lập trình và kiểm nghiệm txaplayer.js đạt hiệu quả tối đa.