ePlayHD Match Player — ইনস্টলেশন গাইড
========================================

ফাইল স্ট্রাকচার:
  config.php     -> API URL ও ক্যাশ সেটিংস
  functions.php  -> ডাটা fetch + ক্যাশিং হেল্পার
  index.php      -> হোমপেজ (সব ম্যাচ লিস্ট)
  player.php     -> ফুল-পেজ প্লেয়ার (হেডার/ফুটার ছাড়া)
  assets/        -> Shaka Player লাইব্রেরি (self-hosted, CDN লাগবে না)
  cache/         -> API রেসপন্স এখানে ক্যাশ হবে (write permission 755 লাগবে)

cPanel এ ইনস্টল করার ধাপ:
1. এই ফাইল/ফোল্ডারগুলো (config.php, functions.php, index.php, player.php,
   assets/, cache/ সবগুলো) আপনার domain/subdomain এর public_html এ আপলোড করুন
   (উদাহরণ: public_html/player/ এর ভিতরে)। assets/ ফোল্ডার বাদ দিলে প্লেয়ার
   কাজ করবে না, কারণ Shaka Player লাইব্রেরি এখন এখান থেকেই লোড হয়।
2. File Manager থেকে cache/ ফোল্ডারের Permission 755 (বা প্রয়োজনে 775) করুন
   যাতে PHP এখানে লিখতে পারে।
3. ব্রাউজারে index.php ভিজিট করুন — সব ম্যাচ দেখাবে।
4. প্রতিটা ম্যাচের নিচে সার্ভার বাটনে ক্লিক করলে নতুন ট্যাবে player.php খুলবে
   (URL ফরম্যাট: player.php?m=MATCH_ID&s=SERVER_ID)

কনফিগারেশন (config.php তে):
  - CACHE_TTL: কত সেকেন্ড পরপর নতুন করে API কল হবে (ডিফল্ট 15 সেকেন্ড)।
    এটা কম রাখলে ট্রাফিক বেশি হলে EntryProcess (EP) limit শেষ হতে পারে,
    তাই 10-20 সেকেন্ডের মধ্যে রাখাই ভালো।
  - WATERMARK_URL: প্লেয়ারের উপর যে লোগো বসবে (ফুলস্ক্রিনেও থাকবে)।
  - PLAYER_POSTER: ভিডিও লোড হওয়ার আগে যে poster image দেখাবে।

যা ফিক্স করা হয়েছে (v4):
  - অতিরিক্ত বাফারিং/বারবার স্টল হওয়ার সমস্যা ফিক্স করা হয়েছে। আগে
    "low-latency" মোডে মাত্র ৩ সেকেন্ড বাফার রাখা হতো এবং সামান্য নেটওয়ার্ক
    হিঁচকি লাগলেই জোর করে লাইভ-এজে জাম্প করানো হতো — এতে বাফার খালি হয়ে
    বারবার স্টল হওয়ার লুপ তৈরি হচ্ছিল। এখন:
      • বাফার cushion বাড়ানো হয়েছে (bufferingGoal 20s, rebufferingGoal 6s,
        bufferBehind 30s) যাতে নেটওয়ার্ক ওঠানামা করলেও প্লেব্যাক স্মুথ থাকে।
      • ছোটখাটো বাফারিং এ আর জোর করে লাইভ-এজে জাম্প করানো হয় না; Shaka
        নিজেই স্বাভাবিকভাবে বাফার রিকভার করে।
      • ড্রিফট-কারেকশন এখন অনেক কম aggressive — শুধু ৩০ সেকেন্ডের বেশি
        পিছিয়ে গেলে (যেমন ট্যাব ব্যাকগ্রাউন্ডে অনেকক্ষণ ছিল) তবেই লাইভে
        ফিরিয়ে আনবে।
    ট্রেড-অফ: এখন লাইভ থেকে কয়েক সেকেন্ড (~৫-১৫ সে.) পিছিয়ে থাকতে পারে,
    কিন্তু বাফারিং অনেক কম হবে। খেলার স্কোরের জন্য এই সামান্য ডিলে সাধারণত
    কোনো সমস্যা না।

যা ফিক্স করা হয়েছে (v3):
  - "Shaka Player লাইব্রেরি লোড হয়নি" এরর আসছিল কারণ jsDelivr CDN আপনার
    নেটওয়ার্ক থেকে ধীরে/ব্লকড ছিল। এখন Shaka Player লাইব্রেরি (JS+CSS)
    সরাসরি assets/ ফোল্ডারে self-hosted, কোনো বাইরের CDN কল করা হয় না।
    অবশ্যই assets/ ফোল্ডারটাও player.php এর পাশাপাশি আপলোড করবেন।

যা ফিক্স করা হয়েছে (v2):
  - আগে Shaka Player CDN ভার্সন (4.11.2) ভুলভাবে পিন করা ছিল যেটা jsDelivr এ
    ঠিকভাবে থাকে না, ফলে লাইব্রেরিই লোড হচ্ছিল না আর "স্ট্রিম লোড করা যায়নি"
    জেনেরিক এরর দেখাচ্ছিল। এখন verified ভার্সন 4.16.12 ব্যবহার হচ্ছে।
  - এখন এরর মেসেজে আসল কারণ (Shaka error code/category/message) দেখানো হয়,
    তাই সমস্যা হলে সহজে বোঝা যাবে কেন।
  - DRM clear-key এখন ৩টা সোর্স থেকে ফলব্যাক সহ বের করা হয়:
    ১) server.drm.clearKeys (API থেকে সরাসরি structured DRM)
    ২) server.drmKey (JSON স্ট্রিং ফলব্যাক)
    ৩) URL এর ভিতর pipe(|) ফরম্যাটে embedded drmScheme/drmLicense থাকলে

গুরুত্বপূর্ণ নোট:
  - DRM (clearkey) ডাটা সরাসরি API রেসপন্সের "drm" ফিল্ড থেকে নেওয়া হয়,
    আলাদা করে পার্স করার দরকার নেই।
  - যদি কোনো স্ট্রিম সার্ভার corsOk:false হয় এবং ব্রাউজার থেকে সরাসরি
    লোড না হয়, তাহলে player.php এর STREAM_URL কে একটা proxy.php এর
    মাধ্যমে পাস করাতে হবে (এই ভার্সনে proxy অন্তর্ভুক্ত নেই, প্রয়োজনে
    বলবেন বানিয়ে দিব)।
  - player.php তে কোনো হেডার/ফুটার/নেভিগেশন নেই — এটা সম্পূর্ণ ফুল-পেজ
    স্ট্যান্ডঅ্যালোন প্লেয়ার, ঠিক যেমনটা চাওয়া হয়েছিল।
