Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I am looking for either a desktop recorder/screencast application that can output in WebM format, or a program that can convert the .ogv format generated by gtk-recordmydesktop into WebM.

I have selected WebM as the format I need because it seems to be the only free codec supported by YouTube, where my recordings will end up. I've tried uploading an .ogv in the past and got solid green video, so that won't work for me.

I live in the USA and I am conscious about trying to stay away from anything that might have software patent issues, like gstreamer0.10-plugins-ugly or gstreamer0.10-plugins-bad. It was for this reason I was originally interested in Tibesti (for example), but that needed the installation of packages like the aforementioned.

I've done some searching online for a free (as in both money and freedom) solution, but so far couldn't find anything. Any suggestions?

share|improve this question
    
can you tell your location ? –  Alaukik Jun 2 '11 at 7:39
    
@Alaukik, I have stated above I live in the USA. If you need to know which state, I live in Michigan. I would not like to get more specific than that. –  Christopher Kyle Horton Jun 3 '11 at 20:03
    
@Warriorlng64 oops! –  Alaukik Jun 4 '11 at 4:45

7 Answers 7

up vote 6 down vote accepted

12.04 LTS

It appears that ffmpeg no longer works properly in this release for converting recordmydesktop's .ogv recordings to WebM. As it is no longer maintained, it's recommended to use its replacement avconv instead, provided in the libav-tools package (which seems to be automatically installed if ffmpeg was installed).

The command needed to use avconv for conversions is not too much different than from ffmpeg:

avconv -i input.ogv output.webm

Thus, if anybody's facing the same issue of trying to use only free packages to convert from .ogv to .webm in 12.04 (or presumably later), this is how I resolved it. This should be helpful if you're making recordings to show new features or document issues using video.

share|improve this answer
    
Recently I started working on Kazam, now it can record in VP8/WebM and H264/Matroska formats. I made PPA builds for Oneiric and Precise. It uses gstreamer for recording and doesn't require ffmpeg. It should work on a cleanly installed Ubuntu with no extra codecs. –  BigWhale Jan 22 '12 at 7:06
    
@BigWhale Browsing the code a little, I noticed it seems to still depend on gstreamer0.10-plugins-bad and gstreamer0.10-plugins-ugly. These packages contain the codecs I am trying to avoid due to patent issues, as stated above. If an updated/alternate build becomes available that does not depend on these packages, let me know in a new answer. Thanks, anyway! –  Christopher Kyle Horton Jan 22 '12 at 7:47
    
I get Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height –  jrg Mar 11 '12 at 20:42
    
@jrg I got a similar problem on my laptop when converting video I recorded using a workaround posted on this recordmydesktop bug report. Curiously enough, when I took the same video over to my desktop machine and converted it there, it worked without a problem. So...it might be a bug, but I don't think I know enough about it to file a report yet. –  Christopher Kyle Horton Mar 11 '12 at 21:45
1  
As a side note: FFMpeg is still maintained (in fact version 1.0 recently came out), but there has been a mini-war between some developers, which led to the fork avconv. It's just that the debian / ubuntu maintainers sided with avconv. The message "THIS PROGRAM IS DEPRECATED" is totally misleading. Read about the current situation here:http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html. –  phoibos Sep 30 '12 at 0:50

I'm using things like that:

avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm

Where:

-f x11grab - enforces screen capture "format" of input.

-s 1024x768 is the resolution of input file (aka capture area). For example equals to desktop resolution. If smaller than that, recording area would be at left and top. I used 1024x768 recording area in this example.

-r 24 - framerate. Basically, 23 to 30 FPS used by real movies to give a smooth recording picture. However for screencast it could be okay to reduce this to get better picture at lower bitrates. I used 24 to do game screen capture.

-i 0:0 is a hint to use display 0:0 as source (device is in xorg notation). If you have only 1 monitor and default Xorg setup, 0:0 will be ok most of times.

-deadline realtime - is a hint to libvpx. We want live capture. We want realtime performance. So libvpx will do it best to encode VP8 in REALTIME. To do so it somewhat trades quality for speed. At given bitrate quality will be a bit worse than it would be in non-realtime way. But encoding speed would skyrocket. So on my hardware it can crunch 1024x768@24FPS, intense scenes, without dropping any frames (powerful CPU recommended though). In this example I wanted a decent-quality live capture at good FPS and quite large capture area. So CPU usage by codec could be an issue. That's why this hint really needed for good results.

-b 5000000 - target bitrate in bits/second. I used 5Mbits to get more-or-less good picture of quite intense scenes. Codec will try to keep average bitrate speed of video close to this value. The lower this value, the worse the quality and smaller the file. You can experiment a bit to get idea what bitrate is good for particular uses. Video sharing services would downconvert video if you overshoot. If you about to use own server, it's up to you to take care of traffic. If you undershoot, picture quality will be bad. Feel free to change value to get idea what's best for you. 5Mbits were intended for more or less eye-pleasant live capture of intense scenes at games where you can't easily see that picture is overcompressed. For capturing still applications you will basically need far less than that.

-minrate 200000 - is a minimum allowed bitrate for codec. Depending on a nature of thing you want to capture, sometimes you may want to force minimum bitrate to keep a reasonably looking pictire at no matter what. Sometimes codec heuristic could reduce bitrate far below values you may want, giving bad picture at some scenes. This option allows to force codec to keep minimum bitrate even if codec thinks that scene is simple and bitrate could be dropped. High value of this parameter may increase file size by preventing codec from using lower bitrates.

-maxrate 40000000 - This value controls maximum burst bitrate at intense scenes. I used really high value to allow codec to go far higher than desired average if it considers higher speed is mandatory to keep decent quality at some scene. To get a good-looking picture in all conditions it's desirable to set this high enough (40Mbits is BlueRay-like speed and will do the trick). On other hand, if you're about to stream it using your own server, you have to reduce this value at cost of some picture quality at intense scenes. Else server could fail to cope with desired burst bitrate, being unable to deliver it in realtime way to users. Then player would face buffer underrun (which is annoying). Video-sharing services will take care on their own and usually downconvert video to lower parameters at the cost of picture quality.

recording-filename-000.webm - is a file name of output. If you use .webm extension, ffmpeg/avconv are smart enough to understand you want WEBM. It is THAT simple - avconv guesses desired format from filename. So .WEBM files are WEBM inside.

That is it - this command does direct screen recording to webm file. No extra conversions needed and libvpx is hinted to be as fast as it can. There is no sound since there is no specification for sound input. It may or may not be what you want. For sound, you have to specify input source for sound stream as well.

P.S. this may look a little overcomplicated but at the end of day you can figure out that one size can't fit all. So to get a good-looking picture in all situations you may really want to have some handles for codec used and want to adjust them. Ffmpeg gives you all the handles you may ever need and far more than that. It's a heavy weaponry of video conversion and encoding. So this example is a good point to start for those who want to do more or less advanced encodings and is ready to experiment a bit to get a really decent-looking results.

share|improve this answer

Use transmageddon App to do that. its Gstreamer based app

sudo apt-get install transmageddon or click here install transmageddon

share|improve this answer
    
I took a look at the dependencies for transmageddon through sudo apt-get install, and the gstreamer-plugins-ugly package I mentioned above was included in the list. Again, I'm not sure if this is entirely legal for me to use, and that matters to me. –  Christopher Kyle Horton May 27 '11 at 6:21

You can make WebM recordings in Ubuntu 11.10 + GNOME Shell by pressing the Ctrl+Shift+Alt+R key combination.

The first time you press the combo, a red circle appears on the right bottom, indicating that recording started. The 2nd time you press it, the red circle dissapears and you will have your recording into your home directory.

More info here: http://linuxhelp.blogspot.com/2011/04/how-to-create-screencast-in-gnome-3.html

share|improve this answer
    
At the time I originally asked this, I didn't have GNOME Shell. But I used to compile it from jhbuild on 10.10 and I have it installed on my 11.10 systems, and I know this also works. Thanks for adding this answer! –  Christopher Kyle Horton Oct 23 '11 at 12:14

Use Kazam to record.

Output is mkv, and works well with Youtube. Only problem Kazam doesn't seem to have been updated for a while.

BTW You should be safe using Tibesti if I understand correctly, unless of course you are absolutely paranoid that some giant alien spaceship will abduct you and have you tortured for using a piece of software...

share|improve this answer
    
Kazam asks for the installation of ffmpeg during sudo apt-get install, which I am not sure of whether I could legally use it. –  Christopher Kyle Horton May 27 '11 at 6:40
    
@Warrioring64, I don't think ffmpeg is illegal... –  RolandiXor May 27 '11 at 17:55
    
It's something I have to worry about, since I am in the USA and software patents are enforced here. Please see this part on Wikipedia if it might help you understand what I'm getting at here. –  Christopher Kyle Horton May 27 '11 at 20:02
2  
@Warrioring64 - the version included in Ubuntu is stripped of those codecs. –  RolandiXor May 27 '11 at 20:44
    
Okay...but looking further through the dependencies given, I also found libavcodec-extra-52 and libavutil-extra-52, which from a little bit more of researching I've found could pose problems to me. Sorry if I seem a bit difficult, but even if I might not realistically get caught for using such software, I still wouldn't want it to be on my conscience. –  Christopher Kyle Horton May 29 '11 at 5:30

11.10 and previous

ffmpeg can be used to convert .ogv into .webm directly without the need for additional codecs. As mentioned in a comment on another answer, the version of ffmpeg supplied by Ubuntu does not come by default with codecs that could pose software patent issues.

This is a command line program; to use it, just open a terminal window and enter:

ffmpeg -i input.ogv output.webm
share|improve this answer
    
Yes. I just installed ffmpeg without the medibuntu repo and it pulled all free versions of packages and I encoded a wmv to webm easily with ffmpeg -i file.wmv -f webm -sameq file.webm –  duffydack Oct 23 '11 at 13:39

imo, The best way to convert videos to WebM is Firefogg.

  • This is a firefox plugin (so it's multi-platform tool as is firefox)
  • It will compress to WebM format (open Source - Web compatible codec)
  • It offers multiple encoding sizes (really convenient to come up with best compression ratio)
  • REALLY efficient compression ratio (at least as much as H264)
  • It's super easy to use

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.