- PowerPointで一部の動画ファイルが挿入できない問題がありました。
- 原因は、動画ファイルの再生時間情報が「0」だったためでした。
- 動画編集ソフトで動画を再エクスポートすることで、PowerPointで使用可能な形式に変換できました。
Clipchampには挿入できたのに PowerPointでできないのは、動画読み取り機能が古いままだからなのかな?
よく文書作成ソフトの「一太郎」が「お役所向けで古臭い」と言われがちだけど、Microsoft Office も過去との互換性を維持するために「古臭い」部分があるよね。
他にも Excel では、長らく印刷プレビューと実際の印刷結果にズレがある状態なんですよね。
YouTube動画でも話しています。
1. 動画ファイルがPowerPointで読み込めない?
PowerPointでメッセージ動画を作ろうとしたら、うまく取り込めない動画データがありました。
エラーになったのは、素材サイト(Pixabay)でダウンロードした動画です。
ただ、全部ではなく、その一部です。
ダウンロード途中で動画ファイルが破損したのかと思ったのですが、メディアプレーヤーでは再生できました。
選択したファイルからビデオを挿入できません。このメディア形式に必要なコーデックがインストールされていることを確認してから、やり直してください。
インターネットでダウンロードできる動画素材にはいろんな形式があります。
中には、PowerPointにうまく挿入できないものもあります。
1-1. 動画を改めて書き出した
単純な解決策は、動画編集ソフトで動画を改めて書き出すこと。
そうすれば、一般的な形式に変換できます。
特に編集は必要ないので、単にファイルを開いてエクスポートするだけ。
これで、PowerPointで使える形式に変換できました。
今回は、Windows 動画編集アプリの「Clipchamp」を使用しました。
2. ダウンロードしたファイルの違い?
Pixabayの動画素材をいくつか PowerPointに挿入してみて、読込みできるか比較してみました。
この中だと、2つ目と5つ目の動画でエラーになりました。
まず、Pixabayでのファイル名の通し番号の形式に違いがあることに気づきました。
- 「
136230-764387572_tiny.mp4
」は挿入できた - 「
225489_tiny.mp4
」は挿入できなかった
Pixabayの動画の始めの6桁の数字は、動画の公開URLの末尾にもあるので、「コンテンツID」のようです。
ダウンロードした動画ファイルを見ると、その後に9桁の数字があるか、ないかに違いがあるのです。
「_tiny」や「_small」は、動画サイズのバリエーションです。
2-1. MP4ファイルが再生できるかどうかの要素
エラーメッセージにあった「コーデック」って何?
同じ MP4ファイルでも読み取れないことがあるの?
ファイルの拡張子が「.mp4」であっても、その中身は一様ではありません。
- コーデック:
動画ファイルの圧縮方式 - プロファイル:
コーデックごとに定められた画質や機能の設定 - 走査方式:
インターレース方式 / プログレッシブ方式
同じMP4形式の動画でも、これらの設定の違いによって一部のデバイス・アプリが非対応ということがあります。
2-2. プロファイルや走査方式?
例えば、H.264コーデックには対応していても、走査方式やプロファイルの設定によっては再生できないことがあります。
「プロファイル」は画質や機能の設定で、コーデックごとに定められています。
H.264では「メイン」や「ハイ」など、10種類以上のプロファイルが存在します。
走査方式とは、画面に映像を表示する方法のことです。「インターレース方式」と「プログレッシブ方式」の2種類があります。
従来のテレビではインターレース方式が使われていましたが、現在のインターネット上の動画は主にプログレッシブ方式を採用しています。
高機能なプロファイルを使用すると、iPhoneや特定のブラウザ(Internet Explorerなど)で再生できない、ということがあります。
ディスプレイの設定をインターレース方式で表示したら、チカチカしたことがあるね。
3. 再生時間が「0」?
ただし、今回の動画情報についても見てみると、コーデックやプロファイルの問題ではなさそうです。
ファイル形式はすべてMP4で、エンコード方法は「AVC/H.264」。
、プロファイルは「High」または「Baseline」で、走査方法は「Progressive」で共通しています。
しかし、よく見ると「異常」に気づきました。
再生時間とFPSが「0」になっていたのです。
どうも、PowerPoint側では動画の再生時間が不明なため、読み取りに失敗していたようです。
Clipchampでエクスポートした動画は、再生時間が「6.080sec」と表示されるようになっています。
3-1. ストリーミング用の動画だった(moov)
どうして、メディアプレーヤーでは問題なく再生できたの?
それは、問題の動画ファイルが「ストリーミング用」だったためだと考えられます。
動画ファイルには、動画の長さや解像度などをまとめた「moov
」というデータ構造があります1。
「再生時間(Duration)」は、その中の「動画ヘッダー情報(mvhd)」を参照しています。
しかし、問題のファイルを見ると、ここが空になっています。
このように動画ファイルの Duration が 0 なのは、「ストリーミング最適化」または「ファストスタート」形式で作成されている場合によくあります。
ストリーミング用に最適化されたファイルでは、先に動画の形式(moov
アトム)を示してから、動画データそのもの(mdat
アトム)を書き込んでいきます。
しかし、ファイル作成時点では正確な長さが不明なため、いったん duration は 0 として記録されます。
このような構造は、特にライブストリーミングや、ファイルの作成途中でも再生を開始できるようにするために採用されています。
3-2. 一般的なメディアプレーヤーでは再生できる
メディアプレーヤーなどは、動画ヘッダーから再生時間がわからなくても再生できます。
また、正しい再生時間は実際の動画データを解析して表示します。
- メディアデータ(
mdat
)を読み取りながら実際のフレーム数を計算 - フレーム数とフレームレートから総再生時間を算出する
これは再生ソフトだけでなく、動画編集ソフトでも同様です。
どうも、PowerPointは、ストリーミング用の動画にはまだ対応していないようです。