From b2968f3bda41a7e8931390664157a73365b3fc74 Mon Sep 17 00:00:00 2001 From: Chris Greenshields <http://cfd.direct> Date: Sun, 12 Jul 2015 12:58:50 +0100 Subject: [PATCH] foamCreateVideo: enabled to use avconv and output WebM format Resolves feature request http://www.openfoam.org/mantisbt/view.php?id=1722 --- bin/foamCreateVideo | 60 +++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/bin/foamCreateVideo b/bin/foamCreateVideo index bd289847701..c5701012a6c 100755 --- a/bin/foamCreateVideo +++ b/bin/foamCreateVideo @@ -26,8 +26,8 @@ # foamCreateVideo # # Description -# Creates an MPEG-4 compressed (.mp4) video file from PNG images -# - requires mencoder +# Creates a video file from PNG images +# - requires avconv or mencoder # #------------------------------------------------------------------------------ @@ -43,14 +43,15 @@ options: -h | -help help -i | -image <name> name of image sequence (default = image) -o | -out <name> name of output video file (default = video) + -w | -webm WebM output video file format -Creates an MPEG-4 compressed (.mp4) video file from a sequence of PNG images +Creates a video file from a sequence of PNG images - A sequence named "image" will expect files image.0000.png, image.0001.png, etc -- An output video named "video" will produce a file video.mp4 -- By default the video codec is high resolution (x264) but there is an option to - select a medium resolution codec (lavc) +- The default output video compression format is MPEG-4, with WebM as an option +- The default file name, using MPEG-4 compression, is video.mp4 +- By default the video codec is high resolution -Requires mencoder +Requires avconv or mencoder for MPEG-4 output, avconv for WebM output USAGE exit 1 @@ -62,8 +63,7 @@ DIR='.' IMAGE='image' VIDEO='video' FPS=10 -VCODEC=x264 - +FMT='mp4' while [ "$#" -gt 0 ] do @@ -91,6 +91,11 @@ do VIDEO=$2 shift 2 ;; + -w | -webm) + FMT=webm + echo "Selected $FMT format, requires avconv..." + shift + ;; -*) usage "invalid option '$1'" ;; @@ -106,12 +111,35 @@ done [ -f "$(ls -1 $DIR/$IMAGE.*.png | head -1)" ] || usage "Cannot find first file in image sequence" -if command -v mencoder >/dev/null 2>&1; then - mencoder \ - "mf://$DIR/$IMAGE.*.png" \ - -mf fps=$FPS \ - -o $VIDEO.mp4 \ - -ovc $VCODEC +if [ "$FMT" = "webm" ] ; then + if command -v avconv >/dev/null 2>&1 ; then + echo "Creating image with avconv..." + avconv \ + -r 1 \ + -i ${DIR}/${IMAGE}.%04d.png \ + -r $FPS \ + -c:v libvpx -crf 15 -b:v 1M \ + $VIDEO.$FMT + else + usage "Please install avconv" + fi else - usage "Please install mencoder" + if command -v avconv >/dev/null 2>&1 ; then + echo "Creating image with avconv..." + avconv \ + -r 1 \ + -i ${DIR}/${IMAGE}.%04d.png \ + -r $FPS \ + -c:v libx264 -pix_fmt yuv420p \ + $VIDEO.$FMT + elif command -v mencoder >/dev/null 2>&1 ; then + echo "Creating image with mencoder..." + mencoder \ + "mf://$DIR/$IMAGE.*.png" \ + -mf fps=$FPS \ + -o $VIDEO.$FMT \ + -ovc x264 + else + usage "Please install avconv or mencoder" + fi fi -- GitLab