Showing posts with label theora. Show all posts
Showing posts with label theora. Show all posts

Sunday, 7 September 2008

Making High Quality Screencasts

Ok, I think I have finally figured a good way how to make high quality screencasts. So I'll write here about it here, both so that I have a place to look to when I forgot and for my readers ;-)

Needed Software (Package Names)


gtk-recordmydesktop
oggvideotools
mkvtoolnix-gui
subtitleeditor (or any other subtitle editor)

All the software is available in Fedora.

Recording the screencast



First, it's good to prepare what you are going to show so that you can record the screencast in one go. When you have decided what are you gonna show and how, open Applications -> Sound & Video -> gtk-recordMyDesktop. In the opened window you see a preview of your desktop in which you can select the area of the desktop you are going to record. If you are going to record just one application it might be useful to let it select the are for you by selecting a window you are going to record.

Set Video Quality to 100 (you want to record the screencast in highest possible quality, don't you) and if you don't want to record sound (which I do not) uncheck the check box to the left of Sound Quality. By clicking Save As you can select which the filename (and directory) to which the screencast will be saved.

Now, when you set everything, hide the window either by clicking ctrl+H or right-clicking on "record" icon in your notify are and selecting hide. Then you can start recording by left-clicking the record icon in your notify are. The icon will change to "stop". When recording, when you right-click on it the recording will pause (and the icon will change to "pause"), when you right-click on it once more it will resume. When you'll left-click on it the recording will stop and encoding (unless you encode on the fly, which can be set in settings) will start.

Once the encoding is finished you can close the gtk-recordMyDesktop and extract usefull data from it (since the .ogv file generated by it contains some skeleton track it renders it almost impossible to work with). We'll do that using oggSplit. Just open terminal, navigate to the directory you have the .ogv file in and run oggSplit <filename>.ogv. It will extract the video (and audio) track(s) into usable files. The file with video track will be named theora_*.ogg. Rename it to your liking.

Creating Subtitle Commentary



Now it's time to create subtitle commentary. You can do it with your favourite subtitle editor, the one I chose is subtitleeditor. I'll not delve into how can you create subtitles because it's pretty straightforward. Just bear in mind that you need the subtitles kept on the screen long enough so that the readers will be able to read them and they should better explain what is happening in the screencast.

Creating the subtitle commentary is good practice mostly because:

  • Deaf people can read it

  • It's easier to translate than spoken word

  • Text does not have "strange whatever accent"



Combining Things Together



Now the most important thing is to put things together in one file. Open Applications -> Sound & Video -> mkvmerge GUI. You'll probably need only the Input tabs but if you are creating some more sophisticated/long screencast the other tabs might come handy too. First add all source files (the ogg file with video, the file(s) with subtitle(s), file with audio, ...) - just click on Add and add anything you want.

In General Track Options you can set for each track various settings. For audio and subtitle tracks it is good practice to select a language it is in. It is also not a bad idea to add Track name to each track.

Finaly set output filename (ending with .mkv) and hit Start muxing and you are done.

Adding Translation



The very same way you put the things together in the previous step, you can also add other tracks to already finished Matroska file. But, in case you'd like to add new subtitle translation you'll probably need one of the subtitle file in the screencast first so that you won't have to do it all from the start.

First open Applications -> Sound & Video -> mkvinfo. In it open the screencast Matroska file you'd like to translate and look for tracks. If the Matroska file has subtitle track, then sooner or later you'll find a track which will have Track type: subtitles at ... See whats Track number of that track. Suppose it's 2. Now open terminal and run mkvextract tracks <filename>.mkv 2:<subtitle-filename>. It might look like this:

$ mkvextract tracks echo-add-new-icon.mkv 2:echo-add-new-icon.ass
Extracting track 2 with the CodecID 'S_TEXT/ASS' to the file 'echo-add-new-icon.ass'. Container format: SSA/ASS text subtitles
progress: 100%


Now translate the subtitles using your favourite subtitle editor save them into some file and add it to the original screencast using mkvmerge GUI tool.

Some Screencasts Created This Way



Originally I researched how to do high quality screencasts because I needed to create screencasts accompanying various Echo tutorials.

Here are some:
echo-set-up.mkv
echo-update.mkv
echo-add-new-icon.mkv

Links


recordMyDesktop Homepage
oggvideotools Homepage
mkvtoolnix Homepage
Matroska Homepage
Theora Homepage
New high-quality totaly open (as in freedom) video compression format Dirac and its Schrodinger implementation (available in Fedora repositories)
Wikipedia article about Matroska container, OGG container, Theora video, Free Lossless Audio Codec (FLAC), Vorbis audio, Dirac/Schrodinger video.

Thursday, 28 August 2008

Echo August 2008 News

New Icons

We've created/fixed some new icons, concretely:

  • preferences-system-date

  • preferences-system-firewall

  • preferences-system-users

  • printer

All of them are used in they System -> Administration menu and part of our work towards filling this menu with Echo icons (since most of applications in there don't have even new-gnome-styled icons).

"Huge" icons - 256x256

With the introduction of One Canvas Workflow (will be explained bellow) I decided I could try doing more detailed and realistic looking version of the printer icon:

Nicu was seemingly pleasured with the new introduced HW brand - Echo and noted that if such device indeed existed it would definitely worked with Fedora out of box.

I'd like to hear others opinion of using such style for these icons. The basic differences from other styles are semitransparent borders (usually with opacity set to 0.3) and more detail. Other than that it remains same as other sizes. If we agree on this style, I'll add it to Guidelines, together with source for the echo brand ;-)

One Canvas Work-flow

Together with creating the printer icon, I explored jimmac's idea of one canvas workflow. In my short experience it is superior work-flow to our current one and also makes automating many steps of icon creation easier. Most importantly it helps artist to focus more on the process of designing/drawing the icon rather than various "secretary" jobs around...

Together with the desire to automate as much of the secondary work as possible I needed to bring the work-flow to yet another level - so you need to add label to the 48x48 icon (which therefore needs to be
grouped) and set it to scalable. It is so that the script can recognize that it's the very icon intended to be installed into the scalable folders (and delete the rest).

Initial screen-cast showing this and subsequent commit of the icon to git is available at my fedorapeople page.

I'd like to make this work-flow the preferred one for echo-icon-theme creation so if no one steps in, I'll add it to Guidelines.

Current version of template which can be used as base in Inkscape to create icons using this work-flow is attached to a mail I sent to fedora-art-list.

Automating The Secondary Jobs

One Canvas work-flow makes one thing much easier - ability to create script which takes the source icon and add it to git repository. I called this script echo-add-icon and it's already available in echo git repository. It takes the source SVG, generates PNGs for all included sizes and SVG for the scalable "size" and put all, including source into their rightful places in the git repository. The original source is put into /sources/base/one-canvas/ to make it distinct from the legacy sources (i.e. one source SVG per one size). It currently pushes only to base folders, but can be easily extended to ask if we want to push to base or to extras.

It does not make branch specific changes (i.e. adding symlinks / adding to build system) but I hope to implement it as well in some future version of the script. It also does not push the changes back to fh.o only prints a message to the user that he should do so.

Another script is meant to simplify the git set up process. I called it echo-set-up and is also uploaded to git. It does all the steps needed for starting work with the repository.

Yet another script is make for updates (useful e.g. when we introduce new branch to echo git repo). It updates all branches, if some of the branches is missing, it correctly creates it. I called it echo-update and it's also available in echo git.

I also plan to add one another simple script, probably called echo-new-icon that would take latest version of the one-canvas template and create new icon (with given name) from it. Similar to what rpmdev-newspec do for spec files ;-)

I plan to package these scripts for fedora under the name echo-artist, therefore I added some necessary things like license (LGPLv2.1+) or credits (since the first script is based off jimmac's).

Echo for F10?

It has been briefly discussed on the fedora art list whether to include Echo in F10 as our default icon theme and whether submit it as a Feature. Many people seemed to agree that it would not hurt pinging fesco about it, but that the main decision would probably be done by Art and Desktop teams.

Further Plans

Apart from creating new icons and plans mentioned above, I also hope to update/extend various echo related how-to's to reflect the new methods of echo icon creation/addition.

Apart from that I'd like to make some "promo" page that would be intended for potential contributors and contained all info they need to know to get started and other similar info.

Request for Feedback

As usual, I am more than open for all kinds of feedback, especially about the huge size guidelines, the new scripts and one canvas work-flow. If you have ideas how to further improve some of the above mentioned things, or just comments to what I said, would like to start contributing to Echo, ... feel free to reply either here, in comments, drop a mail in fedora-art-list, or, if you wish, drop a private e-mail to me (you can use e.g. the fedora address: mso AT fedora project DOT org [note: the address is "obfuscated" as a spam prevention and there are not any spaces in the original]) :)

Saturday, 2 August 2008

oggvideotools - Thanks for That Package!

In my previous post I outlined some ways that could lead to good screen-cast. One of the biggest issues I have had have been that the gtk-recordMyDesktop output contained skeleton track which rendered that file nearly uneditable. I tried various magic with mencoder to be finally able to extract the theora video into something other, something that can be processed by mkvmerge. It could not be however played by totem. And the same was with the result mkv.

But not anymore. Recently, when checking mail, I noticed in fedora-extras-commits list interesting package - oggvideotools. And now, at the end of my wits, I remembered it, looked into the archives to find that it's actually a new package and have been built on Tuesday. So I downloaded the package from koji (I didn't checked whether it's already in repos), installed it and looked on the content. One of the binaries caught my attention: oggSplit. I wondered how it's used, but as traditional -help or --help or man didn't worked and the program homepage showed only what it does but not how it does, I tried feeding it one of the ogv files.

The result is rather pleasing. It generated two ogg files, one named theora-[some-probably-hex-number].ogg and named unknown-[another-number].ogg. And voila, the theora-*.ogg one works, mkvmerge with it works, ... COOOOL. The unknown-*.ogg probably contains the skeleton track and I'll delete it right away. It's also probably result of this oggSplit output:
unknown type ID 325334135

So, I can safely say that I can do a high-quality screen-cast in matroska file with theora video, now :-)

Friday, 1 August 2008

Making Good Screen-casts - How To?

I am gradually making some screen-casts for echo tutorials and I wonder what is the best way to make them. There is a lot of options and one needs to choose... What I've done so far is available on my Fedora People page.

First thing to choose is the application that will do the actual screencast. From rough investigation I discovered these three that are available in fedora/livna:
  • instanbul - easy to use, however almost non-existant configuration, output compressed terribly much, which makes the video small but ugly
  • xvidcap - configuration options are pretty good, you can customize the output as much as you want, however tend to freeze during captioning, also does not support encoding to theora
  • gtk-recordMyDesktop - seems to support output only to ogv/theora/vorbis, not very well handled area selection, adds skeleton track to the output, usage not very intuitive
So after some thinking I dismissed instanbul, as the output does not have the desired quality (and I cannot do anything about that) and xvidcap due to frequent freezes (before that I managed to record one 3 min long screencast though). That leaves gtk-recordMyDesktop.

Next, we need to decide about the content - will we add commentary? If yes, will it be spoken or via subtitles? Subtitles are very good for translating, you just use the original one and use e.g. subtitleeditor (in fedora repos) to make a translation without changing the subtitles timing/styling. Also it's good for deaf people. On the other hand, you need to show the subtitles somewhere, which might render the part of screen on which they are shown unreadable. You can minimize the costs by using styled subs (e.g. ASS/SSA) to position the subtitles, but you'll then need special programs that can handle the styling (e.g. mplayer with -ass option).

Audio has the drawback that it can be hard to understand, for the person doing the screencast harder to create (not all of us are good English speakers), also it's harder to make a translation. So I guess subtitles are overally a better choice.

Now what format choose for video? If I had a choice, I'd go with MPEG-4/AVC (H264) which is excelent format with probably the best quality to compression ratio (and is pretty much used for most of HDTV content). It has however a drawback of being patent encumbered which renders it not an option for videos targeted on all Fedora users (even though you can play it in Fedora if you install additional codec packages from livna, but that's not an official Fedora repository). Software patents also put out of the game most of the other codecs, which leaves Theora. It has pretty good quality to compression ratio and is already the output of the gtk-recordMyDesktop, so if you are content with the compression, you don't need to recompress/re-encode the video.

Lastly we need to choose a container format. In opensource world the best choices are probably OGG/OGM/MKV (listed in no order). I don't know if OGG can handle subtitle tracks and OGM seems to be rather hack of OGG to better support videos. It's not much widely used either. On the contrary Matroska Video (mkv) is designed to be portable, fast, open, ... It can contain almost anything which renders it almost ideal container for shipping videos (it can contain multiple video, audio, subtitle tracks, fonts, various other files..., and yet it's generally very fast). It also comes with handy tools that makes adding new subtitle or audio track to existing video a piece of cake [mkvmerge(-gui)].

So what's my choice? It's obvious from the previous text:
  • gtk-recordMyDesktop
  • Theora
  • ASS/SSA subtitles
  • Matroska Video (mkv)
  • (optionally Vorbis audio)
What do you think? Do I have even better choices?