create video from single jpg and no audio
You can specify the frame rate for the input and/or the output.
Same frame rate for input and output
ffmpeg -loop 1 -framerate 10 -i in.png -t 30 -pix_fmt yuv420p out.mp4
Because the output will inherit the input frame rate you only need to declare the input frame rate if you want both the input and output to have the same frame rate.
The default frame rate for the image file demuxer is 25, which is the value that will be used if you omit
-framerate
.
Different frame rate for input and output
ffmpeg -loop 1 -framerate 10 -i in.png -r 25 -t 30 -pix_fmt yuv420p out.mp4
This example will use a frame rate of 10 for the input, and 25 for the output. Frames will be duplicated to go from 10 → 25. If the values are swapped, then frames will be dropped to go from 25 → 10. The console output will inform you if frames are duplicated or dropped.
The image file demuxer uses the
-framerate
private option to set frame rate. The output uses the-r
option to set frame rate.If you want frame interpolation try slowmoVideo.
Related videos on Youtube
Gert Gottschalk
Updated on September 18, 2022Comments
-
Gert Gottschalk almost 2 years
For a time lapse video project I want to create a header (with some title text). The header is just one still image which I give as jpg. I have seen other answers that produce still image video from a single jpg and match length with sound from a sound file. I have no sound file and want no audio channel in the output video. I would like to just give the single still jpg to ffmpeg and number of frames or seconds to show. So far I have just made many copies of the single still jpg (links) and used image2 input processor.
ffmpeg -framerate 16 -f image2 -i './Header/Sun_20150214_head_%02d.png' -vf "crop=1240:940:40:10" -c:v libx264 -pix_fmt yuv420p -crf 16 -y ./Video/sunspot_20150214_header.mp4
Is there a simpler version that works without the links and gives me better control over seconds of video length?
Thanks, Gert
UPDATE
I found this at the ffmpeg wiki (pending test short of answering my question)
ffmpeg -loop 1 -i img.png -c:v libx264 -t 30 -pix_fmt yuv420p out.mp4
I will try that but will add frame rate for the output.
I.e.
ffmpeg -loop 1 -i img.png -c:v libx264 -t 5 -r 16 -pix_fmt yuv420p out.mp4
Should give me 5sec of output video at 16fps. (hopefully)
Best, Gert
UPDATE2
I tried the above line and it worked fine. The video played well.
I wanted to have a title text overlayed onto the video and a fade effect at the beginning. Adding this as a -vf option gave a warning message. (Still the video is usable)
Just want to be sure about the significance of the message.
Command:
ffmpeg -loop 1 -i './npy2reg/Sun_20150214_01.png' -c:v libx264 -vf drawtext="fontsize=100:fontcolor=yellow:fontfile=/usr/share/fonts/truetype/freefont/FreeSans.ttf:textfile=./scripts/header_text.txt:x=(w-text_w)/2:y=(h-text_h-line_h)/2","crop=1240:940:40:10" -t 3 -pix_fmt yuv420p -crf 16 -r 12 -y ./Video/sunspot_20150214_header.mp4
Console output:
gottsch@ubuntu:~/sunspot_20150214$ ffmpeg -loop 1 -i './npy2reg/Sun_20150214_01.png' -c:v libx264 -vf drawtext="fontsize=100:fontcolor=yellow:fontfile=/usr/share/fonts/truetype/freefont/FreeSans.ttf:textfile=./scripts/header_text.txt:x=(w-text_w)/2:y=(h-text_h-line_h)/2","crop=1240:940:40:10" -t 3 -pix_fmt yuv420p -crf 16 -r 12 -y ./Video/sunspot_20150214_header.mp4 ffmpeg version 1.2.6-7:1.2.6-1~trusty1 Copyright (c) 2000-2014 the FFmpeg developers built on Apr 26 2014 18:52:58 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --arch=amd64 --disable-stripping --enable-avresample --enable-pthreads --enable-runtime-cpudetect --extra-version='7:1.2.6-1~trusty1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 53. 5.103 / 53. 5.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, image2, from './npy2reg/Sun_20150214_01.png': Duration: 00:00:00.04, start: 0.000000, bitrate: N/A Stream #0:0: Video: png, rgb24, 1280x960, 25 fps, 25 tbr, 25 tbn, 25 tbc [libx264 @ 0x1bb7020] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 [libx264 @ 0x1bb7020] profile High, level 3.2 [libx264 @ 0x1bb7020] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=12 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=16.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to './Video/sunspot_20150214_header.mp4': Metadata: encoder : Lavf54.63.104 Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1240x940, q=-1--1, 12288 tbn, 12 tbc Stream mapping: Stream #0:0 -> #0:0 (png -> libx264) Press [q] to stop, [?] for help [swscaler @ 0x1badb40] Warning: data is not aligned! This can lead to a speedloss frame= 36 fps= 20 q=-1.0 Lsize= 399kB time=00:00:02.83 bitrate=1155.0kbits/s dup=0 drop=34 video:398kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.301361% [libx264 @ 0x1bb7020] frame I:1 Avg QP: 6.33 size:399123 [libx264 @ 0x1bb7020] frame P:9 Avg QP: 8.73 size: 696 [libx264 @ 0x1bb7020] frame B:26 Avg QP:13.38 size: 65 [libx264 @ 0x1bb7020] consecutive B-frames: 2.8% 0.0% 8.3% 88.9% [libx264 @ 0x1bb7020] mb I I16..4: 15.9% 29.7% 54.4% [libx264 @ 0x1bb7020] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 2.8% 0.0% 0.0% 0.0% 0.0% skip:97.2% [libx264 @ 0x1bb7020] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.7% 0.0% 0.0% direct: 0.0% skip:99.3% L0: 0.9% L1:99.1% BI: 0.0% [libx264 @ 0x1bb7020] 8x8 transform intra:29.7% inter:48.0% [libx264 @ 0x1bb7020] coded y,uvDC,uvAC intra: 99.4% 9.5% 9.3% inter: 0.3% 0.0% 0.0% [libx264 @ 0x1bb7020] i16 v,h,dc,p: 6% 4% 70% 20% [libx264 @ 0x1bb7020] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 10% 19% 4% 14% 13% 11% 6% 9% [libx264 @ 0x1bb7020] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 11% 17% 7% 13% 11% 10% 8% 9% [libx264 @ 0x1bb7020] i8c dc,h,v,p: 92% 3% 4% 1% [libx264 @ 0x1bb7020] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0x1bb7020] ref P L0: 98.6% 0.0% 1.1% 0.3% [libx264 @ 0x1bb7020] kb/s:1085.57 gottsch@ubuntu:~/sunspot_20150214$
Thanks, Gert