You could try to get quality by manually setting video bitrate "-b:v 2000M"
As for FPS, seems like it doesn't affect size much.
Experimented a bit with -b:v and framerates:
ffmpeg -loop 1 -i ./frames/0254.png -i camera-shutter-click-07.wav -r 10000 -pix_fmt yuv420p -shortest -vcodec libvpx -strict -2 -acodec vorbis outputvideo6.webm
ffmpeg -loop 1 -i ./frames/0254.png -i camera-shutter-click-07.wav -pix_fmt yuv420p -shortest -vcodec libvpx -strict -2 -acodec vorbis outputvideo5.webm
ffmpeg -loop 1 -i ./frames/0254.png -i camera-shutter-click-07.wav -r 10000 -pix_fmt yuv420p -shortest -b:v 2000M -vcodec libvpx -strict -2 -acodec vorbis outputvideo7.webm
First two videos are 25fps and 10000fps but their filesizes are almost equal: 101.3 and 102.7kB
But since in third bitrate is higher it's size 339.7kB
ffmpeg -i outputvideo5.webm -i outputvideo6.webm -i outputvideo7.webm
ffmpeg version 2.5.git Copyright (c) 2000-2015 the FFmpeg developers
built on Jan 11 2015 19:12:34 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/home/alexandrov/ffmpeg_build --extra-cflags=-I/home/alexandrov/ffmpeg_build/include --extra-ldflags=-L/home/alexandrov/ffmpeg_build/lib --bindir=/home/alexandrov/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
libavutil 54. 16.100 / 54. 16.100
libavcodec 56. 20.100 / 56. 20.100
libavformat 56. 18.100 / 56. 18.100
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 7.100 / 5. 7.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, matroska,webm, from 'outputvideo5.webm':
Metadata:
encoder : Lavf56.18.100
Duration: 00:00:01.32, start: 0.000000, bitrate: 613 kb/s
Stream #0:0: Video: vp8, yuv420p, 1280x720, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
Input #1, matroska,webm, from 'outputvideo6.webm':
Metadata:
encoder : Lavf56.18.100
Duration: 00:00:01.30, start: 0.000000, bitrate: 631 kb/s
Stream #1:0: Video: vp8, yuv420p, 1280x720, SAR 1:1 DAR 16:9, 10k fps, 25 tbr, 1k tbn, 1k tbc (default)
Stream #1:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
Input #2, matroska,webm, from 'outputvideo7.webm':
Metadata:
encoder : Lavf56.18.100
Duration: 00:00:01.30, start: 0.000000, bitrate: 2088 kb/s
Stream #2:0: Video: vp8, yuv420p, 1280x720, SAR 1:1 DAR 16:9, 10k fps, 25 tbr, 1k tbn, 1k tbc (default)
Stream #2:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
Your commands creates more than just one frame. Since my audio files are too long, the video stream size will be at least 2x larger than the given
.jpg
file, with worse quality. BTW, I tried to set fps at smaller values than 1, but it didn't work. I have tried both,-r 1/60
parameter and-vf fps="fps=1/60"
filter. I don't know why. – destor – 2015-01-18T04:36:44.707I don't know why libvpx doesn't set fps at smaller values than 1, using libx264 sets fps at smaller values than 1.
wiki:Create a video slideshow from images
ffmpeg -loop 1 -i image.jpg -i audio.ogg -vf -vf "fps=1/60" -pix_fmt yuv420p -shortest -c:v libx264 -c:a copy outputvideo.mkv