]> git.plutz.net Git - rawnet/blobdiff - page_video.sh
automatic thumbnail generation and serving
[rawnet] / page_video.sh
index e1a2ae326116da12192dd7425af4abbb5ff180f3..0a1f2752baf5181cf384e386a0655e32ccbb1f7a 100644 (file)
@@ -23,8 +23,9 @@ update_video(){
         hits descr_cache futureuse
   local ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS \
         DESCR_CACHE FUTUREUSE
-  local arg video
-  video="$_DATA/$CHANNEL_ID/$VIDEO_ID.mp4"
+  local arg video thumb
+  video="${_DATA}/${CHANNEL_ID}/${VIDEO_ID}.mp4"
+  thumb="${_DATA}/${CHANNEL_ID}/${VIDEO_ID}_thumb.jpg"
 
   for arg in "$@"; do case $arg in
     name=*) name="${arg#*=}";;
@@ -41,6 +42,11 @@ update_video(){
     resy="${arg#*height=}"; resy="${resy%%${BR}*}"
     length="${arg#*duration=}"; length="${length%%${BR}*}"
   fi
+  if [ "$length" -a ! "${thumb}" -nt "${video}" ]; then
+    ffmpeg -nostdin -y -i "$video" -vf scale=320:-2,fps=10/${length} "${thumb%.jpg}_%02d.jpg"
+    montage "${thumb%.jpg}_"[01][0-9].jpg -tile 10x1 -geometry 320x180+0+0 -quality 85 "${thumb}"
+    rm -- "${thumb%.jpg}_"[01][0-9].jpg
+  fi 2>&-
 
   if LOCK "$vid_db"; then
     while read -r ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS \