ffmpeg ช่วยทำแผนที่เข้ารหัส 1 6ch เสียงเป็นหลายแทร็ค


1

ฉันมีไฟล์อินพุต 2 ไฟล์:

  • cover.jpg
  • audio.dts (6 ช่องทาง)

ไฟล์เป้าหมายของฉันจะเป็น mp4 พร้อม 1 วิดีโอและ 3 เสียง:

  • audio 1 คือ 2 ช่อง aac
  • audio 2 คือ 6 channel ac3
  • audio 3 คือ 6 channel dts

นี่คือคำสั่งที่ฉันได้ลอง รูปภาพรูปภาพเป็นวิดีโอพร้อมช่องสัญญาณเสียงหลายช่อง:

ffmpeg -loop 1 -i cover.jpg -i audio.dts \
-map 0:0 -map 1:0 -map 1:0 -map 1:0 \
-f mp4 \
-codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \
-codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \
-codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \
-codec:a:2 copy \
-threads 0 -y \
-shortest -t 00:00:39.000 out.mp4

แต่ดูเหมือนว่าตัวเลือกเสียงเหล่านั้นที่ฉันใช้กับ audio # 1 ก็ใช้กับ audio # 2 และ audio # 3 ด้วย

ฉันจะทำให้ตัวเลือกเหล่านั้นทำงานได้เพียงหนึ่งแทร็คเท่านั้น


ลองเข้ารหัสเสียงก่อนเพื่อแยกไฟล์แล้วใช้copyตัวแปลงสัญญาณสำหรับสตรีมเสียงทั้งหมดเมื่อทำการ muxing mp4 ขั้นสุดท้าย
Marki555

1
สิ่งนี้ช่วยฉันอย่างมากเมื่อฉันกำลังทำสิ่งหลายช่อง อาจช่วยคุณได้ แต่อาจจะดู: trac.ffmpeg.org/wiki/AudioChannelManipulation
Russell Uhl

คุณต้องรวมเอาท์พุทคอนโซลที่สมบูรณ์จากffmpegคำสั่งของคุณ
llogan

คำตอบ:


1

เช่นเคยมีหลายวิธีในการปฏิบัติงานเช่นนี้ภายใน FFmpeg

สิ่งที่ฉันคุ้นเคยมากที่สุดคือการใช้channelsplitตัวกรองเพื่อแยกสตรีมเสียงของคุณและกำหนดป้ายกำกับสำหรับแต่ละรายการ ด้วยวิธีนี้คุณสามารถใช้ตัวกรองต่าง ๆ กับช่องใดช่องหนึ่งทีละรายการและแมปเอาท์พุทเพื่อรวมช่องสัญญาณที่คุณต้องการ

ตัวกรองจะมีลักษณะดังนี้:

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...."

ในตัวอย่างนี้เราได้แยกแต่ละช่อง 3 เข้าป้ายใหม่และ[1] [2] [3]ขณะนี้สามารถเรียกป้ายกำกับเหล่านี้ว่าหลังและผลักผ่านตัวกรองอื่น ๆ และ / หรือแมปไปยังผลลัพธ์สุดท้าย

หวังว่านี่จะช่วยได้!


ฉันไม่มีปัญหาเกี่ยวกับช่องสัญญาณเสียง แต่เป็นแทร็กเสียง ฉันมี 1 เสียงมี 6 ช่องสัญญาณและฉันต้องการสร้างแทร็กเสียงต้นฉบับ 3 เวอร์ชันตามที่คุณเห็นในตัวอย่างของฉัน และวิดีโอที่ 1 ดูเหมือนว่าถูกเรียกว่า v: 0 และเสียงที่ 1 เรียกว่า a: 0 และ 2nd a: 1 ถ้าฉันระบุพารามิเตอร์เช่น "-ac: a: 1 2" อีกครั้งเข้ารหัสเสียงที่ 2 เป็น 2 ช่องทางแทร็ก แต่ ffmpeg ไม่ได้ไปตามทางของฉัน
Beterhans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.