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

สรุปคำสั่ง yt-dlp

คำสั่ง yt-dlp ที่ควรจำไว้: เลือกคุณภาพ แยก MP3 เพลย์ลิสต์ คำบรรยาย cookies และวิธีแก้ข้อผิดพลาดที่เจอกันจริง

เขียนอ้างอิงจาก yt-dlp 2026.07.21 ตัวเลือกมีการเพิ่มและเปลี่ยนชื่อระหว่างรุ่น จึงควรตรวจรุ่นของคุณด้วย yt-dlp --version

การดาวน์โหลดพื้นฐาน

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

yt-dlp URL

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

yt-dlp -F URL

คอลัมน์ซ้ายสุดของตารางนั้นคือ id ของรูปแบบ ซึ่งคุณเรียกใช้โดยตรงได้ในภายหลัง id สองตัวที่เชื่อมด้วย + หมายถึง "โหลดทั้งสองแล้วรวมเข้าด้วยกัน"

yt-dlp -f 137+140 URL

คุณภาพและการเลือกรูปแบบ

id รูปแบบที่ใส่ตายตัวจะพังทันทีที่เว็บเปลี่ยนชั้นการเข้ารหัสของตัวเอง นิพจน์ตัวเลือกคือแบบที่อยู่ทน คือบอกคุณสมบัติที่คุณต้องการ แล้วปล่อยให้ yt-dlp หาสิ่งที่ตรงที่สุดเอง

yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URL

อ่านแบบนี้ สตรีมวิดีโอที่ดีที่สุดซึ่งสูงไม่เกิน 1080 บวกกับเสียงที่ดีที่สุด และถ้าคู่นั้นไม่มีอยู่ ก็เอาไฟล์เดี่ยวที่ดีที่สุดซึ่งสูงไม่เกิน 1080 ตัวสำรองหลังเครื่องหมายทับนี่แหละที่ทำให้คำสั่งไม่ล้มเหลวบนเว็บที่เผยแพร่เฉพาะสตรีมแบบโปรเกรสซีฟ

การรวมสองสตรีมทำให้ yt-dlp ต้องเลือกคอนเทนเนอร์ MP4 เล่นได้ทุกที่ ส่วน MKV รับได้ทุกอย่างที่ใส่เข้าไป ซึ่งเริ่มสำคัญเมื่อมีซับไตเติลและบทเข้ามาเกี่ยว

yt-dlp -f "bv*+ba" --merge-output-format mp4 URL

ถ้าอยากบอกความชอบมากกว่าจะกำหนดเพดานตายตัว ให้เรียงลำดับแทนการกรอง วิธีนี้จะให้ความสำคัญกับ 1080p และ MP4 แต่ยังโหลดอะไรมาได้อยู่เมื่อไม่มีทั้งสองอย่าง

yt-dlp -S "res:1080,ext:mp4" URL

เสียงและ MP3

การแยกเสียงต้องใช้ ffmpeg นี่คือสาเหตุที่พบบ่อยที่สุดที่คำสั่งข้างล่างล้มเหลวบนเครื่องที่เพิ่งติดตั้งใหม่

yt-dlp -x --audio-format mp3 URL

การใส่ปกอัลบั้มและแท็กเพิ่มอีกแค่สอง flag แต่ทำให้ผลลัพธ์ใช้งานได้จริงในคลังเพลง แทนที่จะเป็นโฟลเดอร์ที่มีแต่ไฟล์ไร้ชื่อ

yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata URL

--audio-quality 0 หมายถึงบิตเรตแปรผันที่การตั้งค่าดีที่สุด ไม่ใช่ "คุณภาพเป็นศูนย์" ถ้าต้องการบิตเรตคงที่ก็ระบุไปเลย --audio-quality 320K

เมื่อต้นฉบับเป็น AAC หรือ Opus อยู่แล้ว การแปลงเป็น MP3 คือการเข้ารหัสใหม่และสูญเสียคุณภาพไปเปล่า ๆ เก็บของเดิมไว้ทั้งเร็วกว่าและดีกว่า

yt-dlp -x --audio-format best URL

ซับไตเติล

ซับไตเติลที่ฝังไว้จะติดไปกับไฟล์ ส่วนไฟล์ .srt แยกต่างหากนั้นแก้ไขง่ายกว่าและส่งต่อให้เครื่องมืออื่นได้ง่ายกว่า

yt-dlp --embed-subs --sub-langs en URL
yt-dlp --write-subs --sub-langs en,vi --convert-subs srt URL

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

yt-dlp --write-auto-subs --sub-langs en --convert-subs srt --skip-download URL

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

URL ของ YouTube มักเป็นของทั้งวิดีโอและเพลย์ลิสต์พร้อมกัน และ yt-dlp ต้องเดาว่าคุณหมายถึงอันไหน บอกให้ชัดไปเลยดีกว่า

yt-dlp --no-playlist URL
yt-dlp --yes-playlist URL

สำหรับงานยาว ๆ ไฟล์บันทึกการโหลดสำคัญกว่าตัวเลือกอื่นใดในหน้านี้ เพราะมันจดไว้ว่าโหลดอะไรไปแล้ว การรันซ้ำจึงไปต่อจากจุดที่หยุด แทนที่จะเริ่มใหม่หมด

yt-dlp --yes-playlist -i \
  --download-archive archive.txt \
  -o "%(playlist_index)02d - %(title)s.%(ext)s" \
  URL

เมื่อใช้ร่วมกับ -i วิดีโอที่ถูกล็อกภูมิภาคหรือถูกลบไปหนึ่งรายการจะไม่ทำให้อีกสองร้อยรายการหยุดกลางคัน ถ้าอยากเอาแค่บางส่วนแทนทั้งหมด -I รับทั้งช่วงและรายการ -I 1:10, -I "1,3,7-10"

คลิป บท และช่วงผู้สนับสนุน

คุณโหลดแค่บางส่วนของวิดีโอแทนที่จะโหลดทั้งเรื่องได้ เครื่องหมายดอกจันข้างหน้าบอกว่านี่คือเวลา ไม่ใช่ชื่อบท และเครื่องหมายคำพูดจำเป็นต้องมี เพราะ bash จะขยาย * เปล่า ๆ ให้กลายเป็นชื่อไฟล์ของคุณ

yt-dlp --download-sections "*00:01:30-00:03:00" URL

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

yt-dlp --sponsorblock-remove default URL
yt-dlp --sponsorblock-mark all --embed-chapters URL

การเข้าสู่ระบบ คุกกี้ และการตรวจบอท

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

yt-dlp --cookies-from-browser chrome URL
yt-dlp --cookies-from-browser "firefox:Profile 1" URL

ปิดเบราว์เซอร์ก่อน เพราะ Chrome และ Edge ล็อกฐานข้อมูลคุกกี้ไว้ขณะทำงานอยู่ และข้อความแจ้งข้อผิดพลาดที่ออกมาก็ไม่ได้บอกเรื่องนี้

เมื่อเว็บเริ่มตอบกลับด้วย 403 หรือขอให้ยืนยันว่าคุณไม่ใช่บอท การทำให้คำขอดูเหมือนมาจากเบราว์เซอร์จริงมักจะผ่านได้

yt-dlp --impersonate chrome URL

ชื่อไฟล์และโฟลเดอร์

เทมเพลตผลลัพธ์ควบคุมทั้งสองอย่าง เครื่องหมายทับจะสร้างไดเรกทอรี ดังนั้นเทมเพลตเดียวจัดวางคลังทั้งคลังได้

yt-dlp -o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s.%(ext)s" URL

ชื่อเรื่องมักมีอักขระที่ระบบไฟล์บางระบบไม่ยอมรับ --restrict-filenames จะลดทุกอย่างลงเหลือ ASCII ล้วน ซึ่งคุ้มค่าสำหรับอะไรก็ตามที่จะย้ายไปมาระหว่างเครื่อง

ในไฟล์ .bat ของ Windows ทุก % ต้องเขียนซ้ำสองครั้ง %%(title)s ไม่อย่างนั้นตัวแปลคำสั่งแบบแบตช์จะกินเทมเพลตไปก่อนที่ yt-dlp จะได้เห็น ตัวสร้างคำสั่งจัดการเรื่องนี้ให้คุณแล้วเมื่อคุณดาวน์โหลดไฟล์ .bat

ข้อผิดพลาดที่คุณจะเจอจริง ๆ

ffmpeg not found

ทุกอย่างที่รวม แปลง ฝัง หรือตัด ล้วนต้องมี ffmpeg อยู่ใน PATH ติดตั้งมันแล้วยืนยันด้วย ffmpeg -version

Sign in to confirm you are not a bot

ลอง --impersonate chrome ก่อน แล้วค่อย --cookies-from-browser ถ้าไม่ได้ทั้งคู่ ให้อัปเดต yt-dlp เพราะการตรวจแบบนี้เปลี่ยนบ่อยเป็นพิเศษ และตัวแก้มักมาในเวอร์ชันใหม่ภายในไม่กี่วัน

Unable to extract player response

เกือบทุกครั้งเป็นเพราะ yt-dlp เก่าเกินไป อัปเดตมันก่อนจะไปแก้อย่างอื่น yt-dlp -U หรือใช้ตัวจัดการแพ็กเกจถ้าคุณติดตั้งมาแบบนั้น

Requested format is not available

ตัวเลือกของคุณไม่ตรงกับอะไรเลย รัน -F เพื่อดูว่ามีอะไรอยู่บ้าง และควรใช้การเรียงลำดับ (-S) มากกว่าตัวกรองแบบตายตัว จะได้มีตัวสำรองเสมอ

HTTP Error 403

URL นั้นถูกลงนามไว้สำหรับเซสชันอื่นหรือภูมิภาคอื่น ลองรันใหม่ด้วยคุกกี้ชุดใหม่ เพิ่ม --impersonate chrome หรือลอง --geo-bypass

การทำให้ yt-dlp ทันสมัยอยู่เสมอ

ปัญหาที่มีคนแจ้งเข้ามา แก้ได้ด้วยการอัปเดตมากกว่าด้วย flag ใด ๆ ถ้าคุณติดตั้งแบบไฟล์เดี่ยว

yt-dlp -U

ถ้าติดตั้งผ่านตัวจัดการแพ็กเกจ ให้อัปเดตด้วยวิธีเดียวกับที่ติดตั้ง เพราะ -U จะปฏิเสธ และมันปฏิเสธถูกแล้ว

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

แก้ "Sign in to confirm you are not a bot" อย่างไร
ลอง --impersonate chrome ก่อน แล้วค่อย --cookies-from-browser chrome เพื่อใช้เซสชันที่ล็อกอินไว้ ถ้าทั้งสองไม่ได้ผลก็อัปเดต yt-dlp — การตรวจนี้เปลี่ยนบ่อยและตัวแก้มักออกภายในไม่กี่วัน
"Unable to extract player response" หมายความว่าอะไร
เว็บต้นทางเปลี่ยนอะไรบางอย่าง และ yt-dlp ของคุณเก่ากว่าตัวแก้ ให้อัปเดตก่อนไปแตะอย่างอื่น ข้อผิดพลาดนี้แทบไม่เคยแก้ได้ด้วย flag
มันขึ้นว่า ffmpeg not found
การรวมไฟล์ การแปลง การฝัง และการตัด ล้วนต้องมี ffmpeg อยู่ใน PATH ติดตั้งแล้วยืนยันด้วย ffmpeg -version
ควรอัปเดต yt-dlp บ่อยแค่ไหน
ทุกครั้งที่มีอะไรเริ่มใช้ไม่ได้ นอกจากนั้นก็ทุกสองสามสัปดาห์ เว็บเปลี่ยนตลอดเวลา และปัญหาส่วนใหญ่ถูกแก้ที่ฝั่งโครงการอย่างรวดเร็ว
yt-dlp กับ youtube-dl ต่างกันอย่างไร
yt-dlp เป็น fork ที่ยังดูแลอยู่ มี extractor และฟีเจอร์มากกว่ามาก — SponsorBlock ดาวน์โหลดเฉพาะช่วง ปลอมเบราว์เซอร์ ดึง fragment พร้อมกัน และยังคงชื่อตัวเลือกของ youtube-dl ไว้ คำสั่งง่าย ๆ จึงใช้ได้ทั้งสองตัว