FFmpeg ทดแทนช่องสัญญาณในเสียงโดยใช้ไฟล์เสียงภายนอก


0

ฉันมีไฟล์เสียง 2 ไฟล์ในรูปแบบ ac3 และทั้งคู่มีเพียงหนึ่งช่องสัญญาณ (audio1.ac3 และ audio2.ac3)

ในทางกลับกันฉันมีไฟล์ mkv ที่มีวิดีโอและสตรีมเสียง 2 รายการ (video.mkv)

ออดิโอสตรีม 1 อยู่ในรูปแบบ ac3 และมี 4 ช่องสัญญาณ (ลองเรียกมันว่า L1 R1 C1 LFE1)

Audio stream 2 อยู่ในรูปแบบ ac3 และมี 4 channel ด้วย (เรียกมันว่า L2 R2 C2 LFE2)

ฉันต้องการแทนที่ช่องสัญญาณกลางในออดิโอสตรีม 1 และสตรีมเสียง 2 โดยใช้ไฟล์ ac3 ที่ฉันกล่าวถึงก่อนหน้านี้ ฉันต้องการเป็นเอาต์พุตสุดท้ายไฟล์ mkv ที่มีสตรีมเสียง 2 รายการ:

Audio stream 1 -> L1 R1 (audio1.ac3 as center C1) LFE1

Audio stream 2 -> L2 R2 (audio2.ac3 as center C2) LFE2

ฉันต้องการเก็บแท็กข้อมูลเมตาที่มีอยู่แล้วในไฟล์ mkv สำหรับชื่อของสตรีมเสียงเหล่านี้และทำกระบวนการทั้งหมดโดยไม่มีการสูญเสียคุณภาพและการใช้ FFmpeg จากบรรทัดคำสั่ง (ฉันอยู่บน Windows แต่สามารถทำได้จาก อูบุนตูด้วย)

ข้อมูลทั้งหมดที่ฉันได้พบนั้นเกี่ยวกับการทดแทนสตรีมทั้งหมด แต่ไม่ได้อยู่ในระดับช่อง อาจเป็นสิ่งที่ไม่สามารถทำได้

หมายเหตุ: ไฟล์เสียงทั้งหมดมีอัตราตัวอย่างเดียวกันพารามิเตอร์เป็นสตรีมในไฟล์ mkv

คำตอบ:


1

ทดแทนช่องสัญญาณเสียงโดยใช้ไฟล์เสียงภายนอก

วิธีหนึ่งคือการใช้ร่วมกรอง:

ffmpeg -i input.mkv -i audio1.ac3 -i audio2.ac3 -filter_complex "[0:a:0][1:a]join=inputs=2:channel_layout=5.1:map=0.0-FL|0.1-FR|1.0-FC|0.3-LFE|0.4-BL|0.5-BR[a0];[0:a:1][2:a]join=inputs=2:channel_layout=5.1:map=0.0-FL|0.1-FR|1.0-FC|0.3-LFE|0.4-BL|0.5-BR[a1]" -map 0:v -map "[a0]" -map "[a1]" -c:v copy -c:a flac output.mkv

ฉันได้ตั้งสมมติฐานเกี่ยวกับการสั่งซื้อช่อง คุณอาจต้องปรับ ดูffmpeg -layoutsข้อมูลโครงร่างช่อง


รักษาแท็กข้อมูลเมตา

จากเอกสาร (ภายใต้-map_metadataตัวเลือก):

โดยค่าเริ่มต้นแล้วข้อมูลเมตาส่วนกลางจะถูกคัดลอกจากไฟล์อินพุตแรกเมตาดาต้าต่อสตรีมและต่อบทจะถูกคัดลอกพร้อมกับสตรีม / บท

คุณไม่ได้ให้ข้อมูลรายละเอียดเกี่ยวกับไฟล์ของคุณหรือข้อมูลเมตา (ผลลัพธ์ที่สมบูรณ์ของข้อมูลffmpeg -i input.mkv -i audio1.ac3 -i audio2.ac3จะเพียงพอ) ดังนั้นฉันจะถือว่าพฤติกรรมเริ่มต้นควรใช้งานได้

ไม่มีการสูญเสียคุณภาพ

ตัวกรองต้องการการเข้ารหัสซ้ำดังนั้นรูปแบบ lossless (flac) จะถูกใช้ในตัวอย่าง


ขอบคุณสำหรับคำตอบโดยละเอียด เนื่องจากฉันต้องการ AC3 เป็นเอาต์พุตฉันควรใช้วิธีการของคุณแล้วแปลง FLAC เป็น AC3 หรือไม่
tom_len

@tom_len คุณสามารถใช้-c:a ac3แทน-c:a flacได้
slhck

@tom_len ฉันแนะนำ flac เพราะคุณไม่มีข้อกำหนดด้านการสูญเสียคุณภาพ ac3 เป็นความสูญเสีย
llogan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.