การดาวน์โหลดพื้นฐาน
เมื่อไม่ใส่ตัวเลือกใดเลย 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 -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 จะปฏิเสธ และมันปฏิเสธถูกแล้ว