Two weeks ago I started my search for free solution that can do cross-browser and cross-platform screen captures. After couple of days I understood that creating screencasts without using Camtasia is hard because I needed something that can do the following:

  1. Produce Flash Video (FLV) which is good for streaming
  2. Use a lossless codec for great quality
  3. Works under Windows XP
  4. Gives good quality/size ratio

The solution is Camstudio + Camstudio Lossless Codec + miniRec + FFmpeg

Camstudio is free open source screen capture software (in relatively mature state) with great set of features described on the official website ,blog and forum

Camstudio Lossless Codec is not really necessary because exporting in uncompressed video works too but requires alot more space. I tried other lossless video formats like MSU Screen Capture Lossless Codec but since I’m converting it in Flash Screen Video it doesn’t make much difference.

miniRec Audio Recorder is nice and very simple application for recording your voice while capturing the video stream. While Camstudio has build-in audio recording support I had too much troubles with it (the encoded FLVs had some strange bugs) so I’m just recording it separately.

FFMpeg – as usual the cherry of the pie now with support for the Flash Screen Video format (flashsv). With its help it is easy to produce high quality lossless FLVs with relatively small size.

How it all works out:

  1. Install Camstudio 2.5 Beta 1 – there are many tutorials on youtube about it and I’ll skip this step. Also you can check the official install screencast – http://camstudio.org/video/install/ which is for abit older version
  2. Install Camstudio Lossless Codec – it is quite easy, just download the archive, extract it somewhere, right click on the inf file and chose install
  3. Run Camstudio and click on Options –> Video Options. For me the best settings for getting as small as possible files are like this:

Camstudio Settings

(If you have any better suggestions please share with me)

  1. Download and install miniRec from here. I have not used any special settings since the voice is compressed by FFmpeg while merging the video and audio streams. My suggestion is to set a global shortcut key for both miniRec and Camstudio so it is possible to fire them almost simultaniously.
  2. Record all you want :)
  3. Get FFmpeg. There are versions both for linux and windows. I’m currently using SVN-r12810 but anything relativly recent should do the trick.
  4. The magic for converting your avi to flv is:
    ffmpeg -i input.avi -vcodec flashsv output.flv
    if you are joining with the audio use:
    ffmpeg -i input.avi -i input.wav -ar 22050 -vcodec flashsv output.flv
  5. And the result will be like this:
You do not have flash installed.

PS. The song that is used in the screencast is under Creative Commons and can be found here

Comments

Comment by Andy Waite on 2008-05-23 00:44:10 +0300

I’ve created a video sharing site called Deskcaster which can automatically convert an uploaded Camstudio Lossless video into Flash and other formats. Please visit http://www.deskcaster.com to try it.

Comment by Peter on 2008-05-23 10:22:04 +0300

FFmpeg i presume ?

Also there is not much of a website.

Hire a designer :)

Comment by Andy Waite on 2008-05-23 12:30:22 +0300

Peter,

Correct, it is ffmpeg which is used at the backend.

And yes, it will certainly need a designer’s input! I’m concentrating on basic functionality at the moment.

Andy

Comment by Marcus on 2008-06-03 19:31:53 +0300

it would be great to have a tutorial about how to “get” and run ffmpeg

Comment by Peter on 2008-06-03 23:33:48 +0300

@Marcus

I use debian so installing is as simple as apt-get install ffmpeg (first you need to add
deb http://www.debian-multimedia.org unstable main in /etc/apt/sources.list)

if you use ubuntu it should be close to this, but if you are using other distribution please point it out,

if using Windows get it from here http://arrozcru.no-ip.org/ffmpeg_builds/

Anyway I’m sure there are thousands of tutorials how to install ffmpeg so google a bit :)

Comment by Anne on 2008-08-28 11:05:52 +0300

Hello
I can’t find the 2.5 version for windows. The version on camstudio.org is 2.0.
Thanks

Comment by Peter on 2008-08-28 11:38:18 +0300

@Anne

Here you go: http://camstudio.org/blog/camstudio-25-beta-1-released (download from http://camstudio.org/dev/)

Comment by Димитров on 2008-10-15 15:36:50 +0300

За ffmpeg лесно, това нещо ми е известно поне на мен. Но програмата за захват Camstudio е извънредно тежка, направо неизползваема на по-стар компютър. Високи честоти на кадрите са непостижими дори и на по-нов компютър. Camstudio не мога да го приема на сериозно – страшно тежко е и произвежда големи файлове.

Не знам каква е тази еуфория по Camtasia. Навсякъде все нея ползват, като няма никави очевидни предимства.
Пробвах BB FlashBack, на PIII 500 MHz натоварването на процесора е няколко процента при запис. И размерът на файлавете (някакъв закрит, техен си формат) е няколко пъти по-малък от това, което после дава ffmpeg като FLV.

Изобщо търси се БЕЗПЛАТНА праграма за запис на екрана, работеща с такава лекота с каквато работи BB FlashBack. Самият BB FlashBack е хубав но е страшно скъп за възможностите си. Който ползва стар компютър, по-добре би купил нов, отколкото скъпа програма работеща добре на стария.

Comment by Peter on 2008-10-15 17:31:19 +0300

Не съм съгласен много.

  1. Camstudio върви прекрасно на сравнително добър компютър (дори и във виртуална машина)
  2. Camtasia е стандарт във видео capture-ването
  3. Ако не е lossless формат не ми го хвали

PIII е антика :)

Comment by Димитров on 2008-10-15 19:10:02 +0300

По точки:

  1. Далеч не всеки разполага със сравнително добър компютър. Да се мисли че “щом аз имам значи и всички имат” е голямото заблуждение. (Така мислят нашите уважавани политици :) .)
    А и като имаш стар компютър, който работи това не означава че трябва да го изхвърлиш само защото е стар. Това, че компютрите са мощни не означава че програмистите трябва да са некадърници и да пишат глупав и неоптимизиран код.
    Camstudio в момента е в това положение – никой не го иска. Лично аз съм го предлагал съм го на много хора, отговорът е един и същи – ако ще и безплатен да е тази тежест е непоносима. Това е програма за запис на екрана все пак, е нито игра нито 3D софтуер. Образа се записва така както се изважда.

  2. Camtasia не е никакъв стандарт, просто “голямата американска реклама” е заразителна и дори и просветени хора се зарибяват. Като рекламата дори на моменти преминава в груба лъжа. Прочети примерно тук:
    http://compression.ru/video/ls-codec/screen_capture_codec_en.html EnSharpen кодека, който е платен нямал равен по компресия. А безпплатния MSU Screen Capture Lossless Codec дава по-добра компресия. Голяма американска реклама, какво да ти кажа, най мразя да ме лъжат в очите.
    Загубил съм достатъчно време в тестове на програми за запис на екрана. Чел съм пробвал съм и т.н. Camtasia не струва, да не говорим да е какъвто и да било стандарт.
    BB FlashBack е 10 пъти по-малка на размер, върви поне 10 по-леко (дори и там където Camtasia неможе дори да тръгне) и е лишена от тъпоумните уизарди за неграмотни потребители. Но е платена и то скъпо.
    Така че препоръчвам ти пробвай BB FlashBack и ще си промениш представите за възможностите на рограма за запис на екрана.

  3. BB FlashBack поддържа и Lossless и компресия със загуби, която честно казано никога не съм пробвал. И аз ползвам само Lossless. SWF файловете които прави са с (около поне 4 пъти) по-малък размер от FLV-та на ffmpeg. Защото реално BB FlashBack не може да експортира FLV, аз например минавам през Lossless AVI и след това ffmpeg. Ето откъде го и знам.


PIII е антика и не само той, но огледай се (където искаш, и за колите по пътищата по пътищата и т.н.), старите машини са мнозинството. :)

Comment by Peter on 2008-10-16 10:50:32 +0300

нямам намериение да споря повече. Малко не ти схващам доводите:

1.MSU Screen Capture Lossless Codec съм го пробвал, но за нищо не ти помага, защото не може да се използва във flv, т.е transcode-ваш пак. Все пак е добър междинен формат за пестене на място
2. SWF също не грее – трябва си FLV, за да се stream-ва.
3. Програмата, която посочваш може да е добра, но за толва пари не ми върши работа

Comment by Димитров on 2008-10-16 19:47:45 +0300

Не казвам че MSU Screen Capture Lossless Codec помага с нещо, просто е пример за подвеждащата реклама на Камтазия.

Адобе премахна Lossless кодека след Флаш 7. Точно защото едно нещо в Lossless FLV е винаги няколко пъти по-голямо от същото нещо в Lossless SWF и става безмислица. Wink е идеалната безплатна програма за захват на екрана в SWF.

Стримването пък по идея се прави с постоянен битрейт. А по природа Lossless кодеците имат силно променлив и напълно непредсказуем битрейт. 90% от размера на файла може да е съсредоточен на 10% от продължителността му. И тогава как ще се впише в ширината на канала който му е отреден?

А за програмата – добра е, но при тази цена за съжаление и на мен не ми влиза в работа. Е освен за “лично ползване”, ако така може да се нарече.

Идеята която имах е, че въпросът със захвата на екрана е решен – програмите за отдалечена администрация. Ниско натоварване на системата чрез използване на специален видео драйвер и ниско потребление на мрежа чрез ефективна компресия. BB FlashBack използва тези принципи, нищо повече. И при наличие на програми за отдалечена администрация с отворен код не знам автора на CamStudio из кои облаци лети.

А колкото до ефективното програмиране виж това:
vTute Recorder
Програмката е 53 Килобайта, не се инсталира, захваща екрана и експортирав Lossless FLV. Почти идеална работа, като изключим, че натоварва умерено при захват и слага воден знак. И няколко допълнителни опции не биха били излишни. Т.е. не е толкова сложно човек да реши въпросите си и сам, но както винаги времето никога не стига.

:)

Comment by tom on 2009-01-09 02:04:34 +0300

Thanks for this!

I recently needed to post a screencast (before I found this) and ended up using the H.264 codec.
ffmpeg -i \screen-casts\cast-005.avi -vcodec libx264 -acodec libfaac -vb 700000 -f flv out5.f4v

It makes a file that is considerably smaller than using flashsv (I have video in my screen cast) and while the quality isn’t of a lossless standard, it’s pretty darn good. And with it being a .f4v file, it can still do progressive streaming in flash (unlike a mp4 in flash)

cheers
tom

Comment by Peter on 2009-01-09 14:57:57 +0300

Good one, haven’t used F4V but sounds great.

Thanks

Comment by Sort Of Worked on 2009-05-02 00:23:37 +0300

This site got me on the right track but the ‘flashsv’ option did not work for me (using the latest Subversion build – SVN-r15815). I’m running Windows, so that might be part of the problem. But I had to because the source AVI codec was frequently Camtasia Studio 1.0 and the TSCC codec is Windows-only (I had multiple, ancient videos). Anyway, I got the best results with:

ffmpeg -i src.avi -acodec libmp3lame -ar 11025 -ab 16000 -ac 1 -f flv -s 466×350 -b 150000 dest.flv

Roughly a 4:3 aspect ratio with a target height of 350 pixels. Videos of all standard sizes seem to work well with these settings (e.g. 1024×768). In a couple instances, the audio was really bad, so I gave that a boost:

ffmpeg -i src.avi -acodec libmp3lame -ar 22050 -ab 32000 -ac 1 -f flv -s 466×350 -b 150000 dest.flv

If I needed to crop the video, ffmpeg wouldn’t let me (cropping errors due to not being in YV12 or something like that), so I had to create an intermediate FLV of the same size and use some ridiculous bitrate to keep ‘q’ low (more on ‘q’ in a bit). After that, I was able to create the final FLV with the borders cropped however I wanted.

In one instance, I had a WebEx .wrf file. To convert that video to Flash, I first installed the hard-to-find, ancient WebEx Recording Editor, loaded the .wrf file into the Editor, and did File -> Export to WMV with the default options. That generated a WMV file that was unfortunately incompatible with ffmpeg. So, I then fired up Windows Movie Maker 2, added the WMV file to the timeline, ‘Finish Movie’ -> ‘Save to my computer’, ‘Show more choices…’, ‘Other settings’, ‘DV-AVI (NTSC)’. This process took a ridiculously long time (several hours) and generated an unnecessarily huge >10GB file. This file was compatible with ffmpeg but I had to use the -r 1 option to force the framerate and the file size to something reasonable (about 60MB). -r is supposedly frames per second (fps) but -r 1 ended up with about 6fps…I don’t know how that works…1 == 6? Regardless, the output FLV was about 300fps without the -r option and several hundred MB, so the savings was huge. Total time to figure all this out for this one video was something like 8 hours. The end result is a slightly blurry video and not the greatest audio. Not bad but not great either when compared to the other video conversions. But way better than nothing at all. Camtasia Studio or CamStudio might have helped shortcut the effort (e.g. cut out the WMV middleman and maybe have a better quality AVI), but that requires equipment I don’t have and didn’t really want to fiddle with. Hopefully these notes will help someone else. To summarize the process to convert WRF to FLV/Flash Video: WRF to WMV to AVI to FLV – with lots of hard drive space, time, patience, and trial-and-error. And next time, don’t record screen video using WebEx’s tools. Ugh.

During all this, I learned that the most important piece of output on the screen from ffmpeg is the value of ‘q’ (‘q’ = quality). If ‘q’ is holding steady at 31, then the quality is going to be terrible and the conversion will need to be run again with different options. A ‘q’ of 2.0 is basically a flawless conversion (very little loss, quite readable). The ‘r’ option is useful if you have a huge number of frames in the source video, which will also affect ‘q’ (I thought about trying fractions of frames for the fps, but didn’t try it to see if it would work). The lower the value of ‘q’, the better the video will look.

Comment by Peter on 2009-05-02 11:46:37 +0300

I suggest trying the x264 (mp4) codec, since it is supported from flash 9 and above and provides better quality/size. Also avoid using intermediate files.

Comment by Sort Of Worked on 2009-05-04 19:32:17 +0300

I’m done fiddling with ffmpeg. I know intermediate files are bad due to lossy compression, but I did what needed to be done to get the job done. Plus some people who will view these still have Flash 8. Each video was an hour in length (some much longer than that) and I’ve already put more time into this conversion than I probably should have. If someone else wants to try other things, that’s fine.

I was more interested in making sure that the WRF to FLV conversion solution I came up with got out there for people to find because that was evil and search results were turning up people saying it wasn’t possible to do the conversion for “free”, which, while false, it does take an insane amount of time.

Comment by Gosf on 2009-11-14 23:02:27 +0300

Thank you very much for this tutorial. I was searching the reason why the avi this soft produces is so bad. After changing codec problem was solved.

Comment by Kirill on 2009-11-25 18:00:44 +0300

hi, this is very important article for me.
I have a question. How to obtain a small size desktop? If i have resolution of desktop 1024×768, i’ll have big size of video. But i want small size of desktop on my video.
Please, tell me about.
Thank a lot.

Comment by Peter on 2009-11-26 13:07:06 +0300

@Kirill – well resize your desktop size from your os

Comment by Alfonso Baqueiro Bernal on 2010-11-01 17:19:13 +0300

here is how to do screen capture in linux the easy way:

http://abaqueiro.blogspot.com/2010/11/screen-capture-in-linux-using-ffmpeg.html

happy screening!!!!

Comment by Димитров on 2010-11-08 12:24:09 +0300

Пак съм аз. :)
Да напиша какво открих, като ъпдейт по въпроса.

  1. Вече от доста време има BB FlashBack Express, която е безплатна.

  2. Компресията на Lossless FLV по принцип има 9 или 10 нива. А във ffmpeg опцията flashsv компресира с най-ниското ниво на компресия. Това дава поне 4-5 пъти по-голям файл от най-добрата възможна компресия. Различни пак платени програми могат да компресират с разните възможни нива. Дори намерих един безплатен DirectShow филтър който поддържа всички нива на компресия. Но така и не остана време да го тествам. Там трябваше програма да се пише, не беше обикновен кодек – пусни и инсталирай.

  3. H.264 кодека във флаш може да се настрои да дава практически неотличимо от Lossless качество при в пъти по-малък размер. Даже има и Lossless H.264.

Comment by Phuong on 2011-10-31 05:55:47 +0300

How do you think about ActivePresenter. http://atomisystems.com/activepresenter

Comment by P on 2013-01-15 18:08:56 +0300

The is a very neat article!

But if you need something less complicated try rec, which is mine :)
https://sites.google.com/site/joopeter/

It is also free, lossless but more efficient and accurate!

Comment by Ian on 2015-05-18 15:49:30 +0300

My Screen Recorder is a better screen recording software. It records your screen and audio from the speakers or your voice from the microphone – or both simultaneously. The recordings are clear and look great when played back on your PC or uploaded to YouTube. It will record directly to standard compressed format that works with any video editor or any tool, no conversion required. The lagarith lossless codec works perfectly.
http://www.deskshare.com/screen-recorder.aspx