mpg123에서 환영 메시지를 표시하지 않고 노래는 유지하는 방법은 무엇입니까?

mpg123에서 환영 메시지를 표시하지 않고 노래는 유지하는 방법은 무엇입니까?

나는 이것에 대해 한동안 머리를 긁적였습니다.

답변1

-C파이프 버퍼링이 mpg123 옵션에 문제를 일으키는 것으로 나타났습니다 . 이 문제는 --line-bufferedgrep 또는 sed의 옵션을 사용하여 해결할 수 있습니다 -u.

결국 내가 사용하게 된 플래그 세트는 다음과 같습니다.

mpg123 -Z -C --title */* 2>&1 | grep --line-buffered -Ev "High Performance|written and copyright by|without any warranty but with best wishes|Terminal control enabled|MPEG 1.0|Decoding of" | sed -uE 's/Playing MPEG stream [0-9]+ of [0-9]+: //' | sed -uE "s/Directory: //" | sed -uE "s/\.\.\.//" | sed -uE '/^\s*$/d'

옵션을 단계별로 살펴보겠습니다. 이들 중 일부는 편리한 mpg123 설정에 대한 더 광범위한 질문에 답합니다.

  • -Z이건 영원한 무작위 셔플이야
  • -C제어 명령 허용
  • --title터미널 제목을 현재 노래 제목으로 변경
  • */*현재 하위 디렉터리에서 파일을 찾습니다. 파일이 지정된 디렉터리에 있으면 "*"이면 충분합니다.
  • 2>&1표준 오류(mpg123이 인쇄하는 내용)에서 파이프를 사용하여 수행할 수 있는 표준 출력으로 리디렉션
  • --line-bufferedgrep 및 -used의 플래그는 버퍼링을 방지하므로 문제가 발생했습니다.
  • 다른 플래그는 단지 정규식 스위치일 뿐이며 문제의 핵심은 아닙니다.

그런 다음 사용하기 쉽도록 명령에 별칭을 지정했습니다. alias pmr="clear; mpg123 -Z -C --title */* 2>&1 | grep --line-buffered -Ev 'High Performance|written and copyright by|without any warranty but with best wishes|Terminal control enabled|MPEG 1.0|Decoding of' | sed -uE 's/Playing MPEG stream [0-9]+ of [0-9]+: //' | sed -uE 's/Directory: //' | sed -uE 's/\.\.\.//' | sed -uE '/^\s*$/d'" ## pmr := play music recursively

tail에는 -f버퍼링을 방지하기 위한 플래그가 있지만 계속해서 문제가 발생합니다.

관련 정보