오디오 출력에 무엇이든 파이프하려면 어떻게 해야 합니까?

오디오 출력에 무엇이든 파이프하려면 어떻게 해야 합니까?

데이터를 오디오 출력으로 어떻게 전송할 수 있나요? 예를 들어 아카이브, 드라이브 백업, 프로그램 등의 파일을 듣고 싶습니다. 아니면 내 하드 드라이브를 듣고 싶습니다. 약 7년 전에 이것이 가능하다는 내용을 읽은 기억이 어렴풋이 나지만 지금은 아무것도 찾을 수 없습니다.

따라서 파일, 디스크 읽기, 심지어 네트워크 연결까지 무엇이든 들을 수 있기를 원합니다. 나는 이것이 Linux에서 확실히 가능하다는 것을 알고 있습니다. 어떻게 해야 합니까? 루분투 20.04 사용

답변1

나는 배관 작업이 aplay잘 작동한다는 것을 알았습니다.

journalctl | aplay그다지 예쁘지는 않지만 놀라울 정도로 잘 작동합니다.

이것은 예이다aplay(1):

aplay -c 1 -t raw -r 22050 -f mu_law foobar
              will play the raw file "foobar" as a 22050-Hz, mono, 8-bit, Mu-Law .au file.

alsa-utils이는 debian/ubuntu 패키지의 일부로 찾을 수 있습니다.

이것은 제가 가장 좋아하는 1-liner입니다. 작은 C 프로그램을 gcc에 반영하고 컴파일된 버전을 실행하여 재생되도록 합니다. 그 결과 놀랍게도 15분짜리 노래가 반복해서 재생되었습니다.

echo "g(i,x,t,o){return((3&x&(i*((3&i>>16?\"BY}6YB6$\":\"Qj}6jQ6%\")[t%8]+51)>>o))<<4);};main(i,n,s){for(i=0;;i++)putchar(g(i,1,n=i>>14,12)+g(i,s=i>>17,n^i>>13,10)+g(i,s/3,n+((i>>11)%3),10)+g(i,s/5,8+n-((i>>10)%3),9));}"|gcc -xc -&&./a.out|aplay

답변2

이것은 가능합니다 /dev/dsp. 이는 OSS의 일부이며 OSS는 오랫동안 Linux 커널의 일부가 아니었습니다. cat some_file >/dev/dsp예전에는 or 처럼 간단 했습니다 some_program >/dev/dsp.

PulseAudio에서 제공합니다 padsp.

padsp지정된 프로그램을 시작하고 /dev/dspOSS 호환 오디오 장치(및 보조 장치)에 대한 액세스를 PulseAudio 사운드 서버로 리디렉션합니다.

(원천)


예:

  • 무작위 데이터

    </dev/urandom padsp tee /dev/dsp >/dev/null
    
  • 일반 파일

    </etc/fstab padsp tee /dev/dsp >/dev/null
    
  • 네트워크 활동

    sudo tcpdump | padsp tee /dev/dsp >/dev/null
    
  • 블록 장치

    sudo cat /dev/sda | padsp tee /dev/dsp >/dev/null
    

padsppulseaudio-utils패키지 의 Ubuntu 18.04.4 LTS에서 .

관련 정보