Các câu trả lời cho câu hỏi này đã trở thành một mớ hỗn độn, với nhiều thông tin có chứa thông tin dư thừa và những thông tin khác hoàn toàn không chính xác. Câu trả lời này là một nỗ lực để hợp lý hóa thông tin trong các câu trả lời này trong khi loại bỏ các vấn đề trong đó.
Quan trọng nhất, đáng ghi nhớ rằng câu trả lời của Gregory, hiện là câu trả lời được bình chọn hàng đầu cho câu hỏi này, không khác gì sử dụng công -ac 2
tắc - nhiều hơn về điều này dưới đây.
Kết hợp một luồng âm thanh 5.1 kênh thành âm thanh nổi với -ac 2
FFmpeg đi kèm với các khả năng tích hợp để kết hợp một bản nhạc 5.1 thành âm thanh nổi và đây cũng là giải pháp mà tài liệu riêng của FFmpeg khuyến nghị :
Lưu ý: ffmpeg tích hợp hệ thống trộn xuống mặc định (và trộn lên) nên được ưu tiên ( -ac
tùy chọn) trên bộ lọc pan trừ khi bạn có nhu cầu rất cụ thể.
Công -ac 2
tắc hoạt động bằng cách trộn tỷ lệ của 5 kênh đầu tiên từ luồng 6 kênh của nguồn - Back Left, Back Right, Front Left, Front Right và Front Center - vào các kênh Front Left và Front Right của luồng stereo đầu ra:
Khi làm như vậy, âm thanh từ kênh LFE ( .1 trong 5.1, dành riêng cho loa siêu trầm và được sử dụng cho các hiệu ứng tần số thấp, sâu) bị loại bỏ hoàn toàn khi sử dụng tùy chọn này.
Thật không may, trong các thử nghiệm của tôi -ac 2
đã dẫn đến mức độ chung của cả âm nhạc và hội thoại khác nhau nhất so với nguồn phát, khiến nó trở thành công thức downmix mang lại kết quả tồi tệ nhất trong tất cả các công thức tôi đã thử nghiệm, mặc dù bạn có thể kiểm tra nó và thấy rằng nó cung cấp cho bạn một downmix hoàn toàn phù hợp cho nhu cầu của bạn, trong trường hợp sử dụng bất kỳ công thức nào khác sẽ là quá mức cần thiết cho bạn.
Để trộn lẫn một bản nhạc DTS -ac 2
mà không cần chuyển mã (nghĩa là giữ nguyên codec và phần mở rộng của nó):
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 "stereotrack.dts"
Như Mephisto đã chỉ ra trong câu trả lời của mình, nếu đoạn hội thoại và âm nhạc nghe có vẻ cân bằng với nhau nhưng đơn giản là thiếu âm lượng, bạn có thể giảm âm lượng trong khi tăng âm lượng của nó:
ffmpeg -i "sourcetrack.dts" -c:a dca -ac 2 -vol 425 "stereotrack.dts"
Đối với công -vol
tắc, âm lượng 100% trong nguồn tương đương với giá trị nguyên 256 và sử dụng giá trị lớn hơn giá trị này sẽ làm tăng âm lượng chung của luồng âm thanh. Tuy nhiên, lưu ý rằng làm quá nhiều có thể dẫn đến biến dạng hoặc tạo tác, đặc biệt là trong các phần to hơn của nó.
Ví dụ, để trộn một luồng âm thanh thành âm thanh nổi và chuyển mã nó sang codec AC3:
ffmpeg -i "sourcetrack.dts" -c:a ac3 -ac 2 "stereotrack.ac3"
Kết hợp luồng âm thanh 5.1 kênh thành âm thanh nổi với thuật toán trộn tùy chỉnh
Nếu bạn muốn có một bộ trộn chất lượng cao hơn hoặc bạn nhất định phải đưa luồng LFE vào đầu ra của mình, bạn có thể sử dụng công tắc bộ lọc âm thanh của FFmpeg ( -af
) để trộn âm thanh bằng công thức trộn tùy chỉnh.
Hòa trộn với công thức ATSC (câu trả lời của Gregory)
Vào thời điểm đăng câu trả lời này, câu trả lời được bình chọn hàng đầu cho câu hỏi này là của Gregory , đưa công thức từ đặc tả ATSC (xem phần 7.8.2, Downmashing vào hai kênh ) vào bộ lọc âm thanh FFmpeg. Thông số kỹ thuật này được liên kết trực tiếp với tài liệu FFmpeg về chủ đề này , cho thấy nó rất có thể là cùng một công thức mà FFmpeg đã thực hiện cho -ac 2
chuyển đổi của nó . Nếu điều này là đúng, thì việc gõ toàn bộ công thức trong câu trả lời của Gregory sẽ không khác gì sử dụng công -ac 2
tắc, và do đó sẽ lãng phí thời gian.
Tôi đã quyết định kiểm tra điều này một cách chắc chắn bằng cách mã hóa lại cùng một âm thanh đầu vào bằng cả hai -ac 2
và -af
bộ lọc từ câu trả lời của Gregory (các lệnh chính xác được sử dụng có thể được nhìn thấy trong phần chú thích cho câu trả lời này).
Sau đó, tôi đã so sánh kích thước của các tệp đầu ra kết quả và thấy chúng là, từng byte, cùng kích thước:
Cuối cùng, tôi đã mở cả hai tệp đầu ra trong Audacity và so sánh dạng sóng của chúng để xác nhận chúng giống hệt nhau (bấm vào để phóng to):
Do đó, có vẻ như khá kết luận rằng công thức ATSC được nêu chi tiết trong câu trả lời của Gregory là cùng một công thức đã được FFmpeg triển khai và việc sử dụng nó là hoàn toàn dư thừa khi nó không làm gì cả -ac 2
, và là một lệnh rườm rà hơn nhiều.
Hòa trộn mà không loại bỏ kênh LFE (câu trả lời của Dave_750)
Trong số một số câu trả lời có trong câu trả lời, đây là công thức duy nhất trong số các công thức downmix xuất hiện để trộn kênh LFE vào âm thanh nổi đầu ra thay vì loại bỏ hoàn toàn và do đó, công thức đảm bảo âm thanh ít nhất từ nguồn phát ra mất đi.
Mức âm lượng tổng thể cao hơn và đầy đủ hơn so với thực hiện -ac 2
, nhưng vẫn thấp hơn so với phần kết hợp đối thoại Nightmode bên dưới. Tuy nhiên, các mức nhạc gần với nguồn hơn so với chế độ kết hợp Đối thoại Nightmode và do bao gồm bản nhạc LFE, việc tăng âm lượng đầu ra trong khi sử dụng công thức downmix này có thể tạo ra luồng phát ra âm thanh trung thực cho nguồn 5.1 hơn tất cả các nguồn khác công thức tôi đã thử nghiệm.
Nếu bạn có khả năng, tôi khuyên bạn nên mã hóa (các) luồng âm thanh của mình bằng cả công thức downmix này và downmix Dialmode Dialm, và so sánh cẩn thận các dạng sóng của hai loại để xác định loại nào tốt hơn.
Để trộn lẫn một bản nhạc 5.1 thành âm thanh nổi bằng công thức này và tăng mức âm lượng của nó lên 425 (trong đó 256 là 100% mức âm lượng của nguồn ban đầu):
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"
Hòa nhập với Đối thoại Nightmode của Robert Collier (câu trả lời của Shane Harrelson)
Công thức Đối thoại Nightmode, được tạo bởi Robert Collier trên diễn đàn Doom9 và được Shane Mitchelson đưa ra trong câu trả lời của ông, dẫn đến kết quả tốt hơn nhiều so với -ac 2
chuyển đổi - thay vì các cuộc đối thoại quá im lặng, nó đưa họ trở lại mức độ gần với nguồn.
Từ mô tả của Robert Collier về sự pha trộn:
Sau khi chuyển đổi nhiều đoạn phim DTS từ 5.1 sang 2.0 bằng eac3to, tôi đã tìm thấy ánh xạ kênh eac3to mặc định để tạo ra các cuộc đối thoại rất yên tĩnh và các cảnh hành động và âm nhạc quá lớn. Mặc dù các hệ số downmix kênh eac3to có cơ sở khoa học, nhưng chúng thường không có vẻ tốt trong thực tế bceause của âm lượng đối thoại thấp. Giá trị đặt trước này dành cho những người tìm kiếm các cuộc đối thoại rõ ràng với nhạc kênh trái và phải vẫn có thể nghe được nhưng nhiều hơn trong nền.
Như bạn có thể thấy - trung tâm phía trước (các cuộc đối thoại) đến ngay bây giờ và giữ ở mức ban đầu - trong khi âm nhạc và vụ nổ vẫn là hiệu ứng nền và không áp đảo bạn. Giá trị đặt trước này giải quyết vấn đề bạn phải liên tục mân mê với núm âm lượng khi xem DTS 5.1 được chuyển đổi thành phim 2.0 để nghe các đoạn hội thoại. (Đặc biệt là để xem phim vào ban đêm, nơi bạn không muốn đánh thức người khác nhưng vẫn muốn có thể nghe các đoạn hội thoại).
Thật không may, âm nhạc của công thức downmix này thấp hơn nhiều so với nguồn 5.1 (có khả năng là do thiết kế xem xét ý định của Collier để tạo ra một bản phối âm "nightmode") và do mất hoàn toàn bản nhạc LFE, âm thanh đầu ra tổng thể không âm thanh đầy đủ hoặc gần với nguồn như công thức của Dave_750 với âm lượng được tăng cường .
Tuy nhiên, nếu vì lý do nào đó bạn muốn tránh tăng âm lượng chung của luồng, thì Đối thoại Nightmode có thể là lựa chọn tốt nhất của bạn - mặc dù vậy, tôi rất khuyên bạn nên mã hóa luồng âm thanh của mình cho cả hai và so sánh cẩn thận các dạng sóng của cả hai .
Để kết hợp với công thức Đối thoại Nightmode trong 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"
Câu trả lời của Tarc
Câu trả lời này chỉ đơn giản là đặt công thức downmix Dialm Nightmode từ câu trả lời của Shane Harrelson thành một lệnh để chuyển đổi luồng âm thanh trong một thùng chứa MKV. Mặc dù lệnh được đưa ra trong câu trả lời này sẽ hoạt động tốt trên luồng âm thanh như vậy, nhưng việc điều chỉnh nó cho một bản âm thanh độc lập sẽ gây ra lỗi:
Lọc và streamcopy có thể được sử dụng cùng nhau
Điều này là do codec âm thanh không thể được sao chép khi trộn lẫn - giống như tất cả các thay đổi khác mà FFmpeg thực hiện đối với luồng đầu ra, một bản phối trộn yêu cầu bản nhạc phải được mã hóa lại để thay đổi được áp dụng.
Lệnh này cũng bao gồm một -ac 2
công tắc dự phòng mà FFmpeg sẽ bỏ qua.
Lệnh kiểm tra
Để chứng minh độ tin cậy của các thử nghiệm tôi đã thực hiện cho câu trả lời này, dưới đây là tất cả các lệnh tôi đã sử dụng để kiểm tra từng công thức downmix.
Lệnh kiểm tra được sử dụng cho -ac 2
tùy chọn:
ffmpeg -i "signed16bitPCM.wav" -c pcm_s16le -ac 2 "Audio 1 (-ac 2).wav"
Lệnh kiểm tra được sử dụng cho câu trả lời của 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"
Lệnh kiểm tra được sử dụng cho câu trả lời của 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"
Lệnh kiểm tra được sử dụng cho câu trả lời của 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"