संभव 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\

क्या यह संभव है? और शायद "मैं जो सुनता हूं" (उर्फ प्लेबैक) को बोलने के लिए भी मिलाता हूं?

मैंने कुछ की कोशिश की है (लेकिन पूरी तरह से समझ नहीं)

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

यह केवल तब दिखाई देता है जब मैं दो ध्वनियों को एक साथ मिलाता हूं। यहाँ भी JACK प्राप्त करने की कोशिश की जा रही है, लेकिन बिना किसी वास्तविक परिणाम के (मैंने सोचा कि मैं मिक्सचर के माध्यम से सब कुछ मिश्रण से ffmpeg को अनलोड करने के लिए पास करूँगा)।

साथ चल रहा है:

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

हालांकि यह देता है:

[alsa @ 0x1399280] नमूना प्रारूप 0x10000 2 (अमान्य तर्क) सेट नहीं कर सकता

जैक: इनपुट / आउटपुट त्रुटि


बस एक सुझाव है, लेकिन Sox इस तरह की चीज़ के लिए डिज़ाइन किया गया एक साधारण रूप से लागू किया गया क्ली यूटिलिटी है। जमे हुए हालांकि यह उस पर एक सुंदर फर्म संभालती है।
मिकसेर

जवाबों:


2

आपको अपने ऑडियो को एक साथ मिलाने के लिए एमिक्स फ़िल्टर का उपयोग करने में सक्षम होना चाहिए।

उदाहरण:

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>

मैंने एक वेब कैमरा ओवरले भी जोड़ा, इसे हटाने के लिए, वेब कैमरा लाइन, सेमी-कोलोन और अर्ध-कॉलोन के बाद की परिभाषाओं को हटा दिया।

-mapयदि आप किसी भी इनपुट को जोड़ते हैं तो आप को परिभाषित करना पड़ सकता है, जिसमें बाहरी लोगों को निकालने के लिए कई धाराएँ हैं।

स्पष्टीकरण:

-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 पिक्सेल रखें।

इसके अलावा, आप जो कंप्यूटर आउटपुट प्राप्त करने के लिए मिश्रण करने के लिए साउंड कार्ड कैप्चर स्रोत सेट कर सकते हैं, और आप अक्सर माइक्रोफोन मॉनिटर लूपबैक प्राप्त करने के लिए माइक्रोफोन को अनम्यूट कर सकते हैं, लेकिन इसे ठीक से काम करने के लिए आपको जैक या पल्स का उपयोग करना होगा। मुझे नहीं पता कि जैक ने आपके लिए काम क्यों नहीं किया, इसलिए मैं आपकी मदद नहीं कर सकता, क्षमा करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.