AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 763529
Accepted
kr37
kr37
Asked: 2023-12-11 13:19:27 +0800 CST2023-12-11 13:19:27 +0800 CST 2023-12-11 13:19:27 +0800 CST

Como configurar o arquivo de configuração ices2 para Zoom R16 de 8 canais

  • 772

Sou novo no ices2 e no icecast2, mas consegui configurar um stream onde posso me ouvir em meus fones de ouvido. Então, algum sucesso básico com o sistema. Agora, o verdadeiro objetivo:

Gostaríamos de transmitir em 8 idiomas diferentes usando os recursos de interface de áudio de um gravador Zoom R16. Fazendo arecord --dump-hw-params hw1,0no R16, ele retorna:

Recording WAVE 'hw1,0' : Unsigned 8 bit, Rate 8000 Hz, Mono
HW Params of device "default":
--------------------
ACCESS:  RW_INTERLEAVED
FORMAT:  U8 S16_LE S16_BE S24_LE S24_BE S32_LE S32_BE FLOAT_LE FLOAT_BE MU_LAW A_LAW S24_3LE S24_3BE
SUBFORMAT:  STD
SAMPLE_BITS: [8 32]
FRAME_BITS: [8 1024]
CHANNELS: [1 32]
RATE: [1 384000]
PERIOD_TIME: (2 4294967295)
PERIOD_SIZE: [1 1398102)
PERIOD_BYTES: [128 1398102)
PERIODS: [3 1024]
BUFFER_TIME: (7 4294967295]
BUFFER_SIZE: [3 4194304]
BUFFER_BYTES: [384 4194304]
TICK_TIME: ALL
--------------------

Pergunta 1: Qual é o significado dos números com espaços entre eles, como SAMPLE_BITS: [8 32]? Isso significa que os bits de amostra podem ser 8, 16 ou 32?

Pergunta 2: Como resolver "EROR input-alsa/alsa_open_module Formato de exemplo não disponível: argumento inválido"

Quando tento iniciar o ices2, ele simplesmente fecha e o log diz:

[2023-12-10  20:48:46] INFO ices-core/main IceS 2.0.3 started...
[2023-12-10  20:48:46] EROR input-alsa/alsa_open_module Sample format not available: Invalid argument
[2023-12-10  20:48:46] EROR input/input_loop Couldn't initialise input module "alsa"
[2023-12-10  20:48:46] INFO ices-core/main Shutdown complete

O arquivo de configuração que estou usando para ices2 é:

<?xml version="1.0"?>
<ices>

    <!-- run in background  -->                     <background>0</background>

    <!-- where logs go. -->                            <logpath>/var/log/ices2</logpath>
                                                       <logfile>ices.log</logfile> 
    <!-- size in kilobytes -->                         <logsize>2048</logsize>
    <!-- 1=error, 2=warn, 3=infoa ,4=debug -->        <loglevel>4</loglevel>
    <!-- logfile is ignored if this is set to 1 --> <consolelog>0</consolelog>

    <!-- optional filename to write process id to -->  <pidfile>/var/log/ices2/ices.pid</pidfile> 

    <stream>
        <!-- metadata used for stream listing -->
        <metadata>
            <name>8 Languages</name>
            <genre>Dharma Teaching</genre>
            <description>Translation of 2024 International Spring Festival</description>
            <url>http://localhost/</url>
        </metadata>

        <!--    Input module.

            This example uses the 'alsa' module. It takes input from the
            ALSA audio device (e.g. line-in), and processes it for live
            encoding.  -->
        <input>
            <module>alsa</module>
            <param name="rate">48000</param>
            <param name="channels">8</param>
            <param name="device">hw:1,0</param>
            <param name="periods">2</param>
            <!-- Read metadata (from stdin by default, or -->
            <!-- filename defined below (if the latter, only on SIGUSR1) -->
            <param name="metadata">1</param>
            <param name="metadatafilename">testES</param>
        </input>

        <!--    Stream instance.

            You may have one or more instances here.  This allows you to
            send the same input data to one or more servers (or to different
            mountpoints on the same server). Each of them can have different
            parameters. This is primarily useful for a) relaying to multiple
            independent servers, and b) encoding/reencoding to multiple
            bitrates.

            If one instance fails (for example, the associated server goes
            down, etc), the others will continue to function correctly.
            This example defines a single instance doing live encoding at
            low bitrate.  -->

        <instance>
            <!--    Server details.

                You define hostname and port for the server here, along
                with the source password and mountpoint.  -->

            <hostname>localhost</hostname>
            <port>8000</port>
            <password>hackme</password>
            <mount>/spanish.ogg</mount>
            <yp>1</yp>   <!-- allow stream to be advertised on YP, default 0 -->

            <!--    Live encoding/reencoding:

                channels and samplerate currently MUST match the channels
                and samplerate given in the parameters to the alsa input
                module above or the remsaple/downmix section below.  -->

            <encode>  
                <quality>0</quality>
                <samplerate>24000</samplerate>
                <channels>8</channels>
            </encode>

            <!-- stereo->mono downmixing, enabled by setting this to 1 -->
            <downmix>0</downmix>

            <!-- resampling.
            
                Set to the frequency (in Hz) you wish to resample to, -->
             
            <resample>
                <in-rate>48000</in-rate>
                <out-rate>24000</out-rate>
            </resample>
        </instance>

    </stream>
</ices>

Mas no geral, o que eu gostaria de saber é:

Pergunta 3: O que precisa ser inserido no arquivo de configuração para que o canal 1 do gravador possa ser transmitido em espanhol, o canal 2 em francês, o canal 3 em alemão, ... canal 8. Presumo que realmente precise de 8 configurações diferentes arquivos e execute 8 instâncias do ices2, mas como selecionar o canal certo?

Editar: posso dizer também que isso funciona para gravar um arquivo wav de 8 canais:

arecord -D hw:1,0 -f S32_LE -r 48000 -c 8 testr16.wav
alsa
  • 1 1 respostas
  • 25 Views

1 respostas

  • Voted
  1. Best Answer
    kr37
    2023-12-13T16:12:30+08:002023-12-13T16:12:30+08:00

    OK, fiz funcionar, com estas áreas principais:

    • Divida os fluxos no nível do ALSA em ~/.asoundrc
      -- Use dsnooppara dividir
      -- Todos os fluxos de um dispositivo de hardware precisam usar o mesmo ipc_key.
    • Nos arquivos de configuração do ices2
      - O dispositivo está plug:{name from .asoundrc}
      - Acerte os canais. Eu tinha deixado configurado para 8 canais, embora a alsa agora estivesse fornecendo um pcm de canal único, o que resultou em ruídos estridentes sendo transmitidos!
    • Em /etc/icecast2/icecast.xmlteve que aumentar<sources>8</sources>

    Aqui está o final ~/.asoundrc. Observe que como todos os canais dsnoop vêm do mesmo dispositivo de hardware, eles precisam ter o mesmo ipc_key. Caso contrário, assim que você iniciar a gravação de um canal, o restante reportará como Dispositivo está ocupado .

    pcm_slave.r16 { pcm "hw:1,0"; rate 48000; channels 8 }
    pcm.ch1 { type dsnoop; ipc_key 3700; slave r16; bindings.0 0; }
    pcm.ch2 { type dsnoop; ipc_key 3700; slave r16; bindings.0 1; }
    pcm.ch3 { type dsnoop; ipc_key 3700; slave r16; bindings.0 2; }
    pcm.ch4 { type dsnoop; ipc_key 3700; slave r16; bindings.0 3; }
    pcm.ch5 { type dsnoop; ipc_key 3700; slave r16; bindings.0 4; }
    pcm.ch6 { type dsnoop; ipc_key 3700; slave r16; bindings.0 5; }
    pcm.ch7 { type dsnoop; ipc_key 3700; slave r16; bindings.0 6; }
    pcm.ch8 { type dsnoop; ipc_key 3700; slave r16; bindings.0 7; }
    

    Não se esqueça de reiniciar o ALSA:sudo /etc/init.d/alsa-utils restart

    Então criei 8 arquivos de configuração ices2 separados,

    ices-alsa-r16.1.xml 
    ices-alsa-r16.2.xml 
    ...
    ices-alsa-r16.8.xml
    

    E aqui está o arquivo de configuração. As três coisas que mudam são o dispositivo, a montagem e o pid:

    dispositivo: plug:ch1para plug:ch8
    montar: ch1.oggpara ch8.ogg
    arquivo PID: r16.1.pidparar16.8.pid

    <?xml version="1.0"?>
    <ices>
    
        <!-- run in background  -->                     
        <background>1</background>
        <logpath>/var/log/ices2</logpath>
        <logfile>ices.log</logfile> 
        <logsize>2048</logsize>
        <loglevel>4</loglevel>
        <consolelog>0</consolelog>
        <pidfile>/var/log/ices2/r16.8.pid</pidfile> 
    
        <stream>
            <metadata>
                <name>8 Languages</name>
                <genre>Dharma Teaching</genre>
                <description>Translation of 2024 International Spring Festival</description>
                <url>http://localhost/</url>
            </metadata>
    
            <input>
                <module>alsa</module>
                <param name="rate">48000</param>
                <param name="channels">1</param>
                <param name="device">plug:ch8</param>
                <param name="periods">3</param>
                <param name="buffer-time">500</param>
            </input>
    
            <instance>
                <hostname>localhost</hostname>
                <port>8000</port>
                <password>hackme</password>
                <mount>/ch8.ogg</mount>
    
                <encode>  
                    <quality>0</quality>
                    <samplerate>24000</samplerate>
                    <channels>1</channels>
                </encode>
                 
                <resample>
                    <in-rate>48000</in-rate>
                    <out-rate>24000</out-rate>
                </resample>
            </instance>
    
        </stream>
    </ices>
    

    Algumas boas informações aqui:
    https://alsa.opensrc.org/Asoundrc https://bootlin.com/blog/audio-multi-channel-routing-and-mixing-using-alsalib/

    • 0

relate perguntas

  • Vários problemas com o alsamixer após abrir o laptop (sem problemas em outros sistemas operacionais)

  • Qual é o significado de fragments e fragment_size nos módulos PulseAudio ALSA?

  • Configurando o novo dispositivo de reprodução de áudio padrão para ALSA em .asoundrc

  • Faça um registro ignorar um jogo

  • alsa-utils no FreeBSD parece não funcionar

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve