]> git.plutz.net Git - rawnet/commitdiff
automatic thumbnail generation and serving
authorPaul Hänsch <paul@plutz.net>
Thu, 30 Sep 2021 22:35:12 +0000 (00:35 +0200)
committerPaul Hänsch <paul@plutz.net>
Thu, 30 Sep 2021 22:35:12 +0000 (00:35 +0200)
index.cgi
page_channel.sh
page_video.sh

index bd7e21b18085122b854d96bdd4c6391f722f5850..02ab9dcf92ff754fb57339ab58fcf486a67a0f24 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -107,7 +107,7 @@ case ${PATH_INFO} in
        $(w_user_recover)
        EOF
     ;;
-  /video/*/*.mp4)
+  /video/*/*.mp4|/video/*/*_thumb.jpg)
     . "${_EXEC}/cgilite/file.sh"
     FILE "${_DATA}/${PATH_INFO#/video/}"
     ;;
index 2e35590381cda8d2407f0babddef26c580884910..72553ba112577a111d45453022242f854513da3c 100755 (executable)
@@ -169,7 +169,7 @@ w_video(){
 
     [ "${VIDEO_STATUS}" = public ] || AUTHOR || return 0
 
-    thumb="${_BASE}/${CHANNEL_ID}/thumb_${VIDEO_ID}.jpg"
+    thumb="${_BASE}/video/${CHANNEL_ID}/${VIDEO_ID}_thumb.jpg"
     [ "$NAME" = \\ ] && NAME="(Unnamed Video)"
     printf '[div .video .thumb
               [h3 [a href="%s/channel/%s/%s/" . %s]]
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 \