#author("2022-01-15T15:16:32+09:00","default:nobuoki","nobuoki") - 2022/01/15 ラッパースクリプト追記 #author("2022-01-15T15:17:05+09:00","default:nobuoki","nobuoki") - 2022/01/15 カレントディレクトリ移動のTips、ラッパースクリプト追記 * tl;dr [#de58c65d] - Windows側で音を出す -- 例)WSL内で (windowsバイナリの)ffplay.exe を起動する -- 例)WSL内で (windowsバイナリの)mplayer.exe を起動する - カレントディレクトリを /mnt/c/ 配下に移動してから ffplay.exe/mplayer.exe を起動する -- ffplay.exe: Invalid argument 的なエラーを避ける WSL側でラッパースクリプトを書いて /usr/bin/ あたりにインストールすると良いかも #ref(./ffplay) #prism(bash){{{ # ラッパースクリプトを作成 $ cat <<'...' >ffplay #!/bin/sh # vim: set ft=sh ff=unix expandtab ts=2 sw=2 : set -e _d(){ [ -n "$DEBUG" ]; }; _d && set -x # debug # wrapper of ffplay.exe (windows binary) FFPLAY_PATH=${FFPLAY:-/mnt/c/Users/nobuoki/bin/ffplay.exe} cd /mnt/c && exec "$FFPLAY_PATH" "$@" ... # /usr/bin/ にインストール $ sudo install ffmpeg /usr/bin/ }}} ** Windowsにffmpeg(とffplay, ffprobe)をインストール [#fca0e631] - [[【簡単】FFMPEGをWindowsパソコンにインストールしよう | OPTY LIFE(オプティライフ)>https://opty-life.com/apps/ffmpeg-windows-install/]] 一番重要なこと:FFMPEG(ffplay)のPATHを通したあとでWSL2のターミナルを起動する ** WSL2のターミナルからmp3ファイルを鳴らす [#r9047f1c] #prism(bash){{{ $ ls *.mp3 airly.mp3 # mp3ファイルを再生(ファイル名渡し/Windowsのパス表記に変換) ffplay.exe -autoexit "$(wslpath -w airly.mp3)" # mp3ファイルをパイプ渡しで再生 cat airly.mp3 | ffplay.exe -autoexit -i pipe: }}} ** midiファイルを鳴らす [#ke8617b0] #prism(bash){{{ # WSLに timidity(とサウンドフォント)をインストール sudo apt install timidity freepats fluid-soundfont-gm fluid-soundfont-gs # midiファイルを timidity で wav 形式でレンダリングしてパイプ渡しで再生 timidity airly.mid -Ow -o - | ffplay.exe -autoexit -i pipe: # Ogg FLAC 形式でパイプ渡し(timidity の出力をカット、ffplay の映像出力等々をカット) timidity airly.mid -OF -o - 2>/dev/null | ffplay.exe -autoexit -nodisp -hide_banner -loglevel fatal -i pipe: }}} ** WSL2に喋らせる [#obd6dd43] #prism(bash){{{ # gtts-cliをインストール sudo apt -y install python3-gtts # 日本語のロケールを生成 sudo locale-gen ja_JP.UTF-8 # 只今の時刻を日本語で喋らせる $ LANG=ja_JP.UTF-8 date '+只今の時刻は %p %I 時 %M 分 です' | gtts-cli -l ja -f - | ffplay.exe -autoexit -nodisp -hide_banner -loglevel fatal -i pipe: }}} ** いっそのことWSLのffplayを差し替える [#o6a85648] - オリジナルの ffplay -> fffplay (fを1つ増やす) - ffplay.exe -> オリジナルの ffplay と同じパスからシンボリックリンクを貼る #prism(bash){{{ ffplay_original=$(command -v ffplay) sudo mv "$ffplay_original" "${ffplay_original%/*}/fffplay" sudo ln -s "$(command -v ffplay.exe)" "$ffplay_original" }}}