Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:screencasttutorial [2012/04/16 03:08] – CLzWBtujl 188.143.232.12wiki:screencasttutorial [2013/06/02 15:45] (current) – external edit 127.0.0.1
Line 1: Line 1:
-Nice Nice Record. I really loved your rcoredYoutube can be a fantastic asset for you. If you need any help getting your rcored exposed, check out this site called tubeviews [dot netIt has really done wonders for mehave built 3 Channels up with videos at top in position and this is my forth channel i'm vacant to working on.Be Blessed!!!+====== Screencasting with FFmpeg, jack_capture and Xephyr ====== 
 + 
 +===== Introduction ===== 
 + 
 +Not satisfied with the quality of the screencasts made with [[http://recordmydesktop.sourceforge.net/about.php|recordMyDesktop]] started looking for an alternative that might yield better results, especially the video partThe JACK support of recordMyDesktop is a big plus and quite solid too but recordMyDesktop converts all video to Theora only and this has proved inconvenient when uploaded to a webservice like YouTube. The video quality just degraded too much.\\  
 +So I needed a different toolset. For the video part I chose [[http://www.ffmpeg.org/|FFmpeg]] for its unrivaled flexibility and support for input and output formats. FFmpeg also has JACK support but I found the JACK input client to be too xrun prone so for the audio part I chose [[apps:all:jack_capture|jack_capture]], a lightweight, flexible commandline driven recording tool.\\  
 +To prevent webservices like YouTube having to downscale or upscale your videos, which deteriorates the quality of your videos drastically, you can optionally run the whole screencast session in a nested X server with the help of [[http://www.freedesktop.org/wiki/Software/Xephyr|Xephyr]].  
 + 
 +===== Requirements ===== 
 + 
 +  * A recent version of FFmpeg compiled with support for the h.264 protocol 
 +  * [[apps:all:jack_capture|jack_capture]] 
 +  * Xephyr [optional] 
 +  * A video editor, I use [[http://www.openshotvideo.com/|OpenShot]] or [[http://www.kdenlive.org/|kdenlive]] myself 
 +  * A screen with a minimal horizontal resolution of 1280 pixels 
 + 
 + 
 +===== Screencast script ===== 
 + 
 +I use a simple script like this: 
 + 
 +<code>#!/bin/bash 
 + 
 +DATE=`date +%Y%m%d` 
 +TIME=`date +%Hh%M` 
 + 
 +# Start screencast 
 +xterm -e jack_capture -b 24 $HOME/Screencasts/screencast_audio_$DATE-$TIME.wav & 
 +ffmpeg -an -f x11grab -r 30 -s 1280x720 -i 0:0 -vcodec libx264 -vpre lossless_ultrafast -threads 4 $HOME/Screencasts/screencast_video_$DATE-$TIME.mkv 
 + 
 +killall jack_capture</code> 
 + 
 +You might need to adjust the number of threads for the ffmpeg -threads parameter to match the number of cores of your CPU. If unsure, set it to 0, ffmpeg should then set the numbers of threads automatically.  
 + 
 +jack_capture by default captures all the audio that is connected to system:ouput. If you want to be able to manually make connections to jack_capture with jack_connect, qjackctl or whatever, you have to pass it the -mc option (you need at least version 0.9.58 for this) 
 + 
 +===== Optional Xephyr script  ===== 
 + 
 +Set up Xephyr nested X server with a resolution of 1280x720 as this resolution yields the best result when uploading the final video to a webservice like YouTube. I use a little script for this: 
 + 
 +<code>#!/bin/bash 
 + 
 +# Set up nested X server 
 +Xephyr -keybd ephyr,,,xkbmodel=evdev -br -reset -host-cursor -screen 1280x720x24 -dpi 96 :2 & 
 +sleep 3 
 +export DISPLAY=:2.0 
 +/etc/X11/Xsession &</code> 
 + 
 +As you can see I set up a session by calling /etc/X11/Xsession. In Ubuntu >= 9.10 this starts up a new fresh Gnome session and because I use IceWM for my main session in which I run Xephyr this works very well. If you're using Gnome as your DE using /etc/X11/Xsession won't work properly so in that case you will have to resort to a different start-up option. This also holds for distributions that don't use /etc/X11/Xsession. 
 + 
 +TODO:other distros  
 + 
 +After you ran this Xephyr script, you should run the above screencast script, taking care of making the following changes to it:  
 + 
 +  * add the line "export DISPLAY=:2.0" after the TIME line. 
 +  * change -i 0:0 ffmpeg option to -i :2.  
 +  * add the -display 0:0 option to the xterm line (so it won't appear in your screencast). 
 + 
 +Within the Xephyr session I also use a [[http://gnome-look.org/content/show.php/Basic?content=126559|plain cursor theme without drop shadow]] because ffmpeg doesn't capture the drop shadow properly. As of [[http://git.ffmpeg.org/?p=ffmpeg;a=commit;h=191a50db964768ca4418bdf00b26159a77879b9c|FFmpeg revision 25690]] this has been fixed. 
 + 
 +===== Editingrendering and uploading to a webservice ===== 
 + 
 +Now you have two separate files, an .mkv and a .wav file and because jack_capture was started right after ffmpeg audio should be no more out of sync then just a few millisecs. You can now edit the audio and video parts to your liking: 
 + 
 +  * Edit the .wav file in Audacity or Rezound if necessary. I use some extra gain and compression if necessary. 
 +  * Import the two files in OpenShot and crop start and end to your liking. 
 +  * With VLC I made some stills from the video file and with Gimp I edited these to create the titling. 
 +  * Create transitions, fade-ins and fade-outs to your liking with OpenShot. 
 + 
 +For rendering/exporting I use the following settings in OpenShot: 
 +  * Video: 1280x720, 30 fps (this should match the settings of ffmpeg), mp4 videoformat, 40 Mb/s (Blu-ray quality), libx264 videocodec. 
 +  * Audio: mp3 (libmp3lame), 256 Kb/s and 44.1 Khz sample rate. 
 + 
 +Now you can upload the resulting mp4 file to a webserviceThe settings I've used will yield optimal results for YouTube. 
 + 
 +===== Examples ===== 
 + 
 +[[http://www.youtube.com/watch?v=tusCeI1aQ4c|Tiny Tutorial: Vocoding in Qtractor]] 
 + 
 +[[http://www.youtube.com/watch?v=azj7OAzP_GI|The Infinite Repeat - Unaware of a Direction]] 
 + 
 +[[http://www.youtube.com/watch?v=peMR6Agc7Es|The Infinite Repeat - Money or Love (DJ AutoStatic Remix)]]
wiki/screencasttutorial.1334538513.txt.gz · Last modified: 2012/04/16 03:08 by 188.143.232.12