Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
wiki:screencasttutorial [2011/12/15 14:38] 151.29.137.72wiki:screencasttutorial [2012/04/16 03:08] – CLzWBtujl 188.143.232.12
Line 1: Line 1:
-====== Screencasting with FFmpeg, jack_capture and Xephyr ====== +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!!!
- +
-===== 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.txt · Last modified: 2013/06/02 15:45 by 127.0.0.1