ดาวน์มิกซ์ 5.1 เป็นสเตอริโออย่างถูกต้องโดยใช้ ffmpeg


27

ฉันมีแทร็กเสียง 5.1 จากภาพยนตร์ที่ด้านหน้าซ้ายและขวาด้านหน้ามีเพลงและตรงกลางมีบทสนทนา การเล่นแทร็ก 5.1 ใน VLC ผสมผสานทุกอย่างเข้าด้วยกันเป็นอย่างดี

ฉันกำลังพยายามแปลงแทร็ก 5.1 เป็นสเตอริโอโดยใช้ffmpeg -ac 2อย่างไรก็ตามการผสมเสียงที่ได้นั้นมีระดับเสียงที่เบากว่าการเล่นแทร็ก 5.1

การเพิ่ม-af "pan=stereo|c0=FL|c1=FR"ให้ปริมาณที่ถูกต้อง แต่ไม่มีการสนทนาเพราะไม่รวมช่องทางกลาง

ดังนั้นวิธีการแก้ปัญหาคือการผสมซ้าย / กลาง / ขวาเข้ากับสเตอริโอและโยนช่องซับวูฟเฟอร์แบ็กเอนด์ออกมา? (ฉันคาดเดาที่นี่ ... )

ดังนั้นคำถามคือ: ฉันจะทำให้ ffmpeg downmix 5.1 เป็นสเตอริโอได้อย่างไรในแบบเดียวกับที่ VLC ทำโดยมีระดับความดังที่เท่ากันในผลลัพธ์สุดท้าย?


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

พื้นฐาน: ไฟล์ของฉันคือ 5.1 ลำโพงของฉันเป็นสเตอริโอ ฉันไม่รู้ว่า VLC ทำอะไร แต่มันสร้างผลลัพธ์ที่ยอดเยี่ยมในลำโพงสเตอริโอของฉันจากแหล่งข้อมูล 5.1 (มีปริมาณที่มากทั้งเพลงและบทสนทนา) ffmpeg บนมืออื่น ๆ ที่สร้าง "ปริมาณต่ำ" -ac 2ผลเมื่อใช้ ดังนั้นฉันจึงถามวิธีการทำให้ ffmpeg สร้างผลลัพธ์ที่ดีเช่นเดียวกับ VLC
comerin

คำตอบ:


29

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

ตามมาตรฐาน ATSC (มาตรา 7.8 หน้า 91) สูตรต่อไปนี้ใช้สำหรับดาวน์มิกซ์ 5.1 เป็นสเตอริโอธรรมดา (ตรงข้ามกับเมทริกซ์):

Lo = 1.0 * L + clev * C + slev * Ls ;
Ro = 1.0 * R + clev * C + slev * Rs ;

clev และ slev ควรเป็น. 707 ตามตาราง 5.9 และ 5.10 ในเอกสารดังกล่าวโดยสมมติว่ามีการรวมศูนย์ / เซอร์ราวด์ระดับ 0 ค่าอื่น ๆ มีอยู่ในตารางเหล่านั้นซึ่งช่วยลดจำนวนของการรวมศูนย์ซึ่งฉันไม่พบ มีประโยชน์

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

-af "pan=stereo|FL < 1.0*FL + 0.707*FC + 0.707*BL|FR < 1.0*FR + 0.707*FC + 0.707*BR"

หมายเหตุเกี่ยวกับการใช้สัญลักษณ์น้อยกว่าจากเอกสารตัวกรองกระทะ :

หาก '=' ในข้อมูลจำเพาะของช่องถูกแทนที่ด้วย '<' ผลกำไรสำหรับข้อมูลจำเพาะนั้นจะถูกเปลี่ยนรูปแบบใหม่เพื่อให้ผลรวมเป็น 1 ดังนั้นจึงหลีกเลี่ยงการตัดเสียงรบกวน


5
มาตรฐาน ATSC ที่คุณเชื่อมโยงที่นี่เชื่อมโยงกับจากFFmpeg wiki ในหัวข้อดังนั้นจึงไม่น่าแปลกใจที่สูตรที่ใช้ในที่นี้จะเป็นมาตรฐานเดียวที่ใช้โดย FFmpeg พร้อมac -2สวิตช์ กล่าวอีกอย่างหนึ่งความแตกต่างเพียงอย่างเดียวระหว่างการใช้ตัวกรองนี้กับการทำac -2คือการพิมพ์ที่มีจำนวนมากขึ้น
Hashim

@Hashim ไม่เพียง แต่พิมพ์ คำตอบที่มีคำอธิบายอย่างละเอียดเกี่ยวกับการสนับสนุนนั้นดีกว่า "พิมพ์เพื่อรับสิ่งนั้น"
Sevastyan Savanyuk

18

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

สิ่งสำคัญที่สุดคือควรคำนึงว่าคำตอบของ 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"

1
ข้อมูลเชิงลึกที่น่าประทับใจ! ขอบคุณที่สละเวลาแบ่งปันสิ่งนี้ แปลกแล้วที่-ac 2ให้ผลลัพธ์ที่ด้อยกว่าให้ฉันเริ่มต้นซึ่งกระตุ้นให้มีการโพสต์ต้นฉบับ ฉันจะลองอีกครั้งและถ้าเป็นไปได้แบ่งปันข้อความที่ตัดตอนมา 5.1 ซึ่งไม่ได้ผลที่น่าพอใจกับการผสมผสานในตัว นอกจากนี้ยังเป็นเรื่องดีมากที่รู้ว่าคุณสามารถผสมโดยไม่ต้องแปลงรหัส!
comerin

@forthrin จำไว้ว่าการเข้ารหัสและการแปลงรหัสเป็นสองสิ่งที่แตกต่างกัน การแปลงรหัสจะแปลงจากตัวแปลงสัญญาณ / ส่วนขยายหนึ่งไปเป็นอีกส่วนหนึ่งและการเข้ารหัสจะแปลงเป็นตัวแปลงสัญญาณ / ส่วนขยายเดียวกัน คุณสามารถดาวน์มิกซ์และใช้เอฟเฟกต์ FFmpeg อื่น ๆ กับสตรีมได้โดยไม่ต้องแปลงรหัส แต่ไม่สามารถเข้ารหัสได้ ac -2ตัวเลือกให้ฉันผลด้อยกว่ามากที่สุดของทุกสูตรดาวน์มิกซ์เกินไปผมคิดว่านี่เป็นเพียงความล้มเหลวของสูตรมาตรฐาน ATSC ของ
Hashim

ฉันลองตอนนี้ ดูเหมือนว่าใช้ffmpeg -i 5.1.mp4 -ac 2 2.mp4งานได้ แต่ffplay -i 5.1.mp4 -ac 2ไม่ได้
comerin

9

ลองดาวน์มิกซ์นี้:

-ac 2 -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" 

ตามที่แนะนำโดย Robert Collierในฟอรัม Doom9


2
ตัวเลือกเหล่านั้นหมายถึงอะไร? หากคุณอธิบายพวกเขาผู้คนจะสามารถใช้คำตอบของคุณเพื่อแก้ปัญหาต่าง ๆ แทนที่จะเป็นเพียงการคัดลอกวาง
David Richerby

2
@DavidRicherby -ac = ช่องสัญญาณเสียง (2 สำหรับสเตอริโอ), -af = ตัวกรองสัญญาณเสียง
Cestarian

3
พยายามทำเช่นนี้สำหรับภาพยนตร์ 5.1 และอย่างน้อยเสียงสเตอริโอที่ออกมาก็ดังออกมาดีสำหรับฉัน บทสนทนาที่ชัดเจนและดูเหมือนว่าไม่มีอะไรขาดหายไป คงจะดีถ้าคนที่มีความรู้ VLC สามารถแบ่งปันสิ่งที่ทำในค่าเริ่มต้น 5.1 ถึง 2.0 ดาวน์มิกซ์ที่นั่น
comerin

2
@DavidRicherby: ตัวเลือกภายในตัวกรองเสียง (-af) คือ: FL = ด้านหน้าซ้าย; BL = กลับซ้าย; เอฟซี = ด้านหน้าศูนย์; FR = ด้านหน้าขวา; BR = กลับขวา ลอยเป็นปัจจัยเชิงเส้นเพื่อลด (<1) หรือเพิ่ม (> 1) ปริมาณของช่องทางคูณ FL = FC + 0.30 * FL + 0.30 * BL กำลังตั้งค่าช่องสัญญาณด้านหน้าซ้ายไปยังช่องสัญญาณด้านหน้าศูนย์บวก 30% ของช่องสัญญาณด้านหน้าซ้ายและ 30% ของช่องสัญญาณด้านหลังซ้าย
kronenpj

1
FWIW: ฉันคิดว่าเพลงนี้ทำให้บทสนทนาดังเกินไปเมื่อเทียบกับเพลงและเสียงรอบข้าง การผสมผสานทางเทคนิคที่ถูกต้องมากขึ้นที่ได้รับในคำตอบของ Tarc เป็นที่ชื่นชอบมากขึ้นสำหรับฉัน ดังนั้นฉันคิดว่าคุณอาจต้องลองใช้สิ่งที่ดีที่สุดสำหรับคุณขึ้นอยู่กับสถานการณ์
jlh

3

ดังนั้นโดยการรวม@Shane Harrelsonกับคำตอบของ @Jordan Harris กับคำถามอื่น - ด้วยโหมดเปิดใช้งานขี้เกียจ - นี่คือสิ่งที่จำเป็นในการแปลงinput_51.mkv(5.1) เป็นoutput_stereo.mkv(สเตอริโอ):

ffmpeg -i input_51.mkv -c:v copy \
    -ac 2 -af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR" \
    output_stereo.mkv

-c:v copyส่วนหนึ่งหมายความว่าวิดีโอสตรีมไม่ได้ถูกสัมผัส (ฉันเดาว่าวีไอดีโอ odec การตั้งค่าจะถูกตำรวจ IED) ก็ไม่มีมันจะใช้เวลานาน เพียงทำซ้ำจากคำตอบข้างต้นเพื่อความสมบูรณ์-ac 2หมายถึงสองช่องสัญญาณเสียงและ-afระบุตัวกรองเสียง

หลังจากตรวจสอบคำสั่งแล้วฉันก็พบว่ามันตั้งค่าว่าจะสร้างช่องสัญญาณสเตอริโอสองช่องอย่างไร FL(ทางซ้ายด้านหน้า) จะนำมาจากต้นฉบับFC(กลางด้านหน้า) บวก0.30*FL(30% จากด้านหน้าซ้าย) บวก0.30*BL(30% จากด้านหลังซ้าย) และอื่น ๆ


สิ่งนี้จะทำให้ช่องสัญญาณกลางสอดคล้องกันและได้ยินได้หรือไม่
Freedo

2

นี่เป็นคำถามเก่า แต่ชี้ไปในทิศทางที่ถูกต้องและต้องการแบ่งปันผลลัพธ์ของฉัน:

-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"

การนำ FC และ LFE ครึ่งหนึ่งไปทางซ้ายและขวาให้ผลรวม 1 สำหรับระดับเสียงที่มีประสิทธิภาพจากลำโพงทั้งสอง การใช้. 707 * ด้านหน้า / ด้านหลังซ้าย / ขวานำช่องทางเหล่านั้นลงไปในระดับที่ดีเพื่อให้พวกเขาไม่เอาชนะศูนย์กลาง


1

หากตัวเลือก -ac 2 ให้ดาวน์มิกซ์ที่สมดุลโดยที่ทั้งเพลงและเสียงพูดนั้นไม่ได้ให้เสียงมากไปกว่าองค์ประกอบอื่น ๆ คุณเพียงแค่เพิ่มระดับเสียงด้วย

-vol 512

ฉันใช้ตัวอย่าง 512 ซึ่งเพิ่มเสียงทำให้ดังขึ้นสองเท่า กฎคือ 256 เท่ากับ 100%

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


1

-ac 2

ระดับเสียงของช่องสัญญาณในดาวน์มิกซ์ไม่เปลี่ยนแปลงด้วยตัวแปลงสัญญาณคะแนนลอยตัว -> pcm_f32le, aac

ระดับเสียงในดาวน์มิกซ์ (5.1 ถึง 2.0 โดยไม่มี LFE) จะลดลง 1 / 2.5 = -7.96 dB พร้อมตัวแปลงสัญญาณจำนวนเต็ม -> pcm_s16le, libfdk_aac

ภาพยนตร์มีเสียงแหลมในทิศทางเดียวและไม่มีแรงกดเสียงสูงสุดในทุกช่อง การลดระดับเสียงดาวน์ไลซ์ที่ไม่ถูกต้องการบีบอัดในระดับเล็กน้อยจึงเป็นวิธีที่ถูกต้อง นั่นคือสิ่งที่ Dolby ทำ


0

หลังจากอ่านหน้านี้ทั้งหมดและมีการทดลองบางอย่างฉันพบสคริปต์นี้ชื่อ "down_mix":

#!/bin/bash -x

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_FMT="libopus"
CONTAINER="mkv"

ffmpeg -i "$1" -c:v copy -c:s copy \
    -c:a $AUDIO_FMT \
    -af "pan=stereo|FL=$FL|FR=$FR" \
    "${1%.*}"_dm.$CONTAINER

    # how to test a snippet of movie
    # -ss 41:07.0 -t 4 \

ปรับแต่งตัวแปรด้านบนตามที่คุณต้องการ ฉันไม่ได้มีปัญหากับไดรฟ์ข้อมูลต่ำเหลือดังนั้นออก แต่เพิ่มได้ง่าย


0

ตัวกรอง ffmpeg "-ac 2" ทำงานได้ดีตราบใดที่เป้าหมายของคุณถูกเข้ารหัสด้วย pcm_s16le เมื่อเข้ารหัสเป็น pcm_f32le ในรูปแบบ wav เสียงจะเพิ่มขึ้น 9dB และมากกว่า ดังนั้น: อย่าใช้ตัวกรอง "-ac 2" ในกรณีเช่นนี้


ทำไมปริมาณเพิ่มขึ้น คุณเรียนรู้เกี่ยวกับเรื่องนี้จากที่ใด
forthrin

ทำไมไม่มีความคิด แต่ฉันเป็นผู้ใช้ ffmpeg บ่อยมาก (รวบรวมด้วยตัวเอง) เพียงใช้แหล่งข้อมูล 5.1 (ด้านข้าง) และแปลงเป็น pcm_s16le และยังเป็นไฟล์ pcm_f32le wav โดยใช้ "-ac 2" ทั้งสองครั้ง เปรียบเทียบปริมาณสูงสุดของไฟล์ wav สองไฟล์และคุณจะเห็น (และได้ยิน):
Frank-Michael Fischer

สิ่งนี้เกิดขึ้นโดยใช้เช่น ffmpeg รุ่น N-93636-g6829c3c
Frank-Michael Fischer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.