User Tools

Site Tools


music_on_linux:pulseaudio_설정_및_활용

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
music_on_linux:pulseaudio_설정_및_활용 [2021/03/24 06:33] – [parec 응용 스크립트로 애플리케이션 출력을 녹음하기] hyjeongmusic_on_linux:pulseaudio_설정_및_활용 [2022/04/17 00:39] (current) – [parec 응용 스크립트로 애플리케이션 출력을 녹음하기] hyjeong
Line 2: Line 2:
  
 ===== PulseAudio의 실행과 중단 ===== ===== PulseAudio의 실행과 중단 =====
-[[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/|Running PulseAudio]] +[[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/|Running PulseAudio]]를 한번 훑어보자. 과연 내 리눅스 시스템에 PulseAudio가 설치되어 돌아가는 중인가? 우분투/데비안 계열이라면 그럴 가능성은 200%이다. 그럼에도 불구하고 확신이 들지 않는다면 다음 명령어를 입력해 본다.
- +
-과연 내 리눅스 시스템에 PulseAudio가 설치되어 돌아가는 중인가? 우분투/데비안 계열이라면 그럴 가능성은 200%이다. 그럼에도 불구하고 확신이 들지 않는다면 다음 명령어를 입력해 본다.+
  
   $ pulseaudio --check # 아무 것도 나오지 않으면(exit code 0) 실행 중이라는 뜻이다.   $ pulseaudio --check # 아무 것도 나오지 않으면(exit code 0) 실행 중이라는 뜻이다.
-  # 또는 다음과 같이 입력하여 확인+  # 또는 다음과 같이 입력하여 무언가 줄줄 출력된다면 실행 중이라는 뜻이다. 
   $ pactl list # or 'pactl list short'   $ pactl list # or 'pactl list short'
-  $ pactl list short sinks+  $ pactl list short sinks # or 'pacmd list-sinks'
  
 PulseAudio는 autospawn 기능에 의해 클라이언트 요청이 있으면 저절로 시작된다. 따라서 PulseAudio을 중단하려면 ~/.config/pulse/client.conf 또는 /etc/pulse/client.conf 파일에서 "autospawn = no"으로 설정을 한 뒤 다음을 실행한다. PulseAudio는 autospawn 기능에 의해 클라이언트 요청이 있으면 저절로 시작된다. 따라서 PulseAudio을 중단하려면 ~/.config/pulse/client.conf 또는 /etc/pulse/client.conf 파일에서 "autospawn = no"으로 설정을 한 뒤 다음을 실행한다.
-    $ pulseaudio --kill # 또는 다음과 같이 실행한다.+    $ pulseaudio --kill # 'pulseaudio -k' 또는 다음과 같이 실행한다.
     $ killall pulseaudio     $ killall pulseaudio
  
 PulseAudio는 start-pulseaudio-x11 명령을 통해 실행된다. 설정 파일은 /etc/xdg/autostart/pulseaudio.desktop이다. /etc/xdg/autostart는 graphical session manager가 사용자 로그인시 자동으로 실행하는 응용 프로그램의 정보를 수록한 디렉토리이다.  PulseAudio는 start-pulseaudio-x11 명령을 통해 실행된다. 설정 파일은 /etc/xdg/autostart/pulseaudio.desktop이다. /etc/xdg/autostart는 graphical session manager가 사용자 로그인시 자동으로 실행하는 응용 프로그램의 정보를 수록한 디렉토리이다. 
  
 +PulseAudio를 다시 시작하려면 설정 파일을 "autospawn = yes"로 되돌린 후 다음을 실행한다.
 +  $ pulseaudio --start
  
 ===== CLI 문법 ===== ===== CLI 문법 =====
Line 37: Line 37:
 ===== pacat 활용하기 ===== ===== pacat 활용하기 =====
 paplay, parec, parecord, pamon은 전부 **pacat**을 가리키는 심볼릭 링크이다. 다른 이름으로 불리고 있지만 실제로는 하나의 실행 파일이 녹음과 재생 등 다양한 역할을 수행하는 것이다. paplay, parec, parecord, pamon은 전부 **pacat**을 가리키는 심볼릭 링크이다. 다른 이름으로 불리고 있지만 실제로는 하나의 실행 파일이 녹음과 재생 등 다양한 역할을 수행하는 것이다.
 +  * pacat -r | %%--%%record = parec
 +  * pacat -p | %%--%%playback = paplay
 ==== parec 응용 스크립트로 애플리케이션 출력을 녹음하기 ==== ==== parec 응용 스크립트로 애플리케이션 출력을 녹음하기 ====
 **parec**은 PulseAudio 사운드 서버를 거치는 오디오 스트림(예: 애플리케이션의 출력)을 녹음하는 유틸리티이다. 이것을 그대로 사용하기에는 꽤 난해하니(바로 다음에 새로 추가한 섹션에 따르면 그렇지도 않음) 이를 응용하여 만든 스크립트인 [[https://gist.github.com/ramast/4be3314bc73f28f55e3604497188b007|pulse-recorder.bash]]를 사용하는 것이 편리하다.  **parec**은 PulseAudio 사운드 서버를 거치는 오디오 스트림(예: 애플리케이션의 출력)을 녹음하는 유틸리티이다. 이것을 그대로 사용하기에는 꽤 난해하니(바로 다음에 새로 추가한 섹션에 따르면 그렇지도 않음) 이를 응용하여 만든 스크립트인 [[https://gist.github.com/ramast/4be3314bc73f28f55e3604497188b007|pulse-recorder.bash]]를 사용하는 것이 편리하다. 
  
-pulse-recorder.bash를 이용하여 유튜브의 재생음을 녹음하는 방법은 다음과 같다. 오디오 스트림을 활성화해야 인덱스 번호를 구할 수 있다.+pulse-recorder.bash를 이용하여 유튜브의 재생음을 녹음하는 방법은 다음과 같다. 녹음하려는 애플리케이션이 재생 중인 상태여야 이것(sink-input)의 인덱스 번호를 구할 수 있다. 출력 파일에는 temp.ogg라는 이름이 자동으로 붙는다.
  
   $ pulse-recorder.bash    $ pulse-recorder.bash 
Line 65: Line 67:
   $ vlc temp.ogg   $ vlc temp.ogg
  
-왜 하필이면 OGG 파일인가? 이 포맷은 대중적인 MP3보다 압축률이 더 크고, 무엇보다도 공개된 포맷이라서 라이센스 제한이 없다는 점이 유용하다. pulse-recorder.bash 스크립트는 Ask Ubuntu의 질문 [[https://askubuntu.com/questions/60837/record-a-programs-output-with-pulseaudio|Record a program's output with PulseAudio]]에 대한 답변으로 만들어진 것이다. parec을 '날것'으로 이용하여 오디오 스트림을 녹음하는 방법을 익히려면 이 Ask Ubuntu의 글을 꼼꼼히 읽어보면 도움이 될 것이다. module-combine-sink 모듈과 move-sink-input를 알아야 이 과정을 이해할 수 있다.+왜 하필이면 OGG 파일인가? 이 포맷은 대중적인 MP3보다 압축률이 더 크고, 무엇보다도 공개된 포맷이라서 라이센스 제한이 없다는 점이 유용하다. pulse-recorder.bash 스크립트는 Ask Ubuntu의 질문 [[https://askubuntu.com/questions/60837/record-a-programs-output-with-pulseaudio|Record a program's output with PulseAudio]]에 대한 답변으로 만들어진 것이다. parec을 '날것'으로 이용하여 오디오 스트림을 녹음하는 방법을 익히려면 이 Ask Ubuntu의 글을 꼼꼼히 읽어보면 도움이 될 것이다. [[https://freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-combine-sink|module-combine-sink]] 모듈과 move-sink-input 명령을 알아야 이 과정을 이해할 수 있다
 +  * **move-sink-input** __ID__ __SINK__ : Move the specified playback stream (identified by its numerical  index) to  the  specified  sink  (identified by its symbolic name or numerical index).
  
 ==== parec을 이용한 간편한 녹음 ==== ==== parec을 이용한 간편한 녹음 ====
Line 92: Line 95:
   # Ctrl+C를 눌러서 종료   # Ctrl+C를 눌러서 종료
   $ play out.mp3   $ play out.mp3
-lame과 twolame은 거의 같은 기능을 하는 것 같다. twolame은 녹음이 진행될 때 친절하게 화면에 정보를 뿌리는 것이 마음에 든다. +lame과 twolame은 거의 같은 기능을 하는 것 같다. twolame은 녹음이 진행될 때 친절하게 화면에 정보를 뿌리는 것이 마음에 든다. 다른 encorder를 쓰는 방법을 알아보자. CLI로 녹음하는 일에 재미를 들이면 아마도 각종 encorder의 파라미터를 공부하는 자신을 발견하게 될 것이다. 
 +  $ DEVICE=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor 
 +  $ parec -d ${DEVICE} | oggenc -b 192 --raw - -o temp.ogg 
 +  $ parec -d ${DEVICE} | lame -r -q 3 --lowpass 17 --abr 192 - temp.mp3 
 +  $ pared -d ${DEVICE} | sox -t raw -r 44100 -L -e signed-integer -S -b 16 -c 2 - "output.wav" 
 +  # parec 명령어는 파일 포맷을 지정하여 직접 오디오 파일로 기록할 수도 있다. 
 +  $ parec -d ${DEVICE} --file-format=wav output.wav 
 +  $ parec -d ${DEVICE} -v --file-format=wav output.wav 
 +  샘플 사양 '녹음', 채널 맵 's16le 2ch 44100Hz'으로 front-left,front-right 스트림을 엽니다. 
 +  연결되었습니다. 
 +  스트림이 성공적으로 생성되었습니다. 
 +  버퍼 지표: maxlength=4194304, fragsize=352800 
 +  샘플 사양 's16le 2ch 44100Hz', 채널 맵 'front-left,front-right' 사용. 
 +  장치 alsa_output.pci-0000_00_1b.0.analog-stereo.monitor에 연결되었습니다(색인: 0, 정지됨: no). 
 +  시간: 6.870 sec; 지연: -24419 usec. 
 +parec은 [[http://www.mega-nerd.com/libsndfile/|libsndfile]]이 지원하는 모든 파일 포맷을 인식한다. libsndfile 패키지에 포함된 프로그램들(sndfile-*)에는 쓸만 한 것들이 제법 있어 보인다. 
 + 
 +==== JACK 실행 중에도 parec으로 녹음을 할 수 있다 ==== 
 +JACK을 실행한 상태에서 'parec -d ' + tab을 눌러 보자. 
 +  $ parec -d  
 +  alsa_input.pci-0000_00_1b.0.analog-stereo 
 +  alsa_output.pci-0000_00_1b.0.analog-stereo 
 +  alsa_output.pci-0000_00_1b.0.analog-stereo.monitor 
 +  jack_in 
 +  jack_out 
 +  jack_out.monitor 
 +jack_out.monitor를 선택하여 애플리케이션 재생음을 녹음하면 된다. 
 +  $ parec -d jack_out.monitor | twolame -r - out.mp3 
 +JACK 실행 중에는 'parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor'로 녹음을 하여 MP3 파일을 만들었더니 재생이 안 되는 현상을 발견하였다. 이에 대해서는 좀 더 알아보도록 하자.
  
 ==== pacat은 무엇에 쓸까? ==== ==== pacat은 무엇에 쓸까? ====
music_on_linux/pulseaudio_설정_및_활용.1616567626.txt.gz · Last modified: 2021/03/24 06:33 by hyjeong