Mesclar duas fontes de áudio com o x11grab, possível?

10

Atualmente estou executando a seguinte configuração.

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

O que eu quero assar:

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

Isso é possível? E talvez até mesmo misturar "o que eu ouço" (aka reprodução) por assim dizer?

Eu tentei algo ao longo das linhas de (mas não totalmente entender -map)

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

Mas isso não foi muito bem.

Eu estou tão perto agora, isso me dá canais de som, mas tudo parece que eu estou dentro de uma pequena espécie de lata.

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

Ele só aparece quando eu misturo os dois sons juntos. Tentando pegar o JACK aqui também, mas sem nenhum resultado real (eu pensei em passar tudo através de uma placa de mixer para descarregar o ffmpeg da mixagem).

Correndo com:

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

Dá isso no entanto:

[alsa @ 0x1399280] cannot set sample format 0x10000 2 (Invalid argument)

jack: Input/output error

    
por Torxed 27.06.2013 / 18:29

1 resposta

1

Você deve poder usar o filtro amix para misturar seu áudio.

Exemplo:

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>

Eu adicionei uma sobreposição de webcam também, para removê-la, tire a linha da webcam, o ponto e vírgula e as definições após o ponto e vírgula.

Lembre-se de que você pode ter que definir -map s se você adicionar qualquer entrada que tenha vários fluxos para remover os extrínsecos.

Explicação:

-filter_complex
define filtros com várias entradas ou saídas
[0:a:0]
Digite 0 do fluxo de áudio 0 (rádio da internet)
[1:a:0]
Número 0 do fluxo de áudio da entrada 1. (microfone)
amix=inputs=2
Misture dois fluxos de áudio, se nenhum fluxo de entrada for definido, ele selecionará automaticamente dois, portanto, nesta instância, você deve ser capaz de deixar de lado as duas definições acima.
;
Iniciar uma nova cadeia de filtros
[3:v:0]
Número 0 do fluxo de vídeo da entrada 3. (webcam)
scale=200:-1
Transforme o vídeo em 200x ???, -1 mantém a proporção, para que um vídeo de 600 x 480 se torne 200x160.
[webcam]
Ligue para a saída escalada "webcam".
,
Continue para o próximo filtro nesta cadeia.
[2:v:0]
Número 0 do stream de vídeo da entrada 2 (desktop)
[webcam]
O fluxo de webcam dimensionado.
overlay=main_w-overlay_w-10:main_h-overlay_h-10
Sobreponha a segunda entrada sobre a primeira entrada, colocando a segunda entrada a 10 pixels da direita e a 10 pixels da parte inferior.

Além disso, você pode definir a fonte de captura da placa de som para mixar para obter o que o computador produz, e você pode ativar o microfone para obter um loopback de monitor de microfone, mas para que ele funcione corretamente você precisa usar jack ou pulso . Eu não sei porque Jack não funcionou para você, então eu não posso te ajudar com isso, desculpe.

    
por 22.07.2013 / 22:33

Tags

___ qstnhdr __ Analisar mensagens syslog em tabelas MySQL separadas com rsyslog ______ qstntxt ___

Fora da caixa rsyslog despejará tudo na tabela %code% dentro do banco de dados 'Syslog' (se você usar o esquema padrão forneceu). Gostaria de usar uma expressão regular para filtrar mensagens de entrada em tabelas de banco de dados separadas.

Eu já brinquei com isso, mas estou tendo dificuldades para descobrir a melhor maneira de realizar isso (ou até mesmo uma maneira que funcione).

No meu rsyslog.conf:

%pre%

Esta foi minha última tentativa, mas estou presa.

(a tabela RogueAPs é apenas um clone da tabela SystemEvents padrão que vem com o rsyslog)

Informações da versão:

%pre%     
______ azszpr3300 ___

de dar uma olhada no tutorial , não vejo diferença.

Mas dando uma olhada na documentação do modelo do rsyslog , parece haver uma diferença com o mysql dependendo a configuração do parâmetro %code% .

Nos documentos:

%pre%     
______ azszpr12680 ___

A documentação do rsyslog não é, infelizmente, muito completa ou fácil de entender em algumas áreas. Passei uma boa parte das últimas semanas trabalhando em material rsyslog / MySQL / regex.

Você pode postar uma amostra da linha de log que você está tentando corresponder à regex, o esquema da tabela em que você deseja entrar etc.? As coisas que você postou parece que deveria funcionar ... o que você está tentando filtrar? E o esquema padrão é útil para você?

Em uma nota lateral, não pude deixar de notar que você está usando uma tabela chamada RogueAPs. Não sei qual fornecedor você está usando, mas tenho regras de regex para mensagens de log de autenticação dos controladores Meru Networks e BlueSocket.

    
___ Substitui o processo atual pelo seu co-processador / filho