จะเลือก MP4 ไฟล์ไหนจากโพสต์ X
X เผยแพร่วิดีโอเดียวกันในเรนดิชัน MP4 หลายไฟล์ ซึ่งมักมีความละเอียดเดียวกันแต่บิตเรตต่างกัน นี่จึงเป็นเหตุผลว่าแถวบนสุดของรายการไม่ใช่สิ่งที่คุณต้องการเสมอไป
วางลิงก์โพสต์ แล้วคุณจะได้เรนดิชันของวิดีโอตามที่ X แสดง เรียงจากความละเอียดสูงสุดก่อน ลำดับนั้นเป็นจุดเริ่มต้น ไม่ใช่คำตัดสิน ความละเอียดเป็นเพียงขนาดเฟรม และสองไฟล์ที่ขนาดเฟรมเดียวกันอาจต่างกันมหาศาลในปริมาณข้อมูลที่รองรับภาพแต่ละวินาที
ตัวประมวลผลอ่านอะไร
X ไม่ต้องเข้าสู่ระบบสำหรับเรื่องนี้ ตัวประมวลผลถามปลายทาง syndication สาธารณะของ X (cdn.syndication.twimg.com/tweet-result) สำหรับโพสต์ โดยใช้รูปแบบโทเคนที่ลงนามแบบเดียวกับที่ไทม์ไลน์ฝังใช้ คำตอบมีข้อความของโพสต์ ผู้เขียน และอาร์เรย์ videos ที่มีทุกระดับคุณภาพ MP4 ที่ X เก็บไว้
เก็บเฉพาะวิดีโอและ GIF บน X นั้น GIF แบบเคลื่อนไหวถูกส่งมาเป็นไฟล์ MP4 โพสต์ GIF จึงดาวน์โหลดเป็นวิดีโอที่ไม่มีเสียง ซึ่งก็คือสิ่งที่แพลตฟอร์มเก็บไว้จริง ๆ โพสต์ที่วิดีโอเดียวเป็นไลฟ์สด หรือโพสต์ที่ X ไม่คืน MP4 ที่รวมภาพและเสียงเลย จะตอบว่า no_video
ป้ายกำกับสร้างขึ้นอย่างไร
- หาก URL ของไฟล์ระบุขนาดเฟรม (
…/1280x720/…) ป้ายจะเป็นขนาดนั้น - หากไม่ระบุ ป้ายจะเป็นบิตเรตที่ปัดเป็น kbps
- หากไม่มีทั้งคู่ แถวนั้นจะเป็น
MP4ไปเลย - แถวถูกเรียงตามความกว้าง มากสุดก่อน ไม่ใช่ตามบิตเรต
ประเด็นสุดท้ายนั้นสำคัญ เรนดิชันของ X ไม่ได้ไล่ระดับอย่างราบรื่น โพสต์หนึ่งอาจมีไฟล์ 1280 พิกเซลที่บิตเรตต่ำ และไฟล์ 720 พิกเซลที่บิตเรตสูงกว่ามาก ไฟล์ที่กว้างกว่าแสดงบนหน้าจอใหญ่กว่า แต่ไฟล์ที่เล็กกว่าอาจดูดีกว่าเมื่อมีการเคลื่อนไหว เพราะมีบิตใช้ต่อพิกเซลมากกว่า
ตัวอย่างเปรียบเทียบ
| แถว | เฟรม | เหมาะกับอะไร |
|---|---|---|
| 1280×720 ที่บิตเรตต่ำ | เฟรมกว้าง ข้อมูลต่อพิกเซลน้อย | จอที่คุณต้องการเฟรมเต็มและยอมรับการเคลื่อนไหวที่นุ่มได้ |
| 720×720 ที่บิตเรตสูง | เฟรมสี่เหลี่ยมจัตุรัส ข้อมูลต่อพิกเซลมาก | การเคลื่อนไหวและรายละเอียดสะอาดกว่า แต่ภาพเล็กกว่า |
| 480×270 (เวอร์ชันมือถือ) | เฟรมเล็ก | เรนดิชันเดียวที่โพสต์เก่าบางอันมี ยอมรับขนาดนี้หรือข้ามไป |
กฎในทางปฏิบัติ: เลือกแถวที่กว้างที่สุด เว้นแต่แถวนั้นดูพร่ามัวชัดเจนเมื่อเทียบกับแถวถัดลงมา เมื่อไม่แน่ใจ ให้ดาวน์โหลดสองไฟล์แล้วเทียบขนาดไฟล์ ไฟล์ที่หนักเป็นสองเท่าที่ขนาดเฟรมครึ่งหนึ่งกำลังใช้บิตไปกับความเคลื่อนไหวและรายละเอียด
ทำไมดาวน์โหลดจึงเป็นการนำทาง ไม่ใช่แถบความคืบหน้า
ไฟล์วิดีโออยู่บน video.twimg.com ซึ่งไม่ส่งส่วนหัว CORS สำหรับคำขอแบบนี้ หน้าเว็บจึงอ่านไบต์ด้วยสคริปต์ไม่ได้ ปุ่มดาวน์โหลดจึงเปิดลิงก์ CDN โดยตรงและเบราว์เซอร์ของคุณบันทึกไฟล์ ข้อดีคือไม่มีส่วนใดของวิดีโอผ่านเว็บไซต์นี้ ข้อเสียคือไม่มีตัวนับเปอร์เซ็นต์
สิ่งที่ดาวน์โหลดไม่ได้
บัญชีที่ถูกป้องกัน โพสต์ที่ถูกลบ และโพสต์ที่จำกัดตามอายุจะคืนข้อผิดพลาด เพราะ X เองซ่อนโพสต์เหล่านั้นจากผู้อ่านทั่วไป ตัวประมวลผลไม่เข้าสู่ระบบและไม่ข้ามข้อจำกัดนั้นเลย URL ของ video.twimg.com วางเดี่ยว ๆ ไม่ได้เช่นกัน ตัวประมวลผลเริ่มจากลิงก์โพสต์ เพราะมีเพียงเพย์โหลดของโพสต์ที่ระบุเรนดิชัน
ฉบับย่อ
- แถวถูกเรียงตามความกว้างเฟรม ไม่ใช่ตามคุณภาพ
- สองเรนดิชันอาจมีความละเอียดเดียวกันแต่บิตเรตต่างกัน ไฟล์ที่หนักกว่ามักดูดีกว่า
- โพสต์ GIF มาเป็นไฟล์ MP4 เพราะนั่นคือสิ่งที่ X เก็บไว้
- เฉพาะโพสต์สาธารณะเท่านั้น โพสต์ที่ถูกป้องกันและถูกลบยังคงถูกซ่อน
- ไม่มีการจัดเก็บหรือเข้ารหัสใหม่ ไฟล์มาจาก CDN ของ X โดยตรง
คำถาม
ทำไมแถวบนสุดจึงไม่ได้ดูดีที่สุด
เพราะรายการเรียงตามความกว้างเฟรม และเฟรมที่กว้างกว่าไม่จำเป็นต้องเป็นไฟล์ที่หนักกว่า หากแถวที่เล็กกว่ามีบิตต่อพิกเซลมากกว่า ก็อาจดูสะอาดกว่าเมื่อมีการเคลื่อนไหว เทียบขนาดไฟล์ก่อนจะสรุปว่าแถวบนสุดชนะ
ดาวน์โหลดวิดีโอจากบัญชี X ที่ถูกป้องกันได้ไหม
ไม่ได้ X ไม่เปิดเผยโพสต์ที่ถูกป้องกันต่อผู้อ่านทั่วไป และเครื่องมือนี้ไม่เข้าสู่ระบบหรือข้ามข้อจำกัดนั้น โพสต์สาธารณะเท่านั้นที่ประมวลผลได้
ทำไมไม่มีการแสดงแถบความคืบหน้าสำหรับการดาวน์โหลดจาก X
`video.twimg.com` ไม่ส่งส่วนหัว CORS หน้าเว็บจึงอ่านไบต์วิดีโอไม่ได้ ปุ่มจะนำไปยังลิงก์ CDN และเบราว์เซอร์ของคุณดาวน์โหลดไฟล์เอง