Ubuntu Linux에서 DRM으로 보호된 WMA 파일을 찾는 방법

Ubuntu Linux에서 DRM으로 보호된 WMA 파일을 찾는 방법

우분투리눅스 18.04다른 DRM으로 보호되는 컴퓨터에 여러 파일이 혼합된 WMA 파일(묻지 마세요)이 잔뜩 있습니다. 후자는 재생할 수 없으며 일부 플레이어 소프트웨어와 충돌하기도 합니다.

전체 하위 디렉터리 트리를 반복하여 DRM으로 보호되는 WMA 파일을 검색하는 빠르고 쉬운 방법이 있습니까? Windows XP 및 Powershell 기반 솔루션을 본 적이 있지만 *ix용 솔루션은 본 적이 없습니다.

나는 DRM 보호를 제거하는 (법적으로 모호한) 방법을 찾고 있는 것이 아닙니다. 삭제하려면 하나씩 모두 시도하지 않고 어떤 항목이 DRM으로 보호되어 있는지 알아내면 됩니다.

WMA 사용을 중단하고 보다 합리적인 형식으로 전환하라고 제안하는 것은 필요하지 않습니다. 도움이 된다면 WMA를 사용하지 않을 것입니다. 그런데 내 식권을 지불한 사람이 나에게 이 [검열]을 지지해 달라고 요청했기 때문에 나는 선택의 여지가 없었다.

답변1

전체 하위 디렉터리 트리를 반복하여 DRM으로 보호되는 WMA 파일을 검색하는 빠르고 쉬운 방법이 있습니까?

틀림없이! 파일이 DRM으로 보호되는지 여부를 감지하려면 모든 종류의 프로그램을 제공해야 합니다. 재귀 부분은 쉽습니다. 를 사용하면 bash이 스크립트가 DRMed 파일을 반복적으로 확인하고 인쇄할 수 있습니다 .echorm

# to make bash understand **; ZSH doesn't need this
shopt -s globstar
shopt -s nocaseglob
for candidate in **/**.wma ; do 
  magic_command_that_fails_with_drm "${candidate}" || echo "${candidate}"
done

이러한 파일과 안정적으로 충돌하는 명령줄 프로그램이 있으면 작동합니다 magic_command_that_fails_with_drm. 그렇지 않으면 다음을 시도해 보세요 mplayer -really-quiet -vo null -ao pcm:fast:file=....

#!/bin/bash
# to make bash understand **; ZSH doesn't need this
shopt -s globstar
shopt -s nocaseglob

for candidate in **/**.wma ; do 
  tmpfile=$(mktemp)
  mplayer -really-quiet -vo null -ao "pcm:fast:file=${tmpfile}" "${candidate}" 2> /dev/null
  # check whether file exists and is non-empty
  if [ ! -s "${tmpfile}" ]; then
    echo "${candidate}"
  fi
  # delete the PCM file again.
  rm "${tmpfile}"
done

답변2

ffprobe(와 함께 제공됨 ffmpeg) 및 grep문자열 "DRM"을 사용할 수 있습니다 .

find . -iname "*.wma" \
| while read -r f; do
    ffprobe "$f" 2>&1 | grep -q ' DRM' && echo "$f";
  done

또는 한 줄의 코드와 동일합니다.

find . -iname "*.wma" | while read -r f; do ffprobe "$f" 2>&1 | grep -q ' DRM' && echo "$f"; done

관련 정보