広辞苑第六版DVD(EPWING)の動画をまとめて変換するrubyスクリプト

未だにEPWINGの辞書をたくさん持っている[twitter:@riocampos]です。

最近は…

なのですが、最近はその辞書を使わずに既製品のiOS辞書を使うことが増えていました。
以前、iPhoneでは辞書ソフトとしてiDicを使っていました。

iDic (450円)
(2013.05.15時点)
posted with ポチレバ
しかし…iDicは残念ながら近年全く更新が為されて居らず、今となっては使い勝手もイマイチ。
ということで物書堂に全面移行のような状態だったのです。紙の辞書よりも格段にお安いし。
大辞林 (2,500円)
(2013.05.15時点)
posted with ポチレバ
(2013.05.15時点)
posted with ポチレバ

ふと思い立つ

ただ、広辞苑は岩波さんのご意向なのか、電子辞書になっても全く安くなりません。
なので手元にある大辞林を引くことが増えてきました。
でもEPWINGデータで広辞苑を持っているのに、もったいないじゃないか、と思い、改めてEPWINGの使えるiOS appを使おうと思ったのでした。使うのは、以前からEPWING辞書で定評のあるEBシリーズのiOS版。

(2013.05.15時点)
posted with ポチレバ
無料版だと前方検索だけですが、有料版はいろいろできます。
EBPocket free (無料)
(2013.05.15時点)
posted with ポチレバ

広辞苑DVDに含まれる動画

広辞苑第六版には語義解説用の動画がいくつか含まれています。DVD付属のソフトじゃないと使えなかったと思うので、全く見たことがありません。ですが、EBPocketのサポートサイトでこのような記述があるのに気付きました。

動画(Professional)
EPWINGの動画に対応しています。

  • 動画を利用するためには、あらかじめPC上でEPWINGの動画ファイル(MOVIEフォルダ以下の全ファイル)を、iPhone/iPodで再生できる形式(MP4/M4Vなど)に変換しておく必要があります。※ .mp4、.m4vなどの拡張子はつけたまま転送してください。
  • 変換に使用するアプリケーションは何でもかまいません。 作者は Craving Explorer で変換先を "MP4(iPod Touch / iPhone)"にして変換したもので動作検証しました。

http://hishida.s271.xrea.com/manual/EBPocket_iPhone/web_mm.html

では私も動画ファイルを変換して見れるようにしておこう、と思いついたわけです(前置きが長い…)。

動画ファイル形式確認、ffmpegで変換

動画ファイルは数字8桁で拡張子無し。VLCで確認したところ

MPEG-1/2 Video (mpgv)

と分かりました。ならばffmepgあたりでmp4へ変換できるであろうと確認したところ、

fmpeg -i xxxxxxxx -f mp4 xxxxxxxx.mp4

(元ファイル名xxxxxxxx)で変換できました。

一括変換

一括変換するためのRubyスクリプトは以下の通りです。相変わらず下手くそです。
指定するパスは「/」で終わらないとダメです。なので動画ファイルと同じディレクトリで実行する場合も「ruby mpg2mp4conv.rb ./」としてください。('13/6/12 Fileクラス使って直しました。)

#!/usr/bin/ruby
# coding: UTF-8

def mpg2mp4conv(dir)
  Dir.glob(File.expand_path(dir) + "/*").each do |entry|
    filedir, filename = File.split(entry)
    if /^\d{8}$/ =~ filename # pick up numbered file
      from = entry
      dest = File.join(filedir, (filename + ".mp4"))
      `ffmpeg -i #{from} -f mp4 #{dest}`   #convert mpg to mp4
    end
  end
end

mpg2mp4conv(ARGV[0])

補足:EBシリーズの動画は圧縮非対応だった

上記で作成したmp4ファイルをEBShrinkで圧縮したら、EBMacでもEBPocket Professionalでも認識してくれません。圧縮しても大して小さくならないので、圧縮せずにそのままmp4ファイルにして利用しましょう。