私のUbuntu Linux 18.04異なるDRMで保護されているコンピュータには、複数のファイルが混在するWMAファイル(埋め込まないでください)がたくさんあります。後者は再生できず、一部のプレーヤーソフトウェアと競合することもあります。
サブディレクトリツリー全体を繰り返してDRMで保護されたWMAファイルを検索する簡単で簡単な方法はありますか? Windows XPおよびPowershellベースのソリューションを見たことがありますが、*ix用のソリューションは見たことがありません。
私はDRM保護を取り除く(法的にあいまいな)方法を探していません。削除するには、すべてを試みずにどのアイテムがDRMで保護されているかを判断します。
WMAの使用を中止し、より合理的な形式に切り替えることを提案する必要はありません。役に立つ場合は、WMAを使用しません。ところが私の食券を支払った人が私にこの[検閲]を支持してもらうように頼んだので私は選択の余地がなかった。
答え1
サブディレクトリツリー全体を繰り返してDRMで保護されたWMAファイルを検索する簡単で簡単な方法はありますか?
確かに!ファイルがDRMで保護されているかどうかを検出するには、あらゆる種類のプログラムを提供する必要があります。再帰部分は簡単です。を使用すると、bash
このスクリプトはDRMedファイルを繰り返し確認して印刷できます。echo
rm
# 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
または、1行のコードと同じです。
find . -iname "*.wma" | while read -r f; do ffprobe "$f" 2>&1 | grep -q ' DRM' && echo "$f"; done