Запись звукового импульса в формате CAP_SYS_ADMIN с помощью ffmpeg - PullRequest
0 голосов
/ 24 июня 2018

Как мой обычный пользователь, это работает:

ffmpeg -f pulse -i default -acodec aac foo.aac

, но запуск с sudo завершается неудачно с:

default: No such process

Как я могу запустить ffmpeg как привилегированный пользователь (CAP_SYS_ADMIN), так как я стремлюсь использовать опцию kmsgrab и по-прежнему получать доступ к звуку для его записи?

1 Ответ

0 голосов
/ 12 марта 2019

Подключение к серверу Pulse Audio производится в два этапа:

  1. Путь к серверу.По умолчанию сервер PulseAudio делает себя доступным для клиентов, создавая сокет UNIX под $XDG_RUNTIME_DIR.Выполнение команд через sudo приведет к сбросу среды, в результате чего клиенты PulseAudio не смогут найти сервер для подключения.

  2. Аутентификация.По умолчанию сервер PulseAudio создает файл cookie для аутентификации в ~/.pulse-cookie, который клиенты должны передавать на сервер при подключении.Если $HOME или $PULSE_COOKIE не установлены в местоположение cookie, клиенты не смогут аутентифицироваться.

Полная команда запуска ffmpeg через sudo выглядит следующим образом:

sudo env \
    PULSE_COOKIE=$HOME/.pulse-cookie \
    PULSE_SERVER=$XDG_RUNTIME_DIR/pulse/native \
    ffmpeg -y -f pulse -i default -acodec aac foo.aac 

Возможно, вы можете заменить PULSE_SERVER опцией устройства -server ffmpeg .

...