İki ses kaynağını x11grab ile birleştirin, mümkün mü?


11

Şu anda aşağıdaki kurulumla çalışıyorum.

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://...."

Ne pişirmek istiyorum:

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

Mümkün mü? Ve belki de "duyduğum şeyi" (çalma olarak da bilinir) karıştırın.

Ben bir şey denedim (ama tam olarak anlamak -map)

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

Ama bu pek iyi gitmedi.

Şimdi çok yakınım, bu bana ses kanalları veriyor, ama her şey küçük bir teneke kutu içinde gibiyim.

#!/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"

Sadece iki sesi bir araya getirdiğimde ortaya çıkar. Burada da JACK almaya çalışıyorum, ancak gerçek sonuçlar olmadan (ffmpeg'i karıştırmadan boşaltmak için her şeyi bir mikser panosundan geçireceğimi düşündüm).

Şununla çalışıyor:

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

Ancak bunu verir:

[alsa @ 0x1399280] 0x10000 2 örnek biçimini ayarlayamıyor (Geçersiz bağımsız değişken)

jack: Giriş / çıkış hatası


Sadece bir öneri, ama Sox bu tür bir şey için tasarlanmış basitçe uygulanan bir cli programıdır. donmuş olsa da oldukça sağlam bir kolu var gibi görünüyor.
mikeserv

Yanıtlar:


2

Sesinizi karıştırmak için amix filtresini kullanabilmeniz gerekir.

Misal:

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>

Bir web kamerası kaplaması da ekledim, kaldırmak için web kamerası hattını, noktalı virgül ve noktalı virgül sonrası tanımları çıkardım.

-mapHarici olanları kaldırmak için birden fazla akışı olan herhangi bir girdi eklerseniz s tanımlamanız gerekebilir .

Açıklama:

-filter_complex
çoklu giriş veya çıkışlı filtreleri tanımlar
[0:a:0]
0'ın ses akışı numarası 0'ı girin. (İnternet radyosu)
[1:a:0]
1'in ses akışı numarası 0'ı girin. (Mikrofon)
amix=inputs=2
İki ses akışını karıştırın, eğer herhangi bir giriş akışı tanımlanmadıysa, iki ses akışını otomatik olarak seçer, bu nedenle bu durumda yukarıdaki iki tanımı dışarıda bırakabilmelisiniz.
;
Yeni bir filtre zinciri başlatın
[3:v:0]
3'ün video akışı numarası 0'ı girin. (Web kamerası)
scale=200:-1
Videoyu 200x'e ölçeklendirin, -1 en boy oranını korur, böylece 600x480 video 200x160 olur.
[webcam]
Ölçekli çıkışı "webcam" olarak adlandırın.
,
Bu zincirdeki bir sonraki filtreye devam edin.
[2:v:0]
2'nin video akışı numarası 0'ı girin. (Masaüstü)
[webcam]
Ölçekli web kamerası akışı.
overlay=main_w-overlay_w-10:main_h-overlay_h-10
İkinci girişi birinci girişin üzerine yerleştirin, ikinci girişi sağdan 10 piksel ve alttan 10 piksel yerleştirin.

Ayrıca, bilgisayarın çıkışını elde etmek için ses kartı yakalama kaynağını karıştıracak şekilde ayarlayabilirsiniz ve bir mikrofon monitörü geri dönüşümü almak için genellikle mikrofonun sesini açabilir, ancak düzgün çalışmasını sağlamak için jak veya darbe kullanmanız gerekir. Jack'in neden senin için işe yaramadığını bilmiyorum, bu yüzden sana yardım edemiyorum, üzgünüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.