เวอร์ชันปัจจุบัน v7.3.0 (Professional Edition)
M2F Player Engine ถูกออกแบบมาให้เป็น Integrated Content Delivery Bridge ที่ทำหน้าที่เชื่อมโยงระหว่างฐานข้อมูลภาพยนตร์ระดับโลก (TMDB), ระบบจัดการทรัพยากรวิดีโอ (Multi-Source Database) และเครือข่ายกระจายข้อมูล (CDN) เข้าด้วยกันอย่างเป็นระบบ เพื่อช่วยลดขั้นตอนที่ยุ่งยากในการจัดการไฟล์และ Metadata ของผู้ดูแลเว็บไซต์ลงกว่า 90%
เราให้ความสำคัญกับ Universal Accessibility เพื่อให้แน่ใจว่าคอนเทนต์ของคุณจะเข้าถึงผู้ชมได้ทุกที่
เครื่องเล่นรองรับการทำงานบนเบราว์เซอร์ของ LG (WebOS), Samsung (Tizen) และ Android TV โดยมีการปรับแต่ง UI ให้รองรับการควบคุมผ่าน Remote Control (D-Pad Navigation) ในเบื้องต้น
การเรียกใช้งานพื้นฐานทำได้ผ่านทางรหัส TMDB ID ซึ่งเป็น Primary Key ในการดึงข้อมูลจาก Server ของเรา
เมื่อคุณส่ง Request ไปที่ Endpoint ระบบจะทำการค้นหา Mapping ล่าสุดในฐานข้อมูล หากเป็นหนังใหม่ที่เพิ่งเข้าฉาย ระบบจะพยายามค้นหา Source ที่เสถียรที่สุดให้โดยอัตโนมัติ
ระบบซีรีส์ของ M2F ออกแบบมาเพื่อจัดการโครงสร้างข้อมูลที่ซับซ้อน (Multi-Season, Multi-Episode) ได้อย่างมีประสิทธิภาพ
เนื่องจากรหัส ID ของภาพยนตร์และซีรีส์ใน TMDB อาจมีการซ้อนทับกัน (Duplicate ID) การใส่ tv นำหน้า (เช่น id=tv231260) จึงเป็นการยืนยันกับ Engine ว่าให้โหลด Series Manifest แทน Movie Player
* หากไม่ระบุ ss และ ep ระบบจะเริ่มเล่น Season 1 Episode 1 ให้อัตโนมัติ
พารามิเตอร์เหล่านี้ช่วยให้คุณปรับแต่งพฤติกรรมของเครื่องเล่นให้เหมาะสมกับเว็บไซต์ของคุณได้โดยไม่ต้องเขียนโค้ดเพิ่มเติม
| Parameter | ประเภท | คำอธิบาย |
|---|---|---|
| id | String | รหัส TMDB ID (ใส่ 'tv' นำหน้าสำหรับซีรีส์) |
| ss | Int | ระบุ Season Number (เช่น 1, 2, 3) หากระบุผิดพลาดระบบจะ Fallback ไปที่ Season 1 |
| ep | Int | (เฉพาะซีรีส์) ลำดับตอนที่ต้องการเริ่มเล่น |
| logo | URL | URL ของไฟล์รูปภาพ (แนะนำ .png โปร่งใส) ต้องเข้ารหัส urlencode() ก่อนส่งมาเสมอ |
| theme | String | ระบุ Color Name เพื่อเปลี่ยนสี Primary ของ UI (ปุ่ม Play, Progress Bar, Volume) |
| lg | 0 / 1 | Persistent Logo Mode: หากเป็น 1 โลโก้จะไม่จางหายไปเมื่อวิดีโอเริ่มเล่น |
ระบบการสร้างธีมของเราทำงานผ่านระบบ CSS Variables ทำให้การสลับสีทำได้ทันทีโดยไม่ต้องดาวน์โหลดไฟล์ CSS ใหม่
การใช้ธีมสีเดียวกับเว็บไซต์หลักของคุณช่วยลด Visual Friction ทำให้ผู้ชมรู้สึกว่าเครื่องเล่นเป็นส่วนหนึ่งของเว็บไซต์ ไม่ได้เป็นเพียงส่วนเสริมที่นำมาจากภายนอก
iFrame โดยธรรมชาติจะไม่สามารถคำนวณความสูงตามอัตราส่วนภาพได้เอง แนะนำให้ใช้เทคนิค padding-bottom เพื่อรักษาสัดส่วน 16:9 (Aspect Ratio) ในทุกขนาดหน้าจอ
/* ตัวอย่างการทำ Responsive Wrapper */
.player-wrapper {
position: relative;
padding-bottom: 56.25%; /* 16:9 */
height: 0;
overflow: hidden;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
}
.player-wrapper iframe {
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
}
เราเข้าใจว่า "แบรนด์" สำคัญสำหรับคุณ ระบบ M2F จึงเปิดโอกาสให้คุณฝังโลโก้ลงในตัววิดีโอผ่าน Layer พิเศษ
เมื่อเปิดใช้งาน &lg=1 ระบบจะทำการ Override การตั้งค่าจางหายของ UI ทำให้โลโก้ของคุณแสดงผลอยู่ตลอดเวลา สิ่งนี้ช่วยป้องกันการถูก "ขโมยลิงก์" ไปใส่ในเว็บอื่นได้ในระดับหนึ่ง เนื่องจากชื่อเว็บของคุณจะปรากฏอยู่ในทุกวินาทีของการรับชม
ปัญหาเรื่อง "หนังเล่นไม่ได้" คือปัญหาอันดับ 1 ของคนทำเว็บหนัง M2F จึงพัฒนาระบบ Fail-Safe ขึ้นมาจัดการโดยเฉพาะ
สำหรับการสร้างเว็บไซต์ระดับสเกลใหญ่ การจัดการข้อมูลผ่าน Custom Post Type และ Post Meta คือวิธีที่ยั่งยืนที่สุด
MasVideo เป็น Framework สำหรับวิดีโอที่ทรงพลัง แต่มักจะมาพร้อมกับเครื่องเล่นมาตรฐานที่ไม่ตอบโจทย์พากย์ไทย การเปลี่ยนมาใช้ M2F Engine จะช่วยยกระดับประสบการณ์ผู้ชมได้อย่างมาก
wp_postmeta โดยมี post_id เป็นตัวเชื่อม
คุณต้องดึงค่าจาก Meta Key มาตรฐานของ MasVideo มาประกอบเป็น URL สำหรับ iFrame:
masvideos_tmdb_id : เลขไอดีจากฐานข้อมูลกลางmasvideos_tmdb_type : ตัวแปรบ่งชี้ประเภท (movie / tv_series)masvideos_video_type : เก็บประเภทว่าเป็น 'movie' หรือ 'tv'
function get_m2f_player_url($post_id) {
$tmdb_id = get_post_meta($post_id, 'masvideos_tmdb_id', true);
$type = get_post_meta($post_id, 'masvideos_video_type', true); // 'movie' หรือ 'tv'
if (!$tmdb_id) return '';
// ตรวจสอบความสัมพันธ์: ถ้าเป็น TV Series ให้เติม 'tv' นำหน้า
$final_id = ($type == 'tv' || $type == 'tv_series') ? 'tv' . $tmdb_id : $tmdb_id;
return "https://player.m2fmovie.com/embed/movie/?id=" . $final_id;
}
ใน WordPress Theme ของคุณ (เช่นไฟล์ single-video.php) ให้ทำการสอดแทรกโค้ดเรียกใช้งานในตำแหน่งที่ต้องการแสดงเครื่องเล่น:
* โค้ดนี้จะดึงค่าอัตโนมัติจากโพสต์ปัจจุบันที่คุณเปิดอยู่
<?php
$player_url = get_m2f_player_url(get_the_ID());
if ($player_url): ?>
<div class="video-container">
<div class="player-wrapper">
<iframe src="<?php echo esc_url($player_url); ?>&lg=1&theme=red"
width="100%" height="100%" frameborder="0"
allowfullscreen scrolling="no"></iframe>
</div>
<div class="video-meta">
<h1><?php the_title(); ?></h1>
<p>กำลังรับชมผ่านระบบ M2F Engine</p>
</div>
</div>
<?php endif;
?>
ปลั๊กอิน ACF ช่วยให้คุณสร้างอินเตอร์เฟสในหลังบ้าน WordPress เพื่อให้แอดมิน (หรือทีมอัปเดตหนัง) สามารถเลือกปรับแต่งเครื่องเล่นได้ทีละเรื่อง
| สิ่งที่เกิดขึ้น | หน้าที่ของ | |
|---|---|---|
| 1. Database Query | movie_tmdb_id (Number) |
ระบุไอดีหนังจาก TMDB |
| 2. Logic Check | player_theme (Select) |
เลือกธีมสีแยกตามประเภทหนัง (เช่น หนังผีสีม่วง, หนังบู๊สีแดง) |
| 3. API Call | is_vip_only (True/False) |
ใช้ครอบ iFrame เพื่อเช็คสิทธิ์สมาชิกก่อนแสดงผล |
หน้าเว็บที่มีเครื่องเล่นวิดีโอจำนวนมากอาจทำให้คะแนน Lighthouse ตกได้ เราจึงแนะนำเทคนิคเหล่านี้
แทนที่จะโหลดเครื่องเล่นทันทีที่เปิดหน้า (ซึ่งจะไปแย่ง Bandwidth ของรูป Poster) ให้คุณใช้ JavaScript ตรวจสอบว่าผู้ใช้เลื่อนหน้าจอมาถึงส่วนของวิดีโอหรือยัง
loading="lazy" เสมอ (รองรับในเบราว์เซอร์สมัยใหม่แล้ว)<link rel="preconnect" href="https://player.m2fmovie.com"> ในส่วน Header ของเว็บคุณ เพื่อทำ DNS Lookup ล่วงหน้าการทำ SEO สำหรับวิดีโอ (Video SEO) ไม่ใช่เพียงแค่การใส่ Keyword แต่คือการทำให้ Google Bot เข้าใจว่าหน้าเว็บของคุณมีวิดีโอที่เกี่ยวข้อง ซึ่งจะช่วยให้เว็บไซต์ของคุณปรากฏในรูปแบบ Rich Snippets (มีรูปภาพพรีวิววิดีโอในผลการค้นหา) และปรากฏในแท็บ Videos ของ Google Search
วิธีที่ Google แนะนำมากที่สุดคือการใช้ JSON-LD ร่วมกับ Schema มาตรฐานของ Schema.org/VideoObject โดยคุณควรนำข้อมูลที่ดึงมาจาก TMDB มาใส่ในฟิลด์ต่างๆ ดังนี้:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "[ชื่อหนังภาษาไทย หรือ ชื่ออังกฤษ]",
"description": "[เรื่องย่อสั้นๆ จาก TMDB]",
"thumbnailUrl": [
"https://image.tmdb.org/t/p/w780/[poster_path]",
"https://image.tmdb.org/t/p/w1280/[backdrop_path]"
],
"uploadDate": "2026-05-15T08:00:00+07:00",
"duration": "PT1H44M",
"contentUrl": "https://player.m2fmovie.com/embed/movie/?id=[TMDB_ID]",
"embedUrl": "https://player.m2fmovie.com/embed/movie/?id=[TMDB_ID]",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": { "@type": "WatchAction" },
"userInteractionCount": 15420
}
}
</script>
เพื่อให้การแชร์ลิงก์ไปยัง Facebook หรือ LINE ดูเป็นมืออาชีพและรองรับการเล่นวิดีโอพรีวิว (ถ้าแพลตฟอร์มอนุญาต) ควรระบุ Meta Tags ดังนี้:
<!-- Open Graph Tags --> <meta property="og:type" content="video.other" /> <meta property="og:video" content="https://player.m2fmovie.com/embed/movie/?id=1418297" /> <meta property="og:video:secure_url" content="https://player.m2fmovie.com/embed/movie/?id=1418297" /> <meta property="og:video:type" content="text/html" /> <meta property="og:video:width" content="1280" /> <meta property="og:video:height" content="720" />
แม้ Google จะสามารถอ่านเนื้อหาใน iFrame ได้บ้าง แต่การใส่ title ที่มีความหมายจะช่วยทั้งเรื่อง SEO และ Accessibility สำหรับผู้พิการ:
video-sitemap.xml เพื่อแจ้ง URL วิดีโอทั้งหมดให้ Google ทราบโดยตรงผ่าน Search Consoleหากคุณกำลังพัฒนาแอปพลิเคชันด้วย React Native, Flutter หรือ Native Swift/Kotlin
allowsInlineMediaPlayback บน iOS WebViewระบบของเราใช้ Multi-layer Caching เพื่อให้แน่ใจว่าการตอบสนองจะอยู่ที่ระดับมิลลิวินาที (ms)
หากพบความผิดปกติในการแสดงผล ให้ตรวจสอบตามหัวข้อดังต่อไปนี้
การตรวจสอบพารามิเตอร์: ตรวจสอบให้แน่ใจว่า URL ที่ใช้เรียก iFrame ไม่มีพารามิเตอร์ที่ซ้ำซ้อนกัน หรือมีการเขียนรูปแบบพารามิเตอร์ผิดพลาด เช่น การใช้เครื่องหมาย ? หรือ & ไม่ถูกต้อง ซึ่งจะทำให้สคริปต์ประมวลผลฝั่ง Server หยุดทำงานและไม่สามารถสร้าง Manifest สำหรับเล่นวิดีโอได้
Browser Extensions & AdBlockers: ปัญหาจอดำส่วนใหญ่มักเกิดจาก AdBlockers หรือส่วนขยายที่เกี่ยวข้องกับความปลอดภัย (Privacy Extensions) ที่บล็อกการโหลดไฟล์ JavaScript ของเครื่องเล่น แนะนำให้ทดสอบเปิดในโหมดไม่ระบุตัวตน (Incognito Mode) เพื่อตรวจสอบว่ามี Extension ตัวใดขัดขวางการทำงานหรือไม่
Hardware Acceleration: ในบางเบราว์เซอร์ การเปิด Hardware Acceleration อาจขัดแย้งกับไดรเวอร์การ์ดจอในบางรุ่น ทำให้ไม่สามารถถอดรหัสวิดีโอแบบ HLS ได้ ลองปิดฟีเจอร์นี้ในหน้าตั้งค่าของเบราว์เซอร์ (Settings > System) เพื่อทดสอบความเข้ากันได้
ความเสถียรของอินเทอร์เน็ต: เมื่อความเร็วอินเทอร์เน็ตไม่คงที่ ระบบ Adaptive Bitrate จะพยายามลดคุณภาพวิดีโอเพื่อรักษาความต่อเนื่องในการรับชม แต่อาจเกิดความคลาดเคลื่อนของ Buffer เสียงและภาพชั่วคราวในจังหวะที่มีการสลับระดับคุณภาพ การรีเฟรชหน้าจอจะช่วยล้างและสร้าง Buffer ใหม่ที่สมบูรณ์ได้
ทรัพยากรเครื่อง (System Resources): หากเครื่องทำงานหนักเกินไป CPU/GPU อาจประมวลผลการถอดรหัสวิดีโอไม่ทันภาพ ทำให้เสียงเดินนำหน้าภาพ แนะนำให้ปิดโปรแกรมหรือแท็บเบราว์เซอร์ที่ไม่จำเป็นเพื่อให้เครื่องสามารถประมวลผลการสตรีมได้อย่างเต็มประสิทธิภาพ
tv และหมายเลข Season/Episodeการตรวจสอบ Prefix: หัวใจสำคัญของระบบซีรีส์คือพารามิเตอร์ id ต้องเริ่มต้นด้วยตัวอักษร tv ตัวเล็กเสมอ (เช่น id=tv231260) หากใส่เพียงตัวเลข ระบบจะเข้าใจว่าเป็นภาพยนตร์เรื่องเดียวและจะไม่โหลดรายการตอนสำหรับซีรีส์
หมายเลข Season และ Episode: ตรวจสอบว่าหมายเลขที่ระบุในพารามิเตอร์ ss และ ep มีอยู่จริงในฐานข้อมูล TMDB หรือไม่ หากระบุหมายเลขที่ไม่มีอยู่จริง ระบบอาจแสดงผลผิดพลาดหรือย้อนกลับไปตอนแรกสุดให้โดยอัตโนมัติ
การดีเลย์ของแคชข้อมูล (Data Delay): สำหรับซีรีส์ใหม่ ข้อมูลใน TMDB อาจยังไม่ถูกดึงมายังระบบแคชของเรา แแนะนำให้รอรอบการอัปเดตข้อมูล (Cache Sync) ซึ่งโดยปกติจะใช้เวลา 12-24 ชั่วโมงในการดึงข้อมูลตอนใหม่ๆ มาแสดงผลให้ครบถ้วน