再生できないwavファイルの修復にmplayerで成功

2015-03-17

旧ブログ

t f B! P L

WindowsXPを音声感知ボイスレコーダーとして使うで書いたSoundEngine Free【音楽編集・音声録音フリーソフト】で音声感知録音したwavファイルに再生できないものがありました。Linux - 壊れたwavファイルを修復 - Qiitaの通りにしたら再生できるようになりました。

linuxBeanのmplayerでwavファイルの修復成功


linuxBeanのSynapticパッケージマネージャの検索で「mplayer」とすると同名のパッケージがでてきますのでそれをインストールしました。

あとはLinux - 壊れたwavファイルを修復 - Qiitaの通りにコマンドを実行するだけです。
mplayer -quiet -vo null -vc dummy -ao pcm:waveheader:file="audio_FIXED.wav" audio_BROKEN.wav
audio_BROKEN.wavのところに修復したいwavファイルを書きます。

そしてコマンドを実行するとaudio_FIXED.wavという名前で修復されたwavファイルが書き出されます。

-quietは冗長なコンソール出力を抑制するオプションです。

-voはビデオ出力ドライバーの指定のオプションです。waveファイルにビデオはないのでnullを指定しています。

-vcはビデオコーデックの指定のオプションです。waveファイルにビデオはないのでdummyを指定しています。

-aoはオーディオ出力ドライバーの指定のオプションです。

コロン「:」でサブオプションを指定します。

-ao pcm:waveheader:file="audio_FIXED.wav"でpcm形式でwaveheadearを加えてaudio_FIXED.wavに出力するということになります。

mplayer -ao helpなどでそれぞれのオプションで指定できるドライバーの一覧が得られます。

MPlayer - Wikipediaを読むとmplayerはオープンソースのメディアプレーヤーでビデオも再生できるプレーヤーのようです。

mplayerのビデオからオーディオを抽出する機能を利用して壊れたwavファイルに正しいヘッダーを加えて壊れたwavファイルを修復するという仕組みのようです。

ということで壊れたどんなwavファイルも修復できるわけではなく、waveheaderが壊れたもののみの修復になりそうです。

Windowsでmplayerを使う


MPlayer - WikipediaからたどるとMPUI, the MPlayer frontend for WindowsというGUI版があるようですが、ダウンロードリストをみると2006年頃から更新されていないようですので諦めました。
(2015.6.7追記。GUIで動画をみるのが目的ならMPlayerから派生したmpv.ioがあります。動作がかなり軽いギーク向け動画プレーヤ『mpv』 - Macの手書き説明書

MPlayer - The Movie PlayerDownloadのBinariesのところにMPayer Windows buildsへのリンクがあります。


MPlayer on Windows (win32/win64)のBuilds selection tableからmplayerのWindows版がダウンロードできますので、Windows7 64bit用にx86_64をダウンロードしました。

MPlayer-x86_64-r37368+g52f2adc.7zという7-Zipで圧縮されたファイルがダウンロードされました。

7-ZipのインストールはLibreOffice(39)7-ZipのGUIで楽にPythonマクロをドキュメントに埋め込むでしました。

解凍してできたMPlayer-x86_64-r37368+g52f2adcフォルダを適当なところに移動させます。

今回はC:\Program Files\MPlayer-x86_64-r37368+g52f2adcに移動させました。

フォントファイルのスキャンをしないようにmplayerを設定する


コマンドラインツールなのでmplayer.exeをダブルクリックしても使えません。

壊れたwavファイルがあるフォルダからコマンドウィンドウを起動してまずmplayer.exeへのパスを通します。
path %PATH%;C:\Program Files\MPlayer-x86_64-r37368+g52f2adc
この状態でlinuxBeanと同じコマンドを打ったところなぜかフォントフォルダ内のフォントファイルのScanningが延々と続くのでCtrl+Cで強制終了させました。

[UPDATED] How to disable Font Cache in SMPlayer (MPlayer) ? | Neuro-Trashcan

ここに解決法がありました。

インストールフォルダのmplayerフォルダにあるconfigファイルをワードパッドにドロップして開きます。
## Fontconfig
fontconfig=yes
font=Arial
このfontconfig=yesfontconfig=falseに変更します。

このままでもwavファイルの修復はできましたがArialフォントがないとうエラーがでてきます。

MPlayer sherpya-r37368+g52f2adc-4.9.2 (C) 2000-2015 MPlayer Team
Cannot load bitmap font 'Arial'.
## Fontconfig
fontconfig=false
font_file=%WinDir%\fonts\arial\arial.ttf
font=Arial
これで解決だと思ったらfont_fileオプションは知らないといわれます。
## Fontconfig
fontconfig=false
#font=Arial
よくわからないのでもうfont=Arial自体をコメントアウトしてしまいました。
mplayer -quiet -vo null -vc dummy -ao pcm:waveheader:file="audio_FIXED.wav" audio_BROKEN.wav
これでlinuxBeanと全く同じようにaudio_BROKEN.wavを修復してaudio_FIXED.wavに出力できました。

mplayer for Windowsの使い方のまとめ


インストール:

MPlayer on Windows (win32/win64)のBuilds selection tableからWindowsのバージョンに適した7-Zip圧縮ファイルをダウンロードして解凍。

解凍してできたファイルを適当なフォルダに移動。

mplayerフォルダにあるconfigファイルのFontconfigを以下のように修正。
## Fontconfig
fontconfig=false
#font=Arial
使い方:

コマンドウィンドウからmplayer.exeへのパスを通す(以下は一例です)。
path %PATH%;C:\Program Files\MPlayer-x86_64-r37368+g52f2adc
修復したいwavファイル(audio_BROKEN.wav)を引数にしてmplayerを起動。
mplayer -quiet -vo null -vc dummy -ao pcm:waveheader:file="audio_FIXED.wav" audio_BROKEN.wav
これで修復したwavファイルがaudio_FIXED.wavという名前で出力されます。

コマンドを毎回打つのは面倒なのでバッチファイルを作りました。
cd "%~dp1"
"C:\Program Files\MPlayer-x86_64-r37368+g52f2adc\mplayer" -quiet -vo null -vc null -ao pcm:waveheader:file="%~n1_FIXED%~x1" %1
この内容でmplayer.batというテキストファイルを作ってそのショートカットに修復したいwavファイルをドロップすればドロップしたwavファイルと同じ場所に_FIXEDと名前がついた修復後のwavファイルができているはずです。

参考にしたサイト


Linux - 壊れたwavファイルを修復 - Qiita
mplayerを利用してwavファイルのヘッダーを作って修復します。

MPlayer - Wikipedia
mplayerの解説。

MPlayer - The Movie Player
オープンソースのメディアプレーヤー。コマンドラインツールです。

MPUI, the MPlayer frontend for Windows
mplayerのWindows GUIツールですが最近は更新されていないようです。

mpv.io
mplayerから派生したGUIの動画再生ツール。音量調整はキーで*/か90(テンキーは不可)でやります。

動作がかなり軽いギーク向け動画プレーヤ『mpv』 - Macの手書き説明書
mpvの操作方法。

[UPDATED] How to disable Font Cache in SMPlayer (MPlayer) ? | Neuro-Trashcan
フォントファイルのスキャンを止めさせる方法。

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ