จากประสบการณ์ของฉันเองถ้าคุณต้องการคุณภาพอย่างไม่มีการสูญเสีย - ไม่มีสิ่งใดที่คุณกำลังมองหา
ไม่แน่ใจเรื่องแต่คำสั่งที่คุณพิมพ์ลักษณ์ที่เหมือนกันกับสิ่งที่ฉันจะทำอย่างไรกับavconv
FFmpeg
ในFFmpeg
คุณสามารถส่งผ่านพารามิเตอร์เช่นนี้:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
x265
สวิทช์ส่วนใหญ่(ตัวเลือกที่ไม่มีค่า) สามารถระบุได้เช่นนี้ (ยกเว้นสวิตช์ CLI-only ที่ใช้กับx265
ไบนารีโดยตรงเท่านั้น)
ด้วยวิธีนี้ฉันต้องการแบ่งปันประสบการณ์ของฉันกับการx265
เข้ารหัส สำหรับวิดีโอมากที่สุด (ไม่ว่าจะเป็น WMV, หรือ MPEG หรือ AVC / H.264) crf=23
ผมใช้ x265
ตัดสินใจเลือกพารามิเตอร์ที่เหลือและโดยปกติจะทำงานได้ดีพอ
อย่างไรก็ตามบ่อยครั้งก่อนที่ฉันจะแปลงรหัสวิดีโอให้ครบถ้วนฉันจะทดสอบการตั้งค่าของฉันด้วยการแปลงวิดีโอส่วนเล็ก ๆ ที่เป็นปัญหา นี่คือตัวอย่างสมมติว่าไฟล์ mkv ที่มีสตรีม 0 เป็นวิดีโอสตรีม 1 เป็นเสียง DTS และสตรีม 2 เป็นคำบรรยาย:
ffmpeg -hide_banner \
-ss 0 \
-i "INPUT.mkv" \
-attach "COVER.jpg" \
-map_metadata 0 \
-map_chapters 0 \
-metadata title="TITLE" \
-map 0:0 -metadata:s:v:0 language=eng \
-map 0:1 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" \
-map 0:2 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
-metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" \
-c:v libx265 -preset ultrafast -x265-params \
crf=22:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 \
-c:a copy \
-c:s copy \
-t 120 \
"OUTPUT.HEVC.DTS.Sample.mkv"
โปรดทราบว่าแบ็กสแลชสายสัญญาณแบ่งในคำสั่งยาวฉันทำเพื่อช่วยในการติดตามบิตต่างๆของอินพุต CLI ที่ซับซ้อน ก่อนที่ฉันจะอธิบายทีละบรรทัดส่วนที่คุณแปลงเพียงส่วนเล็ก ๆ ของวิดีโอคือบรรทัดที่สองและบรรทัดที่สอง: -ss 0
หมายถึงการค้นหา 0 วินาทีก่อนที่จะเริ่มถอดรหัสอินพุตและ-t 120
หมายถึงหยุดเขียนไปยังเอาต์พุต หลังจาก 120 วินาที คุณยังสามารถใช้รูปแบบเวลา hh: mm: ss หรือ hh: mm: ss.sss
ตอนนี้ทีละบรรทัด:
-hide_banner
ป้องกันFFmpeg
จากการแสดงข้อมูลการสร้างเมื่อเริ่มต้น ฉันแค่ไม่อยากเห็นมันเมื่อฉันเลื่อนขึ้นในคอนโซล;
-ss 0
พยายาม 0 วินาทีก่อนที่จะเริ่มการถอดรหัสอินพุต โปรดทราบว่าหากพารามิเตอร์นี้ได้รับหลังจากอินพุตไฟล์และก่อนไฟล์เอาต์พุตมันจะกลายเป็นตัวเลือกเอาต์พุตและบอกffmpeg
ให้ถอดรหัสและละเว้นอินพุตจนถึง x วินาทีจากนั้นเริ่มเขียนไปยังเอาต์พุต ในฐานะที่เป็นตัวเลือกอินพุตมันมีความแม่นยำน้อยกว่า (เนื่องจากการค้นหาไม่ถูกต้องในรูปแบบคอนเทนเนอร์ส่วนใหญ่) แต่ใช้เวลาไม่นาน เป็นตัวเลือกเอาต์พุตมันแม่นยำมาก แต่ใช้เวลานานในการถอดรหัสสตรีมทั้งหมดก่อนเวลาที่กำหนดและเพื่อวัตถุประสงค์ในการทดสอบคุณไม่ต้องการเสียเวลา
-i "INPUT.mkv"
: ระบุไฟล์อินพุต;
-attach "COVER.jpg"
: แนบภาพหน้าปก (ภาพขนาดย่อโปสเตอร์อะไรก็ได้) ไปยังเอาท์พุท ภาพหน้าปกมักแสดงในตัวสำรวจไฟล์
-map_metadata 0
: คัดลอกข้อมูลเมตาใด ๆ และทั้งหมดจากอินพุต 0 ซึ่งในตัวอย่างเป็นเพียงอินพุต
-map_chapters 0
: คัดลอกข้อมูลของบท (ถ้ามี) จากอินพุต 0;
-metadata title="TITLE"
: ตั้งชื่อของวิดีโอ;
-map 0:0 ...
: แมปสตรีม 0 ของอินพุต 0 ซึ่งหมายความว่าเราต้องการให้สตรีมแรกจากอินพุตถูกเขียนลงในเอาต์พุต เนื่องจากกระแสนี้เป็นวิดีโอสตรีมมันเป็นครั้งแรกที่วิดีโอสตรีมในการส่งออก:s:v:0
จึงระบุกระแส ตั้งค่าแท็กภาษาเป็นภาษาอังกฤษ
-map 0:1 ...
: คล้ายกับบรรทัดที่ 8 แมปสตรีมที่สอง (เสียง DTS) และตั้งค่าภาษาและชื่อ (เพื่อการระบุที่ง่ายขึ้นเมื่อเลือกจากผู้เล่น)
-map 0:2 ...
: คล้ายกับบรรทัดที่ 9 ยกเว้นสตรีมนี้เป็นคำบรรยาย
-metadata:s:t:0 ...
: ตั้งค่าเมทาดาทาสำหรับหน้าปก จำเป็นสำหรับรูปแบบคอนเทนเนอร์ mkv
-c:v libx265 ...
: ตัวเลือก codec ของวิดีโอ มันนานมาแล้วที่ฉันแยกมันออกเป็นสองบรรทัด การตั้งค่านี้เหมาะสำหรับวิดีโอ bluray คุณภาพสูง (1080p) ที่มีแถบสีน้อยที่สุดในการไล่ระดับสี (ซึ่ง x265 ดูดได้) เป็นไปได้ว่าการ overkill สำหรับดีวีดีและรายการทีวีและวิดีโอในโทรศัพท์ การตั้งค่านี้ถูกขโมยส่วนใหญ่มาจากการโพสต์ Doom9 นี้ ;
crf=22:...
: ความต่อเนื่องของพารามิเตอร์ตัวแปลงสัญญาณวิดีโอ ดูโพสต์ฟอรั่มที่กล่าวถึงข้างต้น;
-c:a copy
: คัดลอกไปที่เสียง;
-c:s copy
: คัดลอกไปที่คำบรรยาย;
-t 120
: หยุดเขียนไปที่เอาต์พุตหลังจาก 120 วินาทีซึ่งให้คลิป 2 นาทีกับเราเพื่อดูตัวอย่างคุณภาพของการย่อ / ขยาย
"OUTPUT.HEVC.DTS.Sample.mkv"
: ชื่อไฟล์ที่ส่งออก ฉันแท็กชื่อไฟล์ด้วยตัวแปลงสัญญาณวิดีโอและตัวแปลงสัญญาณเสียงหลัก
ต๊าย นี่คือคำตอบแรกของฉันดังนั้นหากมีสิ่งใดที่ฉันพลาดโปรดแสดงความคิดเห็น ฉันไม่ใช่ผู้เชี่ยวชาญด้านการผลิตวิดีโอฉันแค่คนที่ขี้เกียจดูหนังด้วยการใส่แผ่นดิสก์เข้าไปในเครื่องเล่น
PS บางทีคำถามนี้อาจเป็นของที่อื่นเพราะไม่เกี่ยวข้องกับ Unix & Linux
--lossless
ในความเป็นจริงอาจขยายไฟล์ถ้ามันถอดรหัสตัวแปลงสัญญาณที่สูญหายก่อนหน้านี้และจากนั้นเข้ารหัสสิ่งที่มันได้ถอดรหัส losslessly คุณภาพจะอยู่ในระดับเดียวกันกับอินพุต