根据上一篇文章中提取的metadata中每个关键帧的时间点,使用mplayer实现按关键帧时间点截预览图:
命令行参数:mplayer -ss 903.375 -noframedrop -nosound -nolirc -nojoystick -vo jpeg -frames 1 1292201790668a5e8b5b.mp4
执行结果:在当前目录下生成第903.375 (关键帧时间点)的截图。
执行效率:每10个关键帧截一次:截280张电影的图片需要50s,截200张电视剧需要20s,截71张电视剧需要8s。
参数解释:-ss 指定开始时间
-noframedrop 不跳过帧(即使解码速度跟不上)
-nosound 没有声音输出(不对声音进行解码)
-nolirc 禁用红外控制
-nojoystick 禁用控制棒
-vo 视频输出格式为jpeg
-frames 从ss指定的时间开始截取多少帧
优化后的shell脚本:
$ more cutimg.sh
#!/bin/bash
#!/bin/bash
awk '{if(NR%10==0) system("mplayer -ss "$1" -noframedrop -nolirc -nojoystick -nosound -vo jpeg -frames 1 129220
1790668a5e8b5b.mp4 ")system("mv 00000001.jpg "NR"_"$1".jpg")}' 1292201790668a5e8b5b_times.txt > /dev/null &
#mplayer -ss 903.375 -noframedrop -nosound -vo jpeg -frames 1 1292201790668a5e8b5b.mp4
#ffmpeg -i 1292201790668a5e8b5b.mp4 -y -ss 53.5 -t 0.001 -f image2 outfile.jpg
关键帧时间点文件
$ more 1292201790668a5e8b5b_times.txt
0.0416667
2.125
5.125
8.25
11.375
14.4583
17.5417
18.625
19.9167
23.0417
26.125
29.2083
32.3333
35.4583
38.5833
41.7083
44.5
0.0416667
2.125
5.125
8.25
11.375
14.4583
17.5417
18.625
19.9167
23.0417
26.125
29.2083
32.3333
35.4583
38.5833
41.7083
44.5