ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

LaTeXに動画を載せる(新)

この記事は

動画から連番静止画epsを生成してLaTeXでanimateでpdfに動画を埋め込む手順の解説です

動画からpngで連番静止画を抽出

まずはffmpegを使ってpng連番静止画を切り出す

ffmpeg -ss "00:03:00" -t "00:00:15" -i hogehoge.mp4 -vf scale=640:-1 -an -r 15 hogehoge_%05d.png
  • 3分00秒から3分15秒までを切り出し
  • 入力動画は"source.mp4"
  • 横幅が640ピクセルになるようにアスペクト比を維持してリサイズ(縮小)
  • フレームレートを15フレーム/秒に落とす
  • 出力ファイルは"hogehoge_00000.png"みたいに番号が振られる

連番静止画をpngからepsに変換

今度はimagemagickを使ってpngからepsに変換。ついでにzip圧縮をかけて容量を削減しておく。
この時、ffmpegの出力は"hogehoge_00001.png"スタートなのに対し、imagemagickは"hogehoge_00000.eps"スタートな事に注意。

convert -density 72 src_*.png -compress zip eps3:hogehoge_%05d.eps
  • densityはやたら巨大(mm単位のサイズ的な意味で)なepsを吐きやがったのでその対処
  • eps level 3でzip圧縮する

LaTeXで埋め込む

animateパッケージを使用する

\usepackage[dvipdfmx]{animate}

参考にしたブログだとgraphicxもusepackageしていたが、自分の環境だとgraphicxの二重ロードでエラーになったので外している。
あとは動画を埋め込みたい所で

\animategraphics[height=4cm,autoplay,controls,loop]{15}{hogehoge_}{00000}{00149}
  • 高さ4cm
  • 自動的に再生開始
  • 再生コントロール付き
  • 自動ループ再生
  • 15[FPS]
  • 入力ファイルは"hogehoge_00000.eps"から"hogehoge_00149.eps"まで

正直再生コントロールは要らないかも。そもそもコントロールするほど長い動画はスライドに埋め込まないですよね?
フレームレートは連番静止画の再生スピードなので、オリジナルよりも高いFPSにすれば倍速にできる。
あ、それと、動画はAcrobatReaderじゃないと再生されないみたいで、少なくともubuntu標準のビューワーでは再生されませんでした。