久しぶりの更新になります。秋の情報処理試験も迫って来ましたし過去問解説も書かないといけないと思いつつ日々の仕事に追われなかなか追記ができてない状況です。少しずつでも書いて行くようにしますので今後ともよろしくお願いします。
さて、今回の日々雑感は少しテクニカルなお話しです。最近はスマホなどで写真も動画も簡単に撮れますしライブ配信なんかも手軽に出来るようになっています。しかも、性能はどんどん良くなっています。
性能が良くなるのは良いのですがそれに伴って容量も大きくなっています。手軽に撮った動画だから容量が少ないってことはない訳です。
前置きが長くなりました。
パワーポイントはプレゼンソフトとしてお使いの方も多いスタンダードなソフトですが、写真をはじめとする画像やアニメーションで効果的なプレゼンを行うことが出来ます。当然のように昨今の流れとして動画を組み込むことも少なくありません。
自分で使うだけなら容量が大きくても構わないでしょうが、パワーポイントのファイルを配布するとなると、しかもネットを使ってとなると容量の削減が重要になります。
今回、約1.5GBのファイルをネットサーバーからダウンロード出来るようにして欲しいというご要望がございまして・・・
まず最初に考えるのはパワーポイントの機能を使うことです。ファイル→メディアの圧縮でファイルサイズを小さくします。画質はこだわらないということだったので可能な限り小さくしますがまだ900MB以上あります。
サーバーの負荷を考えると300MB以下に抑えたいと考えていたので、さらに1/3にファイルサイズを減らす必要があります。
そこで、パワーポイントの拡張子を.pptxから.zipに変更します。実は現在のOfficeの書類はXML形式にしたものをzipでアーカイブしているだけなので拡張子を変更すれば中身の画像や動画ファイルの直接編集が可能になります。
そこでzipファイルを解凍してppt→mediaの順で開くと・・・
ありました。拡張子がmp4になっているファイルが組み込み動画です。mp4は動画圧縮の方法のひとつですが、その方法はコーデックに基づき決定されます。すなわち、より圧縮効率のよいコーデックを使えばファイルを小さくできます。
本当は圧縮率の高いH.265を使いたいところだったんですが、パワーポイントで解釈できない可能性がありテストをする時間もなかったのでより確実なH.264を使って再圧縮することにしました。
利用したのはコマンドラインからの命令で様々な動画像の変換が可能なffmpegです。
動画ファイルが複数あったのでそれぞれコマンドを打つのも面倒なのでバッチファイルを組んで対応しました。
一応こんな感じです。
@ECHO OFF
:FILEDROP
ECHO
cd D:\変換\
:REPEAT
D:\変換\ffmpeg.exe -i %1 -c:v libx264 -pix_fmt yuv420p -acodec copy “%~dp1%~n1cnv.mp4″
if “%~2″==”” GOTO EXIT
shift
GOTO REPEAT
:EXIT
pause
赤字の部分は環境に合わせて変えてください。テキストエディタのコピペして拡張子を.batにして保存すればバッチとして動きます。
あとはファイルをバッチファイルにドラッグアンドドロップすれば複数ファイルも順番に変換してくれます。同じファイル名にして元ファイルが消えるのも嫌なので変換後は〇〇cnv.mp4というファイル名で出力することにしました。
まぁまぁ良い時間が掛かりますw
変換が終了したら〇〇cnv.mp4を別フォルダに収納してフォルダ内のファイル名をリネームソフトを使って〇〇.mp4に一括変換してファイル名を元に戻します。
さらに、前述のppt内のmediaフォルダにある動画と入れ替えて、7-zipを使って再度zip形式にアーカイブします。アーカイブが出来たら拡張子を.pptxに戻してパワーポイントで見ることが出来るかテストします。
結果として約1.5GBあったファイルが約240MBまで削減できました。約85%の容量削減ができて目標の300MBを下回ることが出来ました。
よかった。よかった。
最後にお約束ですが、上記の方法は正規の編集方法とは異なりますのでパワーポイントのファイル、動画データなどが破損する可能性があります。場合によっては復旧が非常に難しくなる事もあります。作業には必ずバックアップを取ってから行ってください。万が一上記を参考に行った作業において損害が発生しても保障できませんので自己責任で実施してください。また、コメントやSNS等でご質問を頂いた場合でもすべてにお答えできるとは限りませんのでご了承ください。
コメント