คำตอบของคำถามนี้กลายเป็นเรื่องที่ค่อนข้างยุ่งเหยิงโดยมีข้อมูลจำนวนมากที่ซ้ำซ้อนและข้อผิดพลาดอื่น ๆ คำตอบนี้เป็นความพยายามที่จะปรับปรุงข้อมูลในคำตอบเหล่านี้ในขณะที่ทำไปกับปัญหาในพวกเขา
สิ่งสำคัญที่สุดคือควรคำนึงว่าคำตอบของ Gregory ซึ่งปัจจุบันเป็นคำตอบที่ได้รับคะแนนสูงสุดสำหรับคำถามนี้ไม่ต่างจากการใช้-ac 2
สวิตช์ - เพิ่มเติมด้านล่างนี้
ดาวน์สตรีมเสียง 5.1 แชนเนลเป็นสเตอริโอด้วย -ac 2
FFmpeg มาพร้อมกับความสามารถในตัวสำหรับการดาวน์ซิงก์ 5.1 สู่สเตอริโอและนี่ก็เป็นโซลูชันที่เอกสารแนะนำของ FFmpeg แนะนำ :
หมายเหตุ: ffmpeg ผสานรวมระบบดาวน์ - มิกซ์ (และอัพมิกซ์) ที่เป็นค่าเริ่มต้นซึ่งควรเป็นที่ต้องการ ( -ac
ตัวเลือก) เหนือตัวกรองแพนเว้นแต่คุณจะมีความต้องการที่เฉพาะเจาะจงมาก
-ac 2
สวิทช์การทำงานโดยการผสมสัดส่วนของ 5 ช่องแรกจากกระแส 6 ช่องทางแหล่งที่มาของ - กลับซ้ายกลับขวาด้านหน้าซ้าย, ขวาด้านหน้าและศูนย์หน้า - ลงในช่องด้านหน้าซ้ายและขวาด้านหน้าของสตรีมสเตอริโอเอาท์พุท:
เมื่อทำเช่นนั้นเสียงจากช่อง LFE ( .1ใน 5.1 ที่สงวนไว้สำหรับซับวูฟเฟอร์และใช้สำหรับเอฟเฟกต์เสียงความถี่ต่ำ) จะถูกยกเลิกอย่างสมบูรณ์เมื่อใช้ตัวเลือกนี้
น่าเสียดายที่ในการทดสอบของฉัน-ac 2
ส่งผลให้ระดับเสียงดนตรีและบทสนทนาที่แตกต่างจากแหล่งที่มามากที่สุดทำให้เป็นสูตรดาวน์มิกซ์ที่ให้ผลลัพธ์ที่แย่ที่สุดจากสูตรทั้งหมดที่ฉันทดสอบถึงแม้ว่าคุณจะทดสอบและพบว่ามัน ให้ดาวน์มิกซ์ที่เพียงพออย่างสมบูรณ์แบบสำหรับความต้องการของคุณซึ่งในกรณีนี้การใช้สูตรอื่นใดจะเกินความต้องการของคุณ
หากต้องการดาวน์มิกซ์แทร็ก DTS ด้วย-ac 2
โดยไม่แปลงรหัส (เช่นเพื่อให้ตัวแปลงสัญญาณและส่วนขยายเหมือนกัน):
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
ดังที่ Mephisto กล่าวไว้ในคำตอบของเขาหากบทสนทนาและเสียงเพลงมีความสมดุลระหว่างกัน แต่ขาดความดังคุณสามารถดาวน์สตรีมสตรีมในขณะที่เพิ่มระดับเสียง:
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
สำหรับ-vol
สวิตช์ปริมาณ 100% ในแหล่งที่มานั้นเทียบเท่ากับค่าจำนวนเต็ม 256 และการใช้ค่าที่มากกว่านี้จะเพิ่มระดับเสียงโดยรวมของสตรีมเสียง อย่างไรก็ตามโปรดทราบว่าการทำเช่นนั้นมากเกินไปอาจส่งผลให้เกิดการบิดเบือนหรือสิ่งประดิษฐ์โดยเฉพาะในส่วนที่ดังกว่า
หากต้องการดาวน์สตรีมเสียงเป็นสเตอริโอและแปลงเป็นโคเดก AC3 ตัวอย่างเช่น:
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
ดาวน์สตรีมเสียง 5.1 แชนเนลเป็นสเตอริโอด้วยอัลกอริทึมมิกซ์แบบกำหนดเอง
หากคุณต้องการ downmix ที่มีคุณภาพสูงขึ้นหรือคุณต้องรวม LFE stream ไว้ในเอาต์พุตของคุณคุณสามารถใช้สวิตช์ตัวกรองสัญญาณเสียงของ FFmpeg ( -af
) เพื่อดาวน์มิกซ์เสียงโดยใช้สูตรมิกซ์แบบกำหนดเอง
Downmixing ด้วยสูตร ATSC (คำตอบของ Gregory)
ในขณะที่โพสต์คำตอบนี้คำตอบที่ได้รับคะแนนสูงสุดสำหรับคำถามนี้คือGregory'sซึ่งวางสูตรจากข้อกำหนด ATSC (ดูหัวข้อ 7.8.2, Downmixing เป็นสองแชนแนล ) ลงในตัวกรองเสียง FFmpeg ข้อมูลจำเพาะนี้เชื่อมโยงโดยตรงกับเอกสาร FFmpeg ในหัวข้อระบุว่ามีแนวโน้มสูงที่จะเป็นสูตรเดียวกับที่ FFmpeg ใช้สำหรับ-ac 2
สวิตช์แล้ว หากเป็นจริงให้พิมพ์สูตรทั้งหมดในคำตอบของ Gregory จะไม่ต่างไปจากการใช้-ac 2
สวิตช์ดังนั้นเสียเวลา
ฉันตัดสินใจที่จะทดสอบสิ่งนี้โดยการเข้ารหัสเสียงอินพุตเดียวกันโดยใช้ทั้งสอง-ac 2
และ-af
ตัวกรองจากคำตอบของ Gregory (คำสั่งที่แน่นอนที่ใช้สามารถดูได้ในเชิงอรรถของคำตอบนี้)
ฉันเปรียบเทียบขนาดของไฟล์ผลลัพธ์ที่ได้และพบว่ามีขนาดเท่ากันไบต์ต่อไบต์
ในที่สุดฉันเปิดทั้งสองไฟล์เอาต์พุตในความกล้าและเปรียบเทียบรูปคลื่นของพวกเขาเพื่อยืนยันว่าพวกเขาเหมือนกัน (คลิกเพื่อดูภาพขยาย):
ดังนั้นจึงเป็นข้อสรุปที่ชัดเจนว่าสูตร ATSC ที่มีรายละเอียดในคำตอบของ Gregory นั้นเป็นคำตอบเดียวที่ FFmpeg นำมาใช้แล้วและการใช้มันซ้ำซ้อนโดยสิ้นเชิงเมื่อไม่ได้ทำอะไรเลย-ac 2
และเป็นคำสั่งที่ยุ่งยากกว่า
Downmixing โดยไม่ละทิ้งช่อง LFE (คำตอบของ Dave_750)
จากหลายคำตอบที่รวมอยู่ในคำตอบนี้เป็นเพียงหนึ่งในสูตรดาวน์มิกซ์ที่ปรากฏขึ้นเพื่อผสมช่องสัญญาณ LFE เข้ากับสเตอริโอเอาท์พุทแทนที่จะทิ้งมันไปอย่างสิ้นเชิงและเป็นผลให้เสียงที่รับรองจากแหล่งกำเนิดน้อยที่สุดคือ สูญหาย.
ระดับเสียงโดยรวมนั้นสูงและเต็มกว่าที่ทำ-ac 2
แต่ก็ยังต่ำกว่า downmix Dialmix Dialm ด้านล่าง อย่างไรก็ตามระดับดนตรีอยู่ใกล้กับแหล่งที่มามากกว่า Downmix Dialogue ของ Nightmode และเนื่องจากการรวมของแทร็ก LFE การเพิ่มระดับเสียงของเอาต์พุตในขณะที่ใช้สูตร downmix นี้สามารถสร้างกระแสเอาต์พุตที่ฟังดูสมจริงกว่าแหล่ง 5.1 ทั้งหมด สูตรที่ฉันทดสอบ
หากคุณมีความสามารถฉันขอแนะนำให้คุณเข้ารหัสออดิโอสตรีมโดยใช้ทั้งสูตรดาวน์มิกซ์และดาวน์ไลท์บทสนทนา Nightmode และลองเปรียบเทียบรูปคลื่นของทั้งสองอย่างรอบคอบเพื่อพิจารณาว่ารูปแบบใดดีกว่า
หากต้องการ downmix แทร็ก 5.1 เป็นสเตอริโอโดยใช้สูตรนี้และเพิ่มระดับเสียงเป็น 425 (โดยที่ 256 คือ 100% ของระดับเสียงต้นฉบับ):
ffmpeg -i "sourcetrack.dts" -c dca -vol 425 -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+0.5*LFE" "outputstereo.dts"
Downmixing กับบทสนทนา Nightmode ของ Robert Collier (คำตอบของ Shane Harrelson)
สูตรบทสนทนา Nightmode ที่สร้างโดยRobert CollierบนฟอรัมDoom9และจัดหาโดย Shane Harrelson ในคำตอบของเขาส่งผลให้ downmix ดีกว่า-ac 2
สวิตช์ - แทนที่จะเป็นบทสนทนาที่เงียบมากเกินไปมันนำพวกเขากลับสู่ระดับที่ใกล้เคียงกับ แหล่ง
จากคำอธิบายของ Robert Collier เกี่ยวกับส่วนผสม:
หลังจากแปลงแทร็กภาพยนตร์ DTS หลายรายการจาก 5.1 เป็น 2.0 โดยใช้ eac3to ฉันได้พบการแมปช่อง eac3to เริ่มต้นเพื่อให้ได้บทสนทนาที่เงียบสงบมากฉากเพลงและฉากแอ็กชั่นดังมาก ถึงแม้ว่าค่าสัมประสิทธิ์ eac3to ของช่อง downmix จะมีพื้นฐานทางวิทยาศาสตร์ แต่พวกเขามักจะไม่ได้เสียงที่ดีในทางปฏิบัติเนื่องจากปริมาณการสนทนาที่ต่ำ พรีเซ็ตนี้มีไว้สำหรับผู้ที่มองหาบทสนทนาที่ชัดเจนด้วยเสียงเพลงจากช่องทางซ้ายและขวาที่ยังคงได้ยิน แต่มีพื้นหลังมากขึ้น
อย่างที่คุณเห็น - ศูนย์กลางด้านหน้า (บทสนทนา) เข้ามาอย่างเหมาะสมและอยู่ในระดับเดิม - ในขณะที่เสียงเพลงและการระเบิดยังคงเป็นฉากหลังและไม่มีผลกับคุณ ค่าที่ตั้งไว้ล่วงหน้านี้แก้ปัญหาของคุณที่จะต้องทำตัวคลาดเคลื่อนโดยใช้ปุ่มปรับระดับเสียงเมื่อรับชม DTS 5.1 ที่แปลงเป็นภาพยนตร์ 2.0 เพื่อฟังบทสนทนา (โดยเฉพาะอย่างยิ่งสำหรับการรับชมภาพยนตร์ในตอนกลางคืนที่คุณไม่ต้องการปลุกคนอื่น แต่ยังต้องการได้ยินบทสนทนา)
น่าเสียดายที่เพลงของสูตรดาวน์มิกซ์นี้ต่ำกว่าในแหล่งที่มา 5.1 มาก (ซึ่งน่าจะเกิดจากการออกแบบโดยพิจารณาจากความตั้งใจของถ่านหินในการสร้างมิกซ์ "nightmode") และเนื่องจากการสูญเสียแทร็ก LFE โดยสมบูรณ์ เสียงเต็มรูปแบบหรือใกล้เคียงกับแหล่งที่มาของสูตร Dave_750 ของที่มีปริมาณเพิ่มขึ้น
อย่างไรก็ตามหากมีเหตุผลที่คุณต้องการหลีกเลี่ยงการเพิ่มระดับเสียงโดยรวมของสตรีมบทสนทนา Nightmode น่าจะเป็นตัวเลือกที่ดีที่สุดของคุณ - แต่อีกครั้งฉันขอแนะนำให้เข้ารหัสสตรีมเสียงของคุณทั้งสองและเปรียบเทียบรูปคลื่นของทั้งสองอย่างระมัดระวัง .
หากต้องการดาวน์มิกซ์ด้วยสูตรบทสนทนา Nightmode ใน FFmpeg:
ffmpeg -i "sourcetrack.dts" -c dca -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" "stereotrack.dts"
คำตอบของ Tarc
คำตอบนี้ทำให้สูตรดาวน์มิกซ์บทสนทนา Nightmode Dialogue จากคำตอบของ Shane Harrelson เป็นคำสั่งเพื่อแปลงกระแสข้อมูลเสียงในคอนเทนเนอร์ MKV ในขณะที่คำสั่งที่ให้ไว้ในคำตอบนี้จะใช้งานได้ดีกับสตรีมเสียงดังกล่าวการปรับให้เป็นแทร็กเสียงแบบสแตนด์อโลนจะทำให้เกิดข้อผิดพลาด:
การกรองและการทำสำเนาไม่สามารถใช้ร่วมกันได้
นี่เป็นเพราะตัวแปลงสัญญาณเสียงไม่สามารถคัดลอกได้เมื่อ downmixing เช่นเดียวกับการเปลี่ยนแปลงอื่น ๆ ที่ FFmpeg ทำกับเอาต์พุตสตรีม downmix ต้องการให้แทร็กเข้ารหัสอีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล
คำสั่งนี้ยังรวมถึง-ac 2
สวิตช์ที่ซ้ำซ้อนซึ่ง FFmpeg จะเพิกเฉย
คำสั่งทดสอบ
เพื่อแสดงให้เห็นถึงความน่าเชื่อถือของการทดสอบที่ฉันดำเนินการสำหรับคำตอบนี้ด้านล่างเป็นคำสั่งทั้งหมดที่ฉันใช้เพื่อทดสอบแต่ละสูตรดาวน์มิกซ์
คำสั่งทดสอบที่ใช้สำหรับ-ac 2
ตัวเลือก:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -ac 2 "Audio 1 (-ac 2).wav"
คำสั่งทดสอบที่ใช้สำหรับคำตอบของ Gregory:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -af "pan=stereo|FL < 1.0*FL + 0.707*FC + 0.707*BL|FR < 1.0*FR + 0.707*FC + 0.707*BR" "Audio 2 (ATSC Algorithm Downmix).wav"
คำสั่งทดสอบที่ใช้สำหรับคำตอบของ Dave_750:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -vol 425 -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+0.5*LFE" "Audio 4 (Dave750 Downmix).wav"
คำสั่งทดสอบที่ใช้สำหรับคำตอบของ Shane Harrelson:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" "Audio 3 (Nightmode Dialogue Downmix).wav"