라즈베리 파이3에서 arecord와 aplay를 사용하여 FIFO를 만들고 싶습니다. 한쪽 끝의 오디오 인젝터에서 음악 신호를 보내면 제대로 표시되지만 다른 쪽 끝에서는 음악이 비활성화됩니다. 나는 "arecord -f S16_LE -r 44100 -V 스테레오 -c1 -D 플러그:2 | aplay -D 플러그:2"를 사용하고 있습니다.
해결 방법과 ctrl+c를 사용하지 않고 해당 명령을 중지하는 방법을 알려주십시오 ???
답변1
무엇을 하려는지 잘 모르겠습니다. 특히 "상대방의 음악을 비활성화합니다"라는 것을 이해하지 못하지만
1) ALSA보다 Pulseaudio(또는 잭)에서 오디오 스트림 전달이 훨씬 쉽습니다.
arecord
2) 파이프에 사용할 경우 WAV 형식을 사용하지 마십시오. WAV 헤더에는 파이프에 채울 수 없는 길이 항목이 있기 때문입니다. 원시( )를 사용 -t raw
하고 에서 올바른 매개변수를 지정 aplay
하거나 SUN 오디오 형식( -t au
)을 사용하십시오.
3) arecord-aplay 파이프는 ctrl-c를 사용하여 중지하거나 프로세스 중 하나 또는 둘 다 종료될 때까지 실행됩니다( 사용 kill
). 다른 방법은 없습니다.
답변2
가지고 있는 명령을 중지하려면 다음과 같이 기록할 기간 변수(-d)를 초 단위로 추가하세요.
arecord -f S16_LE -r 44100 -V stereo -c1 -d2 -D plughw:2 | aplay -D plughw:2
이 명령은 -d2 또는 2초 후에 녹음을 중지합니다.
alsamixer 명령을 사용하면 믹서 설정을 변경할 수 있습니다. 이를 통해 입력(마이크 또는 라인)을 선택할 수 있을 뿐만 아니라 출력 hifi(사운드 듣기)를 활성화할 수 있으며 오디오 입력을 아날로그 시스템을 통해 직접 출력으로 라우팅하는 바이패스 모드를 활성화할 수도 있습니다. CPU. 바이패스 모드에서도 record를 사용하여 신호를 캡처할 수 있습니다.