Использование FFMPEG для потоковой передачи в Twitch.tv с помощью настольного аудио?

Я пытаюсь в течение последнего часа транслировать Twitch.tv с помощью рабочего звука в потоке. В настоящее время я могу использовать это, чтобы отобразить видео на Twitch:

#! /bin/bash INRES="1280x800" # input resolution OUTRES="640x480" # Output resolution FPS="30" # target FPS QUAL="medium" # one of the many FFMPEG presets STREAM_KEY=$(cat ~/.twitch_key) ffmpeg \ -f x11grab -s $INRES -r "$FPS" -i :0.0 \ -f alsa -ac 2 -i pulse \ -vcodec libx264 -s $OUTRES -preset $QUAL \ -acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b 712000 -bufsize 512k \ -f flv "rtmp://live.justin.tv/app/$STREAM_KEY" 

Я хочу, чтобы это было сделано вместе с моим микрофоном, мне нужен звук, который мой компьютер играет (например, аудио с видео на YouTube), чтобы загрузить его в поток.

Я также открыт для других вариантов, но пока я не смог найти их.

2 Solutions collect form web for “Использование FFMPEG для потоковой передачи в Twitch.tv с помощью настольного аудио?”

Попытка №2

(Метод ALSA работал, но звук тихий!)

Нашли эти 2 метода в блоге, озаглавленном: Broadcasting to twitch.tv, используя ffmpeg .

Сначала установите эти переменные следующим образом:

 SIZE=”1600×1200″ BITRATE=”128k” FRAMERATE=”20″ KEY=”your key here” 

Затем используйте это для ALSA:

 $ ffmpeg \ -f x11grab -s $SIZE -r $FRAMERATE -i :0.0 \ -f alsa -ac 2 -i hw:0,0 -vb $BITRATE -vcodec libx264 \ -threads 0 -acodec libmp3lame -ab 128k -ar 22050 \ -f flv “rtmp://live.justin.tv/app/$KEY” 

Или, если вы используете OSS:

 $ ffmpeg \ -f x11grab -s $SIZE -r $FRAMERATE -i :0.0 \ -f oss -i /dev/dsp -vb $BITRATE -vcodec libx264 \ -threads 0 -acodec libmp3lame -ab 128k -ar 22050 \ -f flv “rtmp://live.justin.tv/app/$KEY” 

Я также нашел дополнительную информацию о том, как установить это на следующих страницах:

  • Потоковая передача с помощью ffmpeg в Twitch. Проблема с аудио
  • Потоковая передача в Twitch.TV с Linux

Попытка № 1 – (не работает)

Получена эта ошибка: Неизвестный формат ввода: 'pulse'

Я нашел это на ffmpeg wiki. Это было на странице под названием Streaming Guide .

 $ ffmpeg \ -f x11grab -s $INRES -r $FPS -i :0.0 \ -f pulse -ac 2 -i default -c:v libx264 -preset $QUAL \ -pix_fmt yuv420p -s $OUTRES -c:a libmp3lame -ab 96k -ar 22050 \ -threads 0 -f flv "rtmp://live.justin.tv/app/$STREAM_KEY" 

Сначала вам нужно правильно настроить ALSA, загрузив модуль snd_aloop и используя его именованное устройство в плагине mdev. Вы одновременно выведете звук приложения через устройство обратной связи и другое устройство по вашему выбору.

 # ~/.asoundrc pcm.!default { type plug slave.pcm mdev route_policy duplicate } pcm.mdev { type multi slaves.a.pcm "hw:Loopback,0,0" slaves.a.channels 2 slaves.b.pcm "hw:0,0" slaves.b.channels 2 bindings.0.slave a bindings.0.channel 0 bindings.1.slave a bindings.1.channel 1 bindings.2.slave b bindings.2.channel 0 bindings.3.slave b bindings.3.channel 1 } pcm.loopback { type hw card Loopback device 1 subdevice 0 } pcm.mic { type hw card 1 device 0 } 

FFMPEG может объединять несколько аудиопотоков, используя фильтр amerge. Вы предоставите ему источник обратной связи цикла, и вы можете предоставить дополнительные входы. Этот пример включает в себя микрофон. Этот скрипт настроен для потоковой передачи в TwitchTV.

 #!/bin/bash FPS="30" QUAL="faster" GOP="60" GOPMIN="30" CBR="1500k" ABR="96k" SIZE="960x540" OUTPUT=""rtmp://live-jfk.twitch.tv/app/${STREAM_KEY}" function GetWindowPos() { echo $(xwininfo | grep 'Absolute' | awk '{ORS=" "; print $4;}' | awk '{print ":0.0+"$1","$2"+draw_mouse=0";}') } function GetWindowSize() { echo $(xwininfo | grep 'Width\|Height' | awk '{ORS=" "; print $2;}' | awk '{print $1"x"$2;}') } ffmpeg \ -f alsa -i mic \ -f alsa -i loopback \ -f x11grab -s $(GetWindowSize) -i $(GetWindowPos) \ -acodec aac -ab "$ABR" -strict -2 \ -vcodec libx264 -preset "$QUAL" \ -g "$GOP" -keyint_min "$GOPMIN" \ -b:v "$CBR" -minrate "$CBR" -maxrate "$CBR" -bufsize "$CBR" \ -filter_complex "[2:0]format=pix_fmts=yuv420p[vstream];[0:0][1:0]amerge=inputs=2[astream]" \ -flags:v +global_header -flags:a +global_header \ -r "$FPS" -s "$SIZE" \ -map "[vstream]" -map "[astream]" \ -f flv "$OUTPUT" 

Это будет на порядок проще использовать PulseAudio, но я часто испытываю латентность с использованием источников монитора, что ужасно для потоковой передачи в реальном времени. Если вы потеряли время на PulseAudio, вы можете просто отключить устройства ALSA для двух импульсных входов.

 -f alsa -i mic \ -f alsa -i loopback \ 

Они изменились бы на:

 -f alsa -i pulse \ -f alsa -i pulse \ 

Затем вы будете устанавливать входы в pavucontrol.

  • Пытается сжать avi-файл, используя ffmpeg
  • FFMpeg: преобразование GIF в MP4 вызывает ошибку кода.
  • обрезать видеофайлы с помощью информации о звуковой дорожке
  • Как добавить aac и libx264 в установку FFmpeg?
  • Транскодирование потока MJPEG в FLV или MP4
  • прошивка avconv / ffmpeg не работает
  • ffmpeg зависает при попытке записи видео на более высокие разрешения
  • gnu параллельно с ffmpeg не обрабатывает первый файл
  • Как транслировать локальное видео на веб-камеру, используя ffmpeg?
  • Компиляция ffmpeg с hwaccel
  • Avconv создает 0-байтовый выходной файл после применения снижения частоты кадров
  • Interesting Posts

    Проблемы с CMake в CentOS 6

    Режим установки режима «Только в режиме READ-WRITE»

    Как запустить несколько программ в одном окне терминала?

    Невозможно вытащить метаданные репозитория EPEL

    Повторное назначение (в частности, увеличение) переменной в сценарии bash

    Raid 0 Установка Linux не позволяет установить grub

    Является ли шифрование вашего веб-браузера через SSH в localhost полезным?

    Минимальное диалоговое окно настроек xfce4-display-settings не отображает параметр «перейти вправо»

    Debian (jessie) с XFCE, сеансами и запуском: приложение Autostart

    Как управлять несколькими макетами панелей для разных настроек дисплея в KDE?

    Что такое интерфейс loopback

    Как читать весь скрипт оболочки перед его исполнением?

    Не удается удалить файл: «Структура нуждается в очистке»

    Создайте образ ISO-образа DVD из каталога

    Настольная среда, которая только запускает полноэкранный терминал

    Linux и Unix - лучшая ОС в мире.