2019年2月 : してログ

ffmpeg を使用してアスペクト比のおかしい動画を、再エンコードなしで直すことができます。

ffmpeg -i movie_src.mp4 -c copy -aspect 4:3 movie_fix.mp4

パラメータを見ればだいたい分かる、ということで説明省略。以上。

ものぐさ変換バッチツールを作っておく

毎回オプションを調べたり正しいアスペクト比を計算するのも面倒なので、汎用的な変換バッチツールを準備しておくことにします。代表的なアスペクト比、4:3 と 16:9 の横と縦を用意しておき、実際の変換結果を見てみることで正しい結果のものを残すイメージです。

aspect.bat
ffmpeg -i src.mp4 -c copy -aspect 4:3 fix_4-3.mp4
ffmpeg -i src.mp4 -c copy -aspect 3:4 fix_4-3_v.mp4
ffmpeg -i src.mp4 -c copy -aspect 16:9 fix_16-9.mp4
ffmpeg -i src.mp4 -c copy -aspect 9:16 fix_16-9_v.mp4

ついでに回転と反転も直す

スマホ撮影ものやライブ配信ものだと、回転の向きがおかしかったり、左右が反転していたりするものも多くなっています。左右反転はそのままでもまあいいんですが、回転方向は直してあげないと見にくいです。再生時にプレイヤー側でも直せますが、操作が面倒なのでメタ情報を修正してあげるのがいいです。

時計回りに90度回転
ffmpeg -i movie_src.mp4 -c copy -metadata:s:v:0 rotate=-90 movie_fix.mp4
反時計回りに90度回転
ffmpeg -i movie_src.mp4 -c copy -metadata:s:v:0 rotate=90 movie_fix.mp4

※ストリーム識別子は、":s:v:0" で最初のビデオストリームという意味になる(で合ってると思います)

仮想マシンをボリューム間で移動することがあったのでそのメモです。ssh でそのままコピーすると、シンがシックになっちゃうので、ディスクイメージだけは vmkfstools を使用します(それ以外は普通にコピーして構いません)。

基本的には、vmdk と vmx をコピーするだけの単純な作業になります。データストアにかなり負荷を掛けますので、夜間など利用が少ない時間帯に行うことをお勧めします。

ディスクイメージのコピー

まず、スナップショットがある場合は統合しておきます。コピーは下記のようなコマンドになりますが、-d はシンプロビジョニングにする指定になります。-a オプションはアダプター種別で、付けても無視されたので無しでいいと思います。

vmkfstools -i /vmfs/volumes/src_vol/src_vm/src_vm.vmdk /vmfs/volumes/dst_vol/dst_vm/dst_vm.vmdk -d thin

ちなみに、スナップショット統合し忘れて ~000001.vmdk のほうをコピーしたことがあるのですが、「スナップショットの管理」の「すべて削除」はエラーで不能でしたが、「ディスクの統合」ではうまく解消できたようです。

vmx ファイルのコピー

他のファイルはいらない(逆にあると起動しない)ので vmx ファイルだけコピーします。ディスクイメージの名前を変更した場合は、vmx をテキストエディタで編集し、変更したファイル名を置換します。

cp /vmfs/volumes/src_vol/src_vm/src_vm.vmx /vmfs/volumes/dst_vol/dst_vm/dst_vm.vmx

仮想マシンの登録変更

古い仮想マシンを登録解除し、コピーした仮想マシンを登録し直します。初回起動時にコピーか移動か尋ねられると思いますので、移動を選択しておきます。実際に起動してみて問題が無ければ、古い仮想マシンはボリュームから削除して構いません。

中古で買ったパソコンの回復ドライブを作成しようと思い、Windows10 が示した 8GB の USB メモリを用意したんですが、半分ぐらい進んだ時点で「エラーが発生しました」とかで失敗してしまいました。理由も何も示されないのは、もはや Windows10 の伝統芸能なんでしょうか。

これさ、8GB の USB メモリでいいと思うじゃん
これさ、8GB の USB メモリでいいと思うじゃん

結論から言うと容量不足なわけで、16GB の USB メモリに作成し直したところ 9.18GB ほど必要だったことが分かりました。 ちなみに、失敗した USB メモリを見てみると約半分ぐらい容量が残っていて、これだけ見ると容量不足と気が付きにくいんでは無いでしょうか。恐らくは、初期の Windows10 は 8GB に収まっており、あのメッセージは固定テキストで実装されているんだと思いますね。準備に結構時間が掛かっているにも関わらず、正確な見積もり容量すら計算していないとか、相変わらずお粗末な OS ですよね。

Windows7 のころまでは subst というコマンドを使って実現していましたが、最近の Windows では利用できなくなっていました。このコマンドをレジストリに登録することで解決できるようですが、設定も解除も面倒なので別の方法を紹介します。

やり方はすごい単純で、ネットワークドライブを自分自身のディレクトリに設定してしまうというものです。コマンド操作もレジストリ編集も出てきませんので、subst+起動バッチを使うよりお手軽かも知れません。

  1. ドライブにしたいディレクトリのプロパティを開き、[共有]>[詳細な共有]>[このフォルダーを共有する] にチェックを付ける(必要に応じてアクセス許可も設定します)
  2. エクスプローラでネットワークから、自分のPC名を探して開きます
  3. 先ほど設定した共有名を右クリックし「ネットワークドライブの割り当て」を選択します
  4. 最後にドライブレターを選んで [完了] を押します