09.06.2026

Появилась следующая задача:

  • На колонки идёт трансляция аудио с Интернета через браузер. Средств записи приложение не предоставляет.
  • Необходимо записать звук этой трансляции в файл.
  • Linux Devuan 6.1, микшер звуковых потоков - pulseaudio.

Решение:

  • Команда pactl даёт:

    $ pactl list sources

    Источник №0
            Состояние: SUSPENDED
            ......

    Источник №1
            Состояние: RUNNING
            Имя: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
            Описание: Monitor of Встроенное аудио Аналоговый стерео
            Драйвер: module-alsa-card.c
            Спецификация отсчётов: s16le 2-канальный 4410
            Схема каналов: front-left,front-right
            ......

  • Исходя из результата команды для записи потока надо использовать устройство:
    alsa_output.pci-0000_00_1f.3.analog-stereo.monitor

  • Пишу звук с помощью ffmpeg:
    ffmpeg -f pulse -i  alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -ac  2  audiofile.mp3

    ключ -ac 2 указывает, что пишется 2 канала.

 

При записи или после неё можно поиграться скоростью, качеством, уровнем громкости, обрезать файл.
Приведу конкретные ключи, которыми пользовался для получения записи нужной длины, качества, громкости:

  • Вырезать из записи нужный кусок, начиная с 4-й секунды по 31:13
    ffmpeg -ss 00:00:04 -to 00:31:13   -i   input.mp3 -c copy output.mp3
  • Увеличить громкость в 2.3 раза:
    ffmpeg -i input.mp3  -filter:a "volume=2.3" output.mp3

  • Уменьшить размер выходного файла за счёт уменьшения качество
    ffmpeg -i input.mp3  -codec:a  libmp3lame  -qscale:a 5 output.mp3

    Параметр за ключом -qscale:a может быть от 0 до 9, где 0 - максимальное качество, 9 - минимальное.

     

  • Объединить аудиофайлы в один:
    ffmpeg  -i  "concat:file.mp3|file2.mp3|file3.mp3" -acodec copy unitedfile.mp3