ผสานสองแหล่งเสียงด้วย x11grab เป็นไปได้หรือไม่


11

ขณะนี้ฉันกำลังทำงานกับการตั้งค่าต่อไปนี้

ffmpeg \
 -i http://pub1.di.fm:80/di_vocaltrance \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 \
 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
 -c:a libmp3lame -ab 96k -ar 22050 \
 -threads 0 \
 -f flv "rtmp://...."

สิ่งที่ฉันต้องการอบใน:

 -f alsa -ac 2 -i hw:0 -acodec pcm_s32le -aq 1 -ab 128k\

เป็นไปได้ไหม และบางทีแม้แต่ผสมใน "สิ่งที่ฉันได้ยิน" (aka การเล่น) เพื่อพูด?

ฉันได้ลองทำบางสิ่งในบรรทัดของ (แต่ไม่เข้าใจอย่างสมบูรณ์ - แผนที่)

 -i http://pub1.di.fm:80/di_vocaltrance -map 0:1 \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 -map 0:0 \

แต่นั่นก็ไม่ได้ดีนัก

ฉันเข้ามาใกล้มากแล้วนี่ทำให้ฉันได้ช่องเสียง แต่ทุกอย่างดูเหมือนว่าฉันอยู่ในกระป๋องขนาดเล็ก

#!/bin/bash
KEY=`cat key.db`

ffmpeg \
 -i http://pub1.di.fm:80/di_vocaltrance \
 -f alsa -ac 2 -i hw:0 -acodec mp3 -aq 1 -ab 128k \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 \
 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
 -c:a mp3 -ab 96k -ar 22050 \
 -threads 0 \
 -map 0:0 -map 1:0 -map 2:0 \
 -f flv "rtmp://live.twitch.tv/app/$KEY"

จะปรากฏเฉพาะเมื่อฉันผสมเสียงทั้งสองเข้าด้วยกัน พยายามที่จะได้แจ็คเข้าที่นี่เช่นกัน แต่ไม่มีผลลัพธ์ที่แท้จริง (ฉันคิดว่าฉันจะส่งทุกอย่างผ่านบอร์ดมิกเซอร์เพื่อยกเลิกการโหลด ffmpeg จากการผสม)

ทำงานกับ:

 -f alsa -ac 2 -i jack \
 ....

ให้สิ่งนี้อย่างไรก็ตาม:

[alsa @ 0x1399280] ไม่สามารถตั้งค่ารูปแบบตัวอย่าง 0x10000 2 (อาร์กิวเมนต์ไม่ถูกต้อง)

แจ็ค: ข้อผิดพลาดอินพุต / เอาต์พุต


เพียงข้อเสนอแนะ แต่ Sox เป็นยูทิลิตี้ cli ที่ใช้งานง่ายซึ่งออกแบบมาสำหรับสิ่งนี้ น้ำแข็งดูเหมือนจะมีด้ามจับที่แน่นพออยู่แล้ว
mikeserv

คำตอบ:


2

คุณควรใช้ตัวกรอง amix เพื่อผสมเสียงของคุณเข้าด้วยกัน

ตัวอย่าง:

ffmpeg \
  -i http://pub1.di.fm:80/di_vocaltrance \ # internet radio
  -f alsa    -i hw:0 \                     # microphone
  -f x11grab -i :0.0 \                     # computer desktop
  -f v4l2    -i /dev/video0 \              # webcam or
  # -f iec61883 -i auto \                  # firewire camcorder
  -filter_complex '[0:a:0][1:a:0]amix=inputs=2;[3:v:0]scale=200:-1[webcam],[2:v:0][webcam]overlay=main_w-overlay_w-10:main_h-overlay_h-10' \
  <output>

ฉันได้เพิ่มการซ้อนทับของเว็บแคมด้วยเพื่อลบออกให้ลบบรรทัดเว็บแคมเซมิโคลอนและคำจำกัดความหลังจากเซมิโคลอน

เป็นเครื่องที่คุณอาจต้องกำหนด-maps หากคุณเพิ่มอินพุตใด ๆ ที่มีหลายสตรีมเพื่อลบสิ่งที่ไม่เกี่ยวข้อง

คำอธิบาย:

-filter_complex
กำหนดตัวกรองที่มีหลายอินพุตหรือเอาต์พุต
[0:a:0]
สตรีมเสียง 0 ของอินพุต 0 (วิทยุอินเทอร์เน็ต)
[1:a:0]
กระแสข้อมูลเสียงหมายเลข 1 ของอินพุต 0 (ไมโครโฟน)
amix=inputs=2
ผสมเสียงสองสายเข้าด้วยกันหากไม่มีการกำหนดอินพุตสตรีมมันจะเลือกสองเสียงโดยอัตโนมัติดังนั้นในกรณีนี้คุณควรแยกคำจำกัดความทั้งสองข้างต้นออกได้
;
เริ่มสายตัวกรองใหม่
[3:v:0]
วิดีโอสตรีมหมายเลข 3 ของอินพุต 0 (เว็บแคม)
scale=200:-1
ปรับขนาดวิดีโอเป็น 200x ??? -1 จะคงอัตราส่วนไว้ดังนั้นวิดีโอ 600x480 จะกลายเป็น 200x160
[webcam]
เรียกเอาต์พุต "เว็บแคม" ที่ปรับขนาดแล้ว
,
ไปที่ตัวกรองถัดไปในกลุ่มนี้
[2:v:0]
สตรีมวิดีโอหมายเลข 2 ของอินพุต 0 (เดสก์ท็อป)
[webcam]
สตรีมเว็บแคมที่ปรับสัดส่วน
overlay=main_w-overlay_w-10:main_h-overlay_h-10
วางซ้อนอินพุตที่สองเหนืออินพุตแรกวางอินพุตที่สอง 10 พิกเซลจากด้านขวาและ 10 พิกเซลจากด้านล่าง

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

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