Выбор компьютерного звука

Выбор компьютерного звука

Я использую этот скрипт:http://www.thegameengine.org/miscellaneous/streaming-twitch-tv-ubuntu/для трансляции на Twitch. Это работает, но я не хочу транслировать свой микрофон, только звук с компьютера. Как мне изменить скрипт, чтобы добиться этого?

решение1

Выбор компьютерного звука

PulseAudio

Это можно сделать с помощью PulseAudio и pavucontrol. ОтHOWTO: Правильная трансляция экрана в Linux:

Установить pavucontrol. Начните запись с ffmpeg. Запустить pavucontrol. Перейдите на вкладку «Запись», и вы найдете ffmpeg там перечисленные. Измените аудиозахват с «Внутреннее аудио аналоговое стерео» на «Монитор внутреннего аудио аналогового стерео». Теперь он должен записывать системный и прикладной звук вместо микрофона.

Эта настройка будет запомнена. В следующий раз, когда вы захотите захватить с помощью ffmpeg, он автоматически начнет запись системного звука. Если вы хотите вернуть это, используйте pavucontrolснова, чтобы вернуться к микрофонному входу.

АЛСА

Кроме того, ALSA может захватывать системный звук, если ваша аудиосистема поддерживает устройство обратной связи, которое часто обозначается как:Стерео микс,Микс волн,Моно Микс, илиЧто ты слышишь. Проверьте alsamixer, есть ли у вас что-то из этого, ноАппаратная обратная связь в наши дни не так распространена. Затем обратитесь кFFmpeg Wiki: Захват звука с помощью ALSAдля правильного синтаксиса, если ваша система поддерживает эту функцию.

В противном случае я полагаю, что можно создать программную обратную связь с помощью ALSA, но я могу ошибаться и не иметь в этом опыта.


Отстойный сценарий

Команда ffmpegв этом ужасном, повторяющемся скрипте имеет некоторые проблемы:

  • -presetследует использовать вместо-vpre
  • -qscaleигнорируется libx264 (используйте -crfили -b:v)
  • Группа картинок не задана (используйте -g)
  • Следует использовать VBV (использовать -maxrateи -bufsize)
  • Выходные данные могут не использовать совместимую схему субдискретизации цветности (используйте -pix_fmt yuv420p)
  • Входные данные x11grab должны использовать -framerate, а не-r
  • -threads 6кажется произвольным числом, и не все используют одинаковое оборудование. Вам следует либо использовать значение по умолчанию (удалив -threads, но это "жадно"), либо установить подходящее значение, которое позволит вам кодировать с удовлетворительной скоростью и при этом оставить достаточно сока для выполнения других вещей, которые вы записываете.

Вместо этого команда должна быть примерно такой:

ffmpeg \
-f alsa -ac 2 -i "$INAUD" \
-f x11grab -video_size "$INRES" -framerate "$FPS" -i :0.0 \
-vcodec libx264 -s "$OUTRES" -preset "$QUAL" -maxrate 1000k -bufsize 2000k -g 50 -pix_fmt yuv420p \
-acodec libmp3lame -ar 44100 -b:a 128k \
-f flv "$STREAM_URL"

Примечание:Не используйте слепо мои примеры значений для -maxrate, -bufsize, -g, и -b:a. Вы должны настроить их в соответствии со своими потребностями, как описано вКодирование для потоковых сайтов с помощью FFmpeg. Также смРуководство по кодированию видео FFmpeg H.264.

Связанный контент