ข้ามไปที่เนื้อหา
yt-dlp

ดาวน์โหลดคำบรรยาย YouTube — ตัวสร้างคำสั่ง yt-dlp

ประกอบคำสั่ง yt-dlp ที่บันทึกคำบรรยายเป็นไฟล์ .srt โดยไม่ต้องโหลดวิดีโอ

ไม่บังคับ ถ้าเว้นว่างไว้ คำสั่งจะจบด้วยคำว่า URL ให้คุณเติมเอง

คำสั่งของคุณ

yt-dlp --write-subs --convert-subs srt --sub-langs en --write-auto-subs --no-playlist -s 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
พื้นฐาน

เฉพาะเสียงจะดึงแทร็กเสียงออกมาและทิ้งภาพไป

วิดีโอและคุณภาพ

จำกัดความสูงไว้ yt-dlp ยังคงเลือกสตรีมที่ดีที่สุดในระดับนั้นหรือต่ำกว่า

ชนิดไฟล์ที่ใช้รวมสตรีมภาพกับเสียงที่แยกกันไว้ด้วยกัน

ตัวเลือกขั้นสูง (3)

ใช้แทนช่องเลือกคุณภาพ สำหรับคนที่รู้ไวยากรณ์ของฟอร์แมตอยู่แล้ว

บรรจุสตรีมใหม่โดยไม่เข้ารหัสใหม่ เร็วและไม่สูญเสียคุณภาพ

เข้ารหัสวิดีโอใหม่ ช้าและคุณภาพลด — ใช้เมื่อ remux ไม่ไหวเท่านั้น

เสียง

ชนิดไฟล์ที่เสียงจะถูกแปลงไป

VBR ให้อัตราส่วนขนาดต่อคุณภาพดีที่สุด ส่วน bitrate คงที่คาดเดาขนาดได้ง่ายกว่า

คำบรรยาย

การฝังจะใส่คำบรรยายไว้ในตัววิดีโอ ส่วนการบันทึกจะเขียนไฟล์ .srt แยกไว้ข้าง ๆ

คั่นด้วยจุลภาค ใส่ all ถ้าต้องการทุกภาษาที่มี

เพลย์ลิสต์และช่อง

จะทำอย่างไรเมื่อลิงก์เป็นทั้งวิดีโอและเพลย์ลิสต์ในเวลาเดียวกัน

ใช้ได้ทั้งช่วงและรายการ เช่น 1-10,15 หรือ -5::2 เพื่อเอาเว้นหนึ่งรายการนับจากท้าย

ตัวเลือกขั้นสูง (1)

จดว่าดาวน์โหลดอะไรไปแล้ว การรันซ้ำจึงข้ามรายการเหล่านั้น นี่คือวิธีทำให้ช่องหนึ่งอัปเดตตามต้นทางเสมอ

ช่วงและบท
ตัวเลือกขั้นสูง (2)

ช่วงเวลาแบบ *00:01:30-00:03:00 หรือชื่อบท เครื่องหมายดอกจันข้างหน้าหมายถึงเป็นเวลา

เมทาดาทาและภาพปก
ตัวเลือกขั้นสูง (3)
SponsorBlock

ตัดช่วงที่ชุมชนทำเครื่องหมายไว้ออกจากไฟล์ โดยอาศัยข้อมูลของ SponsorBlock

ตัวเลือกขั้นสูง (1)

คงช่วงเหล่านั้นไว้แต่ทำเครื่องหมายให้ เพื่อให้คุณข้ามเอง

ไฟล์และโฟลเดอร์

ชื่อฟิลด์เขียนไว้ใน %(...)s เครื่องหมายทับจะสร้างโฟลเดอร์

ตัวเลือกขั้นสูง (4)

ที่ที่จะเขียนไฟล์ลงไป ใช้ร่วมกับรูปแบบชื่อไฟล์ข้างบนจะได้โฟลเดอร์ย่อย

ความยาวสูงสุดของชื่อไฟล์ นับเป็นตัวอักษร

ตัวกรอง
ตัวเลือกขั้นสูง (5)

YYYYMMDD หรือวันที่แบบสัมพัทธ์อย่าง now-1month

YYYYMMDD หรือวันที่แบบสัมพัทธ์

ข้ามไฟล์ที่เล็กกว่านี้ รับค่าอย่าง 5M, 500K

ข้ามไฟล์ที่ใหญ่กว่านี้

จำนวนไฟล์ที่จะดาวน์โหลดก่อนหยุด

เครือข่าย

เช่น 2M หรือ 500K มีประโยชน์เมื่อคุณต้องการแบนด์วิดท์ที่เหลือไปทำอย่างอื่น

ตัวเลือกขั้นสูง (5)

ช่วยเร่งสตรีมที่แบ่งเป็นชิ้น เริ่มที่ 4 กำลังพอดี

จะลองชิ้นที่ล้มเหลวซ้ำกี่ครั้ง ใส่ infinite ก็ได้

ที่อยู่ proxy แบบ HTTP, HTTPS หรือ SOCKS

ทำให้คำขอดูเหมือนมาจากเบราว์เซอร์จริง เป็นวิธีแก้ที่ใช้กันเมื่ออยู่ ๆ ก็เจอ 403

การเข้าสู่ระบบและ cookies

อ่านเซสชันที่คุณล็อกอินไว้โดยตรง จำเป็นสำหรับเนื้อหาส่วนตัว จำกัดอายุ หรือเฉพาะสมาชิก

ตัวเลือกขั้นสูง (1)

ไฟล์ cookies.txt รูปแบบ Netscape ที่ส่งออกมาจากเบราว์เซอร์ของคุณ

สตรีมสด
ตัวเลือกขั้นสูง (2)

คอยตรวจจนกว่าสตรีมที่นัดไว้จะเริ่ม MIN-MAX คือช่วงวินาทีระหว่างการตรวจแต่ละครั้ง

วิธีเลี่ยงปัญหา
ตัวเลือกขั้นสูง (3)

เลิกใช้แล้ว ให้ใช้ --add-headers แทน ที่ยังเก็บไว้เพราะคู่มือเก่าจำนวนมากยังใช้อยู่

เลิกใช้แล้ว ให้ใช้ --add-headers แทน

ตัวเลือกเฉพาะของแต่ละเว็บ เช่น youtube:player_client=web

ผลลัพธ์และการดีบัก
ตัวเลือกขั้นสูง (2)
ล้างค่า

เอาคำบรรยายโดยไม่เอาวิดีโอ

โหมดจำลองการทำงานทำทุกอย่างยกเว้นเขียนไฟล์วิดีโอ คุณจึงได้คำบรรยายมาโดยไม่ต้องเสียเวลาโหลด การแปลงเป็น SRT ต้องใช้ ffmpeg

ถ้าไม่มีอะไรออกมาเลย เป็นไปได้สูงว่าวิดีโอนั้นไม่มีคำบรรยายที่คนทำ — คำบรรยายอัตโนมัติเป็นสวิตช์แยกต่างหาก และถ้าไม่เปิด yt-dlp ก็จะหาไม่เจอและไม่บอกอะไรด้วย

โหมดจำลองการทำงานคือสวิตช์ที่แบกหน้านี้ไว้ทั้งหมด ถ้าไม่เปิด yt-dlp จะดาวน์โหลดวิดีโอทั้งไฟล์แล้วแถมเซฟคำบรรยายติดไปด้วย ซึ่งกับไฟล์ยาวระดับภาพยนตร์แปลว่าย้ายข้อมูลเยอะมากเพื่อแทร็กข้อความเส้นเดียว เปิดแล้ว รอบรันจะดึงแต่เมทาดาทา เขียนไฟล์คำบรรยาย และไม่แตะวิดีโอเลย ต้นทุนคือโหมดจำลองการทำงานก็ข้ามการเขียน thumbnail กับคำอธิบายที่คุณอาจคุ้นเคยด้วย — อย่างพวกนั้นเป็นผลพลอยได้ของรอบวิดีโอ ไม่ใช่ของรอบคำบรรยาย

การเลือกภาษาคือจุดที่การดาวน์โหลดคำบรรยายเริ่มจุกจิก --sub-langs en หยิบเฉพาะแทร็กที่ติดแท็ก "en" เป๊ะ ๆ, en-orig คือชื่อที่ YouTube เรียกแทร็กอัตโนมัติ และ en.* เมื่อใช้เป็นแพตเทิร์นจับได้ทั้งสองแบบพร้อมเวอร์ชันย่อยแบ่งตามภูมิภาค หลายภาษารับเป็นลิสต์คั่นด้วยเครื่องหมายจุลภาค ถ้าวิดีโอมีทั้งแทร็กที่คนทำและแทร็กอัตโนมัติสำหรับภาษาเดียวกัน นั่นคือสองรายการแยกกัน และการดาวน์โหลดทั้งคู่เป็นผลลัพธ์ที่ถูกต้อง ไม่ใช่บั๊ก

ฟอร์แมตมีผลเมื่อไฟล์คำบรรยายกำลังจะไปลงโปรแกรมตัดต่อ: SRT คือรูปแบบแลกเปลี่ยนที่ปลอดภัย VTT พก styling ที่เครื่องเล่นบนเว็บแสดงให้เห็น และฟอร์แมต JSON3/_SRV ของ YouTube เองไว้ให้เครื่องอ่าน สวิตช์แปลงเป็น SRT รับมือกรณีทั่วไป ต้องใช้ ffmpeg และตัดสไตล์ทิ้งโดยเจตนา — โปรแกรมตัดต่ออยากได้ข้อความ ไม่ใช่มาร์กอัป ถ้าผลลัพธ์ดูเป็นไฟล์ว่าง เช็กว่าไฟล์มีตัวตนก่อนสรุปว่าการแปลงล้มเหลว: SRT ที่เป็นศูนย์ไบต์แปลว่าแทร็กนั้นว่างเปล่ามาแต่แรก

คำบรรยายอัตโนมัติสมควรได้รับคำเตือน มันคือการถอดเสียงโดยเครื่อง พร้อมทุกสิ่งที่ตามมา — คำพ้องเสียงผิด ไม่มีวรรคตอน ชื่อเฉพาะเละเป็นโพละ กับวิดีโอที่คุณอ่านภาษาของมันได้ มันคือดัชนีค้นหา แต่สิ่งที่คุณจะเอามาอ้างอิง แทร็กที่คนทำ (ถ้ามี) ต่างหากคือสิ่งที่ควรเก็บไว้ ไลฟ์สตรีมได้คำบรรยายอัตโนมัติสด ๆ ระหว่างถ่ายทอด เซฟได้หลังสตรีมจบเท่านั้น — ตัวเลือกการบันทึกไลฟ์บนเว็บนี้ไว้สำหรับภาพ ส่วนคำบรรยายของสตรีมที่จบแล้วดาวน์โหลดด้วยตัวเลือกคำบรรยายปกติได้เลย

คำถามที่พบบ่อย

โหลดคำบรรยายโดยไม่เอาวิดีโออย่างไร
เลือกตัวเลือก .srt แล้วเปิดจำลองการทำงาน มันจะข้ามการเขียนไฟล์วิดีโอแต่ยังบันทึกคำบรรยายให้
ทำไมไม่มีไฟล์คำบรรยายออกมาเลย
วิดีโอนั้นน่าจะไม่มีคำบรรยายที่คนทำ ให้เปิดคำบรรยายอัตโนมัติเพื่อเอาแบบที่เครื่องสร้าง
เลือกภาษาของคำบรรยายอย่างไร
คั่นด้วยจุลภาค เช่น en,th ใส่ all ถ้าต้องการทุกภาษาที่มี หรือใช้รูปแบบอย่าง en.* เพื่อเอาภาษาอังกฤษทุกสำเนียง
ขอเป็น SRT แทน VTT ได้ไหม
ได้ — ตัวเลือก .srt จะแปลงให้ และขั้นตอนนั้นต้องใช้ ffmpeg