mpg123 볼륨 제어

mpg123 볼륨 제어

정말 좋은 시간이에요! 현재 다양한 볼륨 레벨에서 다양한 오디오 스트림을 시작해야 하는 "스마트 홈"과 같은 작업을 진행하고 있습니다. 예를 들어 배경음악을 원래 볼륨의 20%로 듣고 싶은데, 누군가 초인종을 누르면 벨소리를 100% 볼륨으로 듣고 싶습니다. 현재 저는 mpg123Python 스크립트를 사용하고 있습니다. Python 스크립트는 pexpectmpg123을 실행하고 필요한 설정을 지정합니다.

mpg123 -vC <filename>

현재 메서드는 's'플레이어가 시작되자마자 일시 중지 신호를 보냅니다. 그런 다음 원하는 양( '-'예: 볼륨을 2만큼 줄임)을 플레이어에 보내고 재생을 다시 시작합니다. 흠... 작동하지만 구현이 보기 흉하고 플레이어 시작과 볼륨 감소 사이에 약간의 차이가 있습니다. 적어도 Python 스크립트가 실제로 플레이어를 일시 중지하고 볼륨을 낮추기 전에 첫 번째 "패킷" 중 일부를 들었습니다.

일부 명령을 통해 볼륨을 줄이는 방법이 있습니까? mpg123을 일시 중지하는 방법이 있습니까? 최소한 이 격차를 줄여보세요.

감사해요!

답변1

스마트 홈에서 블루투스 오디오 관리를 위해 동일한 작업을 수행하고 다음을 사용했습니다.

mpg123 -f -2000 test.mp3

진폭의 최대값은 100%로 32768에 해당합니다. 저는 약 6.1%인 2000의 값을 사용했습니다. 자세한 내용은 설명서를 참조하세요.man mpg123

펄스 사용을 권장하지 않습니다. mpg123 내부에서 alsa를 사용하세요.

재미있게 보내세요

답변2

Pulseaudio 옵션:

mpg123paplay1) 다음과 같은 것을 사용하여 의 출력을 스트리밍합니다 .

mpg123 --stdout ... | paplay --rate=44100 --format=s16le --channels=2 --stream-name=Music --client-name=Musicplayer --volume=65536

위와 같이 명령줄에서 볼륨을 설정할 수도 있고, pavucontrol클라이언트 이름으로 볼륨을 한 번 설정하면 다음에 동일한 애플리케이션이 시작될 때 이를 기억할 수 있습니다. 따라서 Musicplayer및 등의 다른 클라이언트 이름을 사용하는 경우 BellringerPython에서 볼륨을 변경할 필요 없이 볼륨을 한 번에 미리 설정할 수 있습니다.

2) 다른 프로그램을 사용하여 Pulseaudio를 사용하여 MP3 파일을 재생하고 클라이언트 이름이 설정되어 있거나 인식 가능한 클라이언트 이름이 있거나 볼륨을 설정하는 옵션이 있습니다. 예를 들어

mplayer -volume=... ...

그런 다음 위와 동일한 옵션이 있습니다.

3) 재생 중인 스트림의 볼륨을 사용하거나 설정합니다 pamcd.pactl

pacmd set-sink-input-volume 42 50%

당신은 다음과 같은 것을 사용할 수 있습니다

pacmd list-sink-inputs | egrep '(index)|(name)'

특정 스트림 또는 클라이언트 이름에 대한 인덱스 번호를 찾습니다. 또는 Python에서 전체 출력을 구문 분석합니다.

4) Python에서 Pulseaudio의 DBUS 인터페이스를 사용하십시오. 이를 위해서는 약간의 프로그래밍이 필요합니다.

나는 Python을 사용하여 UI를 통해 볼륨을 변경하는 것을 권장하지 않습니다 pexpect. 그것은 끔찍한 자갈처럼 보이고 실제로 "더 높은 수준"이 아닙니다.

관련 정보