#! /usr/bin/perl # Enocode test # Expects pretty complete install of ffmpeg # ./configure --prefix=/usr/local --disable-debug --enable-gpl --enable-postproc --enable-swscale --enable-pthreads --enable-x11grab --enable-liba52 --enable-libdc1394 --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-vhook --enable-nonfree # Configuration settings my %cfg = ( 'outputdir' => '/home/regx/scripts/vidcap/trunk/encode_test', # no trailing slash 'duration' => '00:00:10', # format 00:00:00 'in' => '/home/regx/scripts/vidcap/trunk/capture001.dv', 'intype' => 'dv', # dv avi mpg etc. 'overwrite' => 'y', # y or n - if set to "n" you will be prompted 'title' => 'druplicon test', 'author' => 'regx', 'track' => '1', 'album' => 'druplicon', 'comment' => '', 'year' => '2008', ); # fps = performance mode / powersave my @formats = ( { name => qq[xvid_a], cmd => qq[-f avi -vcodec libxvid -s cif -qscale 15 -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '1.2', win32ok => '', linuxok => '?', macok => '', fps => '99/?', notes => '', }, { name => qq[xvid_a2], cmd => qq[-f avi -vcodec libxvid -s 320x240 -qscale 15 -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '1.02', win32ok => '', linuxok => '?', macok => '', fps => '63/?', notes => '', }, { name => qq[xvid_b], cmd => qq[-f avi -vcodec libxvid -qscale 6 -acodec libmp3lame -ab 128k -ar 22050], ext => 'avi', mpm => '', win32ok => '', linuxok => '?', macok => '', fps => '44/19', notes => 'no audio in VLC - fine in mplayer', }, { name => qq[xvid_c], cmd => qq[-f avi -vcodec libxvid -qscale 1 -acodec libmp3lame -ab 128k -ar 44100], ext => 'avi', mpm => '', win32ok => '', linuxok => '?', macok => '', fps => '34/14', notes => 'no audio in VLC - fine in mplayer', }, { name => qq[xvid_d], cmd => qq[-f avi -vcodec libxvid -s cif -qscale 10 -acodec libmp3lame -ab 32k -ar 22050], ext => 'avi', mpm => '1.6', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '72/27', notes => 'plays works in VLC', }, { name => qq[xvid_e], cmd => qq[-f avi -vcodec libxvid -s vga -qscale 1 -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '151', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '40/16', notes => 'plays works in VLC', }, { name => qq[xvid_f], cmd => qq[-f avi -vcodec libxvid -s vga -qscale 15 -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '2.59', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '48/19', notes => 'plays works in VLC', }, { name => qq[xvid_g], cmd => qq[-f avi -vcodec libxvid -s vga -qscale 10 -deinterlace -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '3.39', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '55/18', notes => 'plays works in VLC', }, { name => qq[xvid_h], cmd => qq[-f avi -vcodec libxvid -s cif -qscale 5 -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '2.73', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '75/25', notes => 'plays works in VLC', }, { name => qq[xvid_i], cmd => qq[-f avi -vcodec libxvid -s vga -qscale 5 -acodec libmp3lame -ab 24k -ar 22050], ext => 'avi', mpm => '8.64', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '48/20', notes => 'plays works in VLC', }, { name => qq[xvid_j], cmd => qq[-f mov -vcodec libxvid -s vga -qscale 5 -acodec libmp3lame -ab 24k -ar 22050], ext => 'mov', mpm => '7.2', win32ok => 'yes', linuxok => 'yes', macok => '', fps => '47/18', notes => 'broken preview or file details in linux', }, { name => qq[mpeg4_a], cmd => qq[-f mp4 -vcodec mpeg4 -s 320x240 -qscale 4 -acodec libfaac -ab 96 -ar 22050], ext => 'mp4', mpm => '', win32ok => '', linuxok => 'no', macok => '', notes => 'Extremely fubar', }, { name => qq[mpeg2_a], cmd => qq[-f dvd -vcodec mpeg2video -b 1800k -s ntsc -aspect 16:9 -r 29.997 -acodec mp2 -ab 224k -ar 48000 -ac 2], ext => 'mp2', mpm => '15.6', win32ok => '', linuxok => 'yes', macok => '', notes => 'no preview', }, { name => qq[mpeg2_b], cmd => qq[-f dvd -vcodec mpeg2video -b 1800k -s ntsc -aspect 4:3 -r 29.997 -acodec mp2 -ab 224k -ar 48000 -ac 2], ext => 'mp2', mpm => '15.6', win32ok => '', linuxok => 'yes', macok => '', notes => 'no preview', }, { name => qq[mpeg2_c], cmd => qq[-f dvd -vcodec mpeg2video -b 400k -s cif -aspect 4:3 -r 29.997 -acodec mp2 -ab 24k -ar 22050 -ac 1], ext => 'mp2', mpm => '4.54', win32ok => '', linuxok => 'yes', macok => '', notes => 'no preview in linux', }, { name => qq[flv_a], cmd => qq[-f flv -vcodec flv -s 320x240 -qscale 6 -acodec libmp3lame -ab 24k -ar 11025], ext => 'flv', mpm => '1.88', win32ok => '', linuxok => '?', macok => '', notes => 'Only plays in flv player', }, { name => qq[flv_16x9_a1], cmd => qq[-f flv -vcodec flv -s 428x240 -aspect 16:9 -qscale 5 -acodec libmp3lame -ab 24k -ar 11025 -ac 1], ext => 'flv', mpm => '2.4', fps => '116', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_a2], cmd => qq[-f flv -vcodec flv -s 428x240 -aspect 16:9 -qscale 5 -acodec libmp3lame -ab 24k -ar 11025 -ac 2], ext => 'flv', mpm => '2.4', fps => '116', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_a3], cmd => qq[-f flv -vcodec flv -s 428x240 -aspect 16:9 -r 24 -qscale 5 -acodec libmp3lame -ab 24k -ar 11025 -ac 2], ext => 'flv', mpm => '2.0', fps => '99', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_a4], cmd => qq[-f flv -vcodec flv -s 428x240 -aspect 16:9 -r 24 -deinterlace -qscale 2.75 -acodec libmp3lame -ab 24k -ar 11025 -ac 1], ext => 'flv', mpm => '3.5', fps => '64', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_b], cmd => qq[-f flv -vcodec flv -s 428x240 -aspect 16:9 -qscale 4 -acodec libmp3lame -ab 24k -ar 11025], ext => 'flv', mpm => '1.88', fps => '116', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_b2], cmd => qq[-f flv -vcodec flv -s 428x240 -aspect 16:9 -qscale 4 -acodec libmp3lame -ab 32k -ar 22050], ext => 'flv', mpm => '1.88', fps => '110', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_c1], cmd => qq[-f flv -vcodec flv -s 480x270 -aspect 16:9 -deinterlace -qscale 4 -acodec libmp3lame -ab 32k -ar 22050], ext => 'flv', mpm => '1.88', fps => '121', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_d1], cmd => qq[-f flv -vcodec flv -s 640x360 -aspect 16:9 -deinterlace -qscale 5 -acodec libmp3lame -ab 32k -ar 22050], ext => 'flv', mpm => '1.88', fps => '121', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_d2], cmd => qq[-f flv -vcodec flv -s 640x360 -r 24 -aspect 16:9 -deinterlace -qscale 3.75 -acodec libmp3lame -ab 24k -ar 22050 -ac 1], ext => 'flv', mpm => '1.88', fps => '121', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_e1], cmd => qq[-f flv -vcodec flv -s 362x204 -aspect 16:9 -deinterlace -qscale 2 -acodec libmp3lame -ab 32k -ar 22050], ext => 'flv', mpm => '1.88', fps => '121', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, { name => qq[flv_16x9_f1], cmd => qq[-f flv -vcodec flv -s 640x360 -aspect 16:9 -r 18 -deinterlace -qscale 5 -acodec libmp3lame -ab 24 -ar 11025 -ac 1], ext => 'flv', mpm => '3.5', fps => '50', win32ok => '', linuxok => '?', macok => '', notes => '16x9 Only plays in flv player', }, # # -i source.avi -pass 1 -g 240 -qcomp 0.6 -qmax 15 -qdiff 4 -i_qfactor 0.71428572 -b_qfactor 0.76923078 -maxrate 950 -bufsize 485 -s 512x384 -b 800 -refs 1 -subq 1 -r 25 -acodec mp3 -ab 48 -ar 22050 -ac 1 -y output.flv { name => qq[divx_a], cmd => qq[-f avi -vcodec mpeg4 -vtag DivX -qscale 4 -acodec libmp3lame -ab 128k -ar 22050], ext => 'avi', mpm => '15.6', win32ok => '', linuxok => 'no - no audio', macok => '', notes => '', }, { name => qq[mkv_a], cmd => qq[-f matroska -vcodec libtheora -qscale 4 -acodec vorbis -ab 96k -ar 22050], ext => 'mkv', mpm => '3.46', win32ok => '', linuxok => 'yes', macok => '', notes => '', }, { name => qq[msmpg4v2_a], cmd => qq[-f avi -vcodec msmpeg4v2 -b 200k -s 352x240 -deinterlace -aspect 4:3 -qscale 1 -acodec libmp3lame -ab 24k -ar 11025], ext => 'avi', mpm => '6.6', win32ok => '', linuxok => 'no', macok => '', notes => '', }, { name => qq[msmpg4v2_b], cmd => qq[-f avi -vcodec msmpeg4v2 -b 200k -s 352x240 -deinterlace -aspect 4:3 -qscale 1 -acodec libmp3lame -ab 24k -ar 11025], ext => 'avi', mpm => '6.6', win32ok => '', linuxok => 'no', macok => '', notes => '', }, { name => qq[vcd_a], cmd => qq[-f avi -target ntsc-vcd -qscale 1], ext => 'mpg', mpm => '10.2', win32ok => '', linuxok => 'yes', macok => '', notes => '', }, { name => qq[vcd_b], cmd => qq[-f avi -target ntsc-vcd -qscale 15], ext => 'mpg', mpm => '', win32ok => '', linuxok => '', macok => '', notes => '', }, { name => qq[svcd_a], cmd => qq[-f avi -target ntsc-svcd -qscale 1], ext => 'mpg', mpm => '20.4', win32ok => '', linuxok => 'yes', macok => '', notes => '', }, { name => qq[svcd_b], cmd => qq[-f avi -target ntsc-svcd -s cif -qscale 15], ext => 'mpg', mpm => '2.84', win32ok => '', linuxok => '', macok => '', notes => 'kinda blocky', }, { name => qq[dvd_a], cmd => qq[-f avi -target dvd -qscale 1], ext => 'mpg', mpm => '7.2', win32ok => '', linuxok => 'yes', macok => '', notes => '', }, ); $count = 0; for(@formats){ my %format = %{$_}; print qq[\n-----------------------------------\nEncoding test $format{'name'}\n]; my $command = qq[ffmpeg -v 1]; $command .= qq[ -t $cfg{'duration'}] if $cfg{'duration'}; $command .= qq[ -f $cfg{'intype'} -i "$cfg{'in'}"]; if($cfg{'overwrite'}){ $command .= qq[ -y]; } $meta = qq[-title $cfg{'title'} -author $cfg{'author'} -track $cfg{'track'} -album $cfg{'album'} -comment $cfg{'comment'} -year $cfg{'year'}]; $command =qq[$command $format{'cmd'} "$cfg{'outputdir'}/$format{'name'}.$format{'ext'}"]; `$command`; } print "done";