■ffmpegの導入 $ sudo apt-get install -y ffmpeg $ sudo apt-get build-dep -y ffmpeg ■対象となる動画の拡張子をすべて列挙する。 $ find . -type f -print | sed s/".*\."//g | tr [A-Z] [a-z] | sort -u | xargs echo -n | sed s/" "/"\\\\\|"/g;echo "" avi\|flv\|m4v\|mp4\|mpg ■対象となる動画がデコード可能か確認する。 $ ffmpeg -formats 2>&1 | grep "^ D" | grep --color -i "avi\|flv\|m4v\|mp4\|mpg" DE avi AVI format DE flv FLV format DE m4v raw MPEG-4 video format D mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG-4/Motion JPEG 2000 format DEVSD flv Flash Video (FLV) D A mp3on4 MP3onMP4 D V D vqavideo Westwood Studios VQA (Vector Quantized Animation) video ■ファイル名にスペースが無いか 古い「avi」「mpg」にはスペースがありません。 $ find . -type f -iname "*.avi" -print | grep " " | wc -l 0 $ find . -type f -iname "*.flv" -print | grep " " | wc -l 2604 $ find . -type f -iname "*.m4v" -print | grep " " | wc -l 7 $ find . -type f -iname "*.mp4" -print | grep " " | wc -l 75 $ find . -type f -iname "*.mpg" -print | grep " " | wc -l 0 ■ファイル名にスペースが無い場合 $ find . -type f -iname "*.avi" -print | \ for list in `xargs`;do \ ffmpeg -i "$list" -f image2 -ss 15 -vframes 1 -s 214x120 $(echo "$list" | sed s/"\.avi\|\.AVI"/"\.jpg"/); \ done $ find . -type f -iname "*.mpg" -print | \ for list in `xargs`;do \ ffmpeg -i "$list" -f image2 -ss 15 -vframes 1 -s 214x120 $(echo "$list" | sed s/"\.mpg\|\.MPG"/"\.jpg"/); \ done ■ファイル名にスペースがある場合 ※一時的にスペースを「_」の10個連続に変換。 「_」を10個も連続で含むファイルがあるなら、ファイル名の方を考え直したほうが良い。 $ find . -type f -iname "*.m4v" -print | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ NAME=$(echo "$list" | sed s/"__________"/" "/g); \ ffmpeg -y -i "$NAME" -f image2 -ss 15 -vframes 1 -s 214x120 "$(echo "$NAME" | sed s/"\.m4v\|\.M4V"/"\.jpg"/)"; \ done $ find . -type f -iname "*.mp4" -print | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ NAME=$(echo "$list" | sed s/"__________"/" "/g); \ ffmpeg -y -i "$NAME" -f image2 -ss 15 -vframes 1 -s 214x120 "$(echo "$NAME" | sed s/"\.mp4\|\.MP4"/"\.jpg"/)"; \ done $ find . -type f -iname "*.flv" -print | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ NAME=$(echo "$list" | sed s/"__________"/" "/g); \ ffmpeg -y -i "$NAME" -f image2 -ss 15 -vframes 1 -s 214x120 "$(echo "$NAME" | sed s/"\.flv\|\.FLV"/"\.jpg"/)"; \ done ■エラーがあったら、ファイル名を出力 ※「シングルクォート」はエラーになるので、ファイル名を変えた方が良い。 $ find . -type f -iname "*.avi" -print | \ for list in `xargs`;do \ ls $(echo "$list" | sed s/"\.avi\|\.AVI"/"\.jpg"/) > /dev/null 2>&1 || echo "$list"; \ done $ find . -type f -iname "*.mpg" -print | \ for list in `xargs`;do \ ls $(echo "$list" | sed s/"\.mpg\|\.MPG"/"\.jpg"/) > /dev/null 2>&1 || echo "$list"; \ done ./camera/20090201.mpg $ find . -type f -iname "*.m4v" -print | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ NAME=$(echo "$list" | sed s/"__________"/" "/g); \ ls "$(echo "$NAME" | sed s/"\.m4v\|\.M4V"/"\.jpg"/)" > /dev/null 2>&1 || echo "$NAME"; \ done $ find . -type f -iname "*.mp4" -print | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ NAME=$(echo "$list" | sed s/"__________"/" "/g); \ ls "$(echo "$NAME" | sed s/"\.mp4\|\.MP4"/"\.jpg"/)" > /dev/null 2>&1 || echo "$NAME"; \ done $ find . -type f -iname "*.flv" -print | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ NAME=$(echo "$list" | sed s/"__________"/" "/g); \ ls "$(echo "$NAME" | sed s/"\.flv\|\.FLV"/"\.jpg"/)" > /dev/null 2>&1 || echo "$NAME"; \ done ■失敗したファイルの対処 真っ黒な画像を準備、コピーする。 $ apt-file search convert | grep bin | grep "\/convert\$" graphicsmagick-imagemagick-compat: /usr/bin/convert imagemagick: /usr/bin/convert imagemagick-dbg: /usr/lib/debug/usr/bin/convert $ sudo apt-get install -y imagemagick $ convert -size 214x120 xc:black black.jpg $ find . -type f -print | \ sed s/"\.avi\|\.flv\|\.m4v\|\.mp4\|\.mpg"/"\.jpg"/g | \ sed s/" "/"__________"/g | \ for list in `xargs`;do \ ls "$(echo "$list" | sed s/"__________"/" "/g)" > /dev/null 2>&1 || cp black.jpg "$(echo "$list" | sed s/"__________"/" "/g)"; \ done ■確認 「black.jpg」の分、1多い。 $ find . -type f -print | grep "\.jpg" | wc -l 3761 $ find . -type f -print | grep -i "\.avi\|\.flv\|\.m4v\|\.mp4\|\.mpg" | wc -l 3760 $ find . -type f -print | grep "black.jp" ./black.jpg ■後片付け $ sudo apt-get remove -y imagemagick $ sudo apt-get autoremove ------------------------------------------------------------------------------- デスクトップユーザなら、以下の方が楽or「black.jpg」を使わなくて済むかも。。。 ■totemの場合 linuxで簡単サムネイル画像の作成? http://freestyle.nvo.jp/archives/295 $ sudo apt-get install -y apt-file $ sudo apt-file update $ apt-file search totem | grep thumb | grep bin totem: /usr/bin/totem-video-thumbnailer totem-dbg: /usr/lib/debug/usr/bin/totem-video-thumbnailer ■私の環境にはtotemは導入されていない。 $ find /usr -type f -name "*totem*" -o -name "*gstreamer*" -print | grep bin /usr/bin/gnome-volume-control.gstreamer /usr/bin/gstreamer-properties $ apt-file search gnome-volume-control.gstreamer gnome-media: /usr/bin/gnome-volume-control.gstreamer $ apt-file search streamer-properties | grep bin gnome-media: /usr/bin/gstreamer-properties ■mplayer単体の場合 【NOT MPlayerThumbs】Linuxでイケてる動画サムネイル http://mutous.blog120.fc2.com/blog-entry-201.html $ apt-file list mplayerthumbs | grep bin mplayerthumbs: /usr/bin/mplayerthumbsconfig ■mplayer+imagemagicの場合 動画からサムネイル画像を生成する http://wiki.princo.org/?%C6%B0%B2%E8%A4%AB%A4%E9%A5%B5%A5%E0%A5%CD%A5%A4%A5%EB%B2%E8%C1%FC%A4%F2%C0%B8%C0%AE%A4%B9%A4%EB $ apt-file search mplayer | grep bin fvwm-crystal: /usr/bin/fvwm-crystal.mplayer-wrapper gnome-mplayer: /usr/bin/gnome-mplayer gnome-mplayer-dbg: /usr/lib/debug/usr/bin/gnome-mplayer kdemultimedia-dbg: /usr/lib/debug/usr/bin/mplayerthumbsconfig kmplayer: /usr/bin/kmplayer mplayer: /usr/bin/mplayer mplayer: /usr/share/mplayer/binary_codecs.sh mplayer-dbg: /usr/lib/debug/usr/bin/gmplayer mplayer-dbg: /usr/lib/debug/usr/bin/mplayer mplayer-doc: /usr/share/doc/mplayer-doc/tech/binary-packaging.txt.gz mplayer-gui: /usr/bin/gmplayer mplayerthumbs: /usr/bin/mplayerthumbsconfig remuco-mplayer: /usr/bin/remuco-mplayer smplayer: /usr/bin/smplayer stymulator: /usr/bin/ymplayer $ apt-file search montage | grep bin graphicsmagick-imagemagick-compat: /usr/bin/montage imagemagick: /usr/bin/montage imagemagick-dbg: /usr/lib/debug/usr/bin/montage netpbm: /usr/bin/pnmmontage ■mplayerもimagemagicも私の環境には無い。 $ find /usr -type f -name "*mplayer" -o -name "*montage" -print ■ファイルマネージャ(ffmpegthumbnailer)の場合 Xubuntuで動画サムネイルを表示させる方法 http://www.uetyi.mydns.jp/wordpress/linux-desktop/entry-579.html $ apt-file search ffmpegthumbnailer | grep bin ffmpegthumbnailer: /usr/bin/ffmpegthumbnailer ffmpegthumbnailer-dbg: /usr/lib/debug/usr/bin/ffmpegthumbnailer ■「ffmpegthumbnailer」もはやり私の環境には無い。 $ find /usr -type f -name "ffmpegthumbnailer" -print ■ffmpeg単体の場合 $ apt-file search ffmpeg | grep bin bitpim: /usr/share/bitpim/helpers/ffmpeg.lbin ffmpeg: /usr/bin/ffmpeg ffmpeg-dbg: /usr/lib/debug/usr/bin/ffmpeg ffmpeg2theora: /usr/bin/ffmpeg2theora ffmpegthumbnailer: /usr/bin/ffmpegthumbnailer ffmpegthumbnailer-dbg: /usr/lib/debug/usr/bin/ffmpegthumbnailer pfstools: /usr/bin/pfsoutffmpeg smilutils: /usr/bin/ffmpeg2raw ■ffmpegも無かったw。 $ find /usr -type f -name "*ffmpeg*" -print | grep bin ■ffmpeg+apache+PHP 動画ファイルからサムネイル作成ツール http://blog.ishiro.com/?p=182 ■一応PHPはあるが頼りたくない。 $ dpkg -l | grep -i php | grep ^ii | awk '{print $2}' | column libapache2-mod-php5 php5-cli php5-mysql php-pear php5-common php5-suhosin php5 php5-gd