Об’єднати два аудіо-джерела з 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 - це просто реалізована утиліта для кліпів, створена для подібних речей. Заморожений, здається, має досить тверду ручку на ньому, хоча.
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]
Вхідний аудіопотік № 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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.