De Wikijoan
(Diferència entre revisions)
Dreceres ràpides: navegació, cerca
(Tips per gravar videos de l'escriptori. Utilitzar Xephyr)
Línia 1.282: Línia 1.282:
Fixem-nos que el audio del video era de 48000, i jo amb arecord he fet 44100. Ara ja puc fer totes les gravacions de arecord i recordmydesktop a 44100, donat que aquest és el format que demana YouTube.
Fixem-nos que el audio del video era de 48000, i jo amb arecord he fet 44100. Ara ja puc fer totes les gravacions de arecord i recordmydesktop a 44100, donat que aquest és el format que demana YouTube.
=Tips per gravar videos de l'escriptori. Utilitzar Xephyr=
El recordmydesktop és compatible amb JACK (però ha d'estar compilat per a JACK, veure més avall!!), de manera que es pot gravar la sortida, per exemple, del fluidsynth. Una manera de veure-ho funcionant és al video http://www.youtube.com/watch?v=kBEzMC35gt8&feature=channel (de Jeremy-Autostatic)
De totes maneres, el Jeremy creu (setembre 2010) que és millor utilitzar ffmpeg en comptes de recordmydesktop per a fer videos del Youtube:
This tutorial explains how to use the Sirlab Vocoder LADSPA plugin in Qtractor.
MIDI USB keyboard: M-Audio Oxygen 8 v2
Softsynth: Yoshimi 0.058.1 (ZynAddSubFX fork) with the Pulse Pad 3 instrument patch
DAW: Qtractor
Vocoder: Vocoder LADSPA plugin from sirlab.de
Screencast: Xephyr (nested X-server), FFmpeg 0.6svn (video) and jack_capture 0.9.56 (audio)
Video editor: OpenShot 1.1.3
Distro: Ubuntu 9.10 Karmic Koala
The video quality is improved as promised, it seems that FFmpeg is the way to go when screencasting.
It's about using the Sirlab Vocoder LADSPA plugin in Qtractor. I ditched
recordMyDesktop in favor of ffmpeg with jack_capture within a nested
Xephyr session with a 1280x720 resolution (apparently YouTube likes this
best). The quality improved drastically
El Jeremy ho ha documentat:
Hello Frank,
I've created a Wiki page on the toolchain I use:
Leigh Dyer ha fet un videotutorial sobre el seq24 seguint les recomanacions del Jeremy.
> Hi Leigh,
> > I've just posted a video tutorial for seq24 -- it discusses what seq24
> > is, and what it isn't, and then proceeds to demonstrate the basics of
> > building and playing patterns. If you've tried it in the past and been
> > confused by its somewhat unique interface, hopefully this will get you
> > past that initial confusion. The direct Youtube link is here:
> >
> > http://www.youtube.com/watch?v=J2WDHS1wYeM
> Wow, that is finally one really nice tutorial video - very well done!
> I like the quality of video and sound, the speed, the "entertaining bits" -
> everything really!
Thanks! I've answered your questions below:
> May I ask a few short questions about creation of this tutorial (I tried
> to write them so that a simple yes/no suffices in most cases ;-):
> - What toolchain did you use? Was it the Xephyr/jack_capture/ffmpeg
>  package that others (AutoStatic?) had mentioned here or in other places?
Yep, I used AutoStatic's Xephyr and ffmpeg setup for capturing the
video. For the audio, I recorded straight in to Ardour -- that let me
record the synths I used in to separate tracks so I could adjust the
voice and music levels after recording.
> - What frame rate did you choose for video - 15fps?
I had ffmpeg set to 30 FPS -- I can't say for sure that it captured at
that rate all the way through, but I was definitely happy with the
> - I assume you first write out to disk mostly uncompressed video at the
>  highest possible quality and then do a re-encoding to your selected target
>  video format offline afterwards?
I used ffmpeg's default MPEG-4 compression, but with a very high maximum
bitrate -- that gave me high quality, a manageable (large, but not too
large) file size, and relatively low CPU usage. Here's the command I
ffmpeg -an -f x11grab -s 1280x720 -r 30 -i :2.0 -vb 10000000 tute1.avi
> - Did you experience any audio/video out-of-sync problems which you had to
>  compensate for by e.g. time-stretching the video?
Nope, the audio I exported from Ardour lined up perfectly with the video
from ffmpeg. To make it easier to line them up in Kdenlive during the
edit, I started the video by hitting the "send test note" button in
XSynth; I was then able to line up the button press in the video track
with the sound of the note being played by XSynth in the audio track.
> - Since your voice comes over pretty clear, I assume you did not do live
>  voice recording, but rather overdubbed it afterwards by "watching and
>  commenting" your own video?
For the intro, I recorded the voice independently, and then lined up the
images and slides, and the little "apt-cache search" video, with that --
I made use of Kdenlive's video speed features here to speed through the
footage of the seq24 package installing.
For the rest of the video (the actual screencast), I did just record the
audio and video together in one take -- I had my mic set up so I could
talk in to it comfortably while working. If you listen closely, I'm sure
there are a few mouse or key click sounds in there as evidence of
that :)
If the screencast sounds rehearsed, that's because it kinda was -- I
actually recorded a very similar tutorial screencast a week earlier.
Once I decided to add the intro, though, I scrapped that video and
re-recorded it.
Dies més tard es continua discutint sobre el tema. Mirar el fil:
==Discussió a hispasonic sobre recordmydesktop (solució!!)==
Molt interessant les aportacions sobre aquest tema tan important:
===recordmydesktop --use-jack funcionant===
Com es comenta, recordmydesktop per defecte no està compilat per tal que funcioni amb jack. Per tal d'arreglar-ho:
sudo add-apt-repository ppa:autostatic/ppa
sudo apt-get update
sudo apt-get install recordmydesktop
I ara sí que funciona:
$ recordmydesktop --fps 15 --use-jack system:capture_1 system:capture_2
$ recordmydesktop -x 300 -y 300 --width 480 --height 272 --fps 15 --use-jack system:capture_1 system:capture_2
Evidentment recordmydesktop té diferents opcions.
===script jack_capture (veu) + ffmpeg (video)===
script '''screencast.sh'''
DATE=`date +%Y%m%d`
TIME=`date +%Hh%M`
# Start screencast
//$ echo $DISPLAY -> per saber quin és el teu valor de DISPLAY. És el valor que es fica en el paràmetre -i
xterm -geometry 80x10+0+1000 -e jack_capture -c 2 -p system:capture* -b 24 $HOME/screencast_audio_$DATE-$TIME.wav &
ffmpeg -an -f x11grab -r 30 -s 1280x720 -i :1.0 -vcodec libx264 -vpre lossless_ultrafast -threads 4 $HOME/screencast_video_$DATE-$TIME.mkv
*és necessari gravar amb format mkv. Amb ogv no em funciona, suposo que per la llibreria libx264
*tal com es proposa en el post (''-e jack_capture -b 24'') no acaba de funcionar jack_capture, no puc connectar manualment system:capature amb el jack_capture. Però si ho fico en línia de comandes sí que funciona.

Revisió de 00:32, 7 oct 2011



Vull documentar com a partir de la videocàmera que disposo, puc editar de forma pràctica video, utilitzant aplicatius lliures i preferentment en mode consola. Un dels objectius és publicar videos a YouTube. Entre d'altres característiques aquests vídeos inclouran:

Acidrip: Exportar el contingut d'un DVD a AVI

La meva videocàmera és de DVD-RW, i em tanca els DVD per tal que jo ja els pugui ficar en un aparell de DVD. Partint d'aquest DVD, vull extreure'n un AVI. Utilitzaré acidrip.

AcidRip presents a clean Gnome graphical interface for converting a DVD directly to an avi file (without temporary copies of the DVD). Generally, creating a 1GB file for every hour of video produces a good quality backup. If we specify more than a single file then Acidrip will split at chapter breaks (we can, later on, use avisplit to split a video into smaller chunks, and avimerge to combine video clips--see Section 100.5). The Queue tab of acidrip displays the mencode command line that is generated and run. Extensive use of tooltips provides excellent interactive advice on using the tool.


  1. Startup acidrip and it will read the DVD and select the longest title--be patient and pay attention to the status bar at the bottom since it may take a few seconds while it determines information about the DVD;
  2. Change the Track title if you like (this is used as the filename stem - the %T);
  3. Choose the File size and # Files. Perhaps 1000 for each hour of video to get a reasonable Bits/Px (about 0.2) on the Video tab;
  4. Set Info to name the movie;
  5. Select a Subtitle if desired;
  6. On the Video tab, click the Detect button for cropping to the correct size;
  7. On the Video tab, check that the Scale option is off so that you get the original size;
  8. On the Preview tab you can choose to watch a bit of a preview of the resulting movie;
  9. When you are ready, click the Start button and over the next few hours the work will be done. Note that the main window collapses to a progress window while the work is being done.

There is a bit of a strange interaction between setting the number of files and the file size, and the Bits/Px value. Bits/Px changes if you change the 700 to 1400 with 1 file. But change 1 file to 2 files at 700 and the Bits/Px do not seem to change? Should be the same as 1400 by 1 file, and it is if you change the 1400 back to 700 and 2 files!

$ sudo apt-get insall acidrip
$ sudo apt-get install transcode (instal.la avisplit i avimerge)

$ acidrip

i converteixo el meu DVD en un fitxer AVI, que és el que m'interessa com a pas previ per tal de poder editar el vídeo (recordem que parteixo d'un DVD perquè la meva videocàmera Sony em finalitza directament els DVD i no té firewire per connectar-ho directament a l'ordinador).

En la pestanya Video, desmarcar Scale, Lock aspect i Crop

$ recordmydesktop --no-sound -delay 6 -fps 25 --overwrite -o p6.ogv $ ffmpeg -i p6.ogv -cropright 212 -s 640x480 -aspect 4:3 -r 25 -sameq p6.avi -ss 00:00:00.000 -t 00:01:55.000

avisplit: tallar trossos d'un AVI


       avisplit - split AVI-files into chunks of a maximum size

       -i file
              Specify the filename of the file to split into chunks.
       -o base
              Specify the base of the output filename(s) avisplit will then split to base-%04d.avi
       -t s1-s2[,s3-s4,..]
              Split the input file based on time/framecode (hh:mm:ss.ms)
       -c     Together with -t. Merge all segments into one AVI-File again instead generating seperate files.

       -m     Together with -t. Force split at upper bondary instead of lower border.
       avisplit -i my_file.avi -c -o out.avi -t 00:avimerge - merge several AVI-files into one10:00-00:11:00,00:13:00-00:14:00

       will grab Minutes 10 to 11 and 13 to 14 from my_file.avi and merge it into out.avi

$ avisplit -i my_file.avi -c -o out.avi -t 00:10:00-00:11:00,00:13:00-00:14:00

will grab Minutes 10 to 11 and 13 to 14 from my_file.avi and merge it into out.avi

En la meva primera prova:

$ avisplit -i /home/joan/prova1.avi -c -o /home/joan/prova1b.avi -t 00:00:00-00:00:22,00:00:41-00:01:18

[avilib] V: 25.000 fps, codec=FMP4, frames=5637, width=480, height=360
[avilib] A: 48000 Hz, format=0x55, bits=0, channels=2, bitrate=120 kbps,
[avilib]    9400 chunks, 3397632 bytes, VBR
0 hours, 0 minutes and 0 seconds to 0 hours, 0 minutes and 22 seconds 
0 hours, 0 minutes and 41 seconds to 0 hours, 1 minutes and 18 seconds 

Processing 550 frames    0 to  550.
First Setting start frame to: 0
[/home/joan/prova1b.avi] (000000-000751)

Setting end frame to: 751 | cnt(1254)

Processing 925 frames 1025 to 1950.
First Setting start frame to: 1002
[/home/joan/prova1b.avi] (001002-002001)

Setting end frame to: 2001 | cnt(3337)

L'efecte de càmera ràpida no em funciona amb avisplit. Però tant se val, perquè està solucionat d'una altra manera més avall.

avimerge: mesclar diferents avi's

avimerge funciona perfectament per mesclar diferents avi's. Ara bé, la idea original que és mesclar un avi amb una veu en off en format mp3, no és tan trivial com es comenta.

La idea que pretenc és afegir una veu en off: tinc un video, i un mp3. I vull barrejar el video amb el mp3. Com es veu en aquesta secció, s'ha fet moltes proves sense resultats, i és que la solució passa (com es fa més endavant) en extreure el so del video, mescar-lo amb un editor de sons (Audacity) amb un altre so, i finalment ficar el so al video original.

Aquí van les proves que s'han fet.

avimerge - merge several AVI-files into one

$ avimerge -o out.avi -i in.avi -p sound.mp3

merges the file sound.mp3 as an additional audio track into out.avi.

Faig la meva primera prova. Afegeixo un mp3 al meu vídeo:

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/BeyonceHalo.mp3
$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1.avi -p /home/joan/faig_saber.mp3

de moment no em surt

$ avisplit -i /home/joan/prova1.avi -c -o /home/joan/prova3a.avi -t 00:00:00-00:00:22
$ avisplit -i /home/joan/prova1.avi -c -o /home/joan/prova3b.avi -t 00:00:41-00:01:18
$ avimerge -o /home/joan/prova3c.avi -i /home/joan/prova3a.avi /home/joan/prova3b.avi

això funciona

això també ha funcionat:

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/prova3a.avi

això no falla però no fa res:

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/fluidsynth.mp3
$ avisplit -i /home/joan/prova1.avi -c -o /home/joan/prova_peli_veu.avi -t 00:02:50-00:02:60

You can create audio-only AVI-files using

$ transcode -i /home/joan/faig_saber.mp3 -x null,mp3 -g 0x0 -y raw -a 1 -o /home/joan/prova_faig_saber.avi -u 50

funciona, obtinc un avi que només té música

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/prova_faig_saber.avi

i ara sí que funciona: queda barrejat el video prova1b.avi amb el audio que conté prova_faig_saber.avi

En canvi amb el mp3 directament no ha funcionat.

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/faig_saber.mp3

Ara bé, compte perquè la veu del vídeo d'entrada ha desaparegut. És com si es substitueix la veu:

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova_peli_veu.avi -p /home/joan/prova_faig_saber.avi

       -A num Specify the number of the audio track you want to use in the output file. If you specify an existing track number, the track will be
              replaced. If omitted, the next free slot will be used.
$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova_peli_veu.avi -p /home/joan/prova_faig_saber.avi -A 1

i obtinc el mateix resultat: només es sent la música, no es sent la veu de la Maria.

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova_peli_veu.avi -p /home/joan/BeyonceHalo_kar.mp3
$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/prova_faig_saber.avi

només es sent la música

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/prova_peli_veu.avi -A 1

només es sent la veu del primer vídeo

$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/prova_peli_veu.avi -A 0
$ avimerge -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -p /home/joan/prova_faig_saber.avi -A 0
$ transcode -o /home/joan/prova1c.avi -i /home/joan/prova1b.avi -i /home/joan/prova_faig_saber.avi
més de lo mateix



With MEncoder you can specify a separate audio input file using the -audiofile option:

$ mencoder /home/joan/prova_peli_veu.avi -audiofile /home/joan/fluidsynth.mp3 -ovc copy -oac copy -o /home/joan/result.avi

funciona, però igual que abans, perdo la veu del primer vídeo.

$ sudo apt-get install avidemux

Informació que trobo pels fòrums i que em dóna llum sobre el problema de barrejar video i audio:

Anyway, is it also possible to cat two audio files, yet they will play at the same time? 
like overlaying audio1.mp3 to audio2.mp3 resulting to one file which two audios will play 
at the same time at the very beginning?
AFAIK you can't do that with the cat, mencoder or ffmpeg commands. You need a sound editor 
that can handle multiple inputs. Check in the Ubuntu: Multimedia Production section of the 
forums for some ideas on a good program to do that.
You dont seem to get that the problem is the vagueness of the word 
"merge". You can "mix" 2 audio tracks, and you can "mux" (short for 
multiplex) 1 or more audio tracks with a (rarely more) video track. 
"mix" produces 1 audio track, "mux" produces 1 file but does not change 
the total number of tracks.
You need to extract both audio streams, mix them together with audio
editing software such as audacity, then multiplex the resulting, mixed
audio stream with the original video stream in order to make an A/V file
with *ONE* audio track.

Solució amb editor d'audio: audacity

$ sudo apt-get install audacity

Per mesclar dos mp3 ho faig molt fàcil amb el audacity. Obro un mp3. Després faig importar, i importo l'altre mp3. Després faig exportar com a mp3. L'audacity és un bon editor d'audio, i puc tallar trossos i aplicar envolvents.

Ara per ficar el audio dins del AVI puc utilitzar ffmpeg:

$ ffmpeg -i /home/joan/BeyonceHalo_kar.mp3 -i /home/joan/prova_peli_veu.avi /home/joan/result3.avi

desapareix la veu del vídeo i només hi ha la veu del mp3, que és la que he treballat amb el editor d'audio.

Ara aquest video resultant ja el puc ajuntar amb un altre:

$ ffmpeg -i /home/joan/prova1.avi -i /home/joan/prova_peli_veu.avi /home/joan/result3.avi

recording screencasts with ffmpeg (video+audio): captura de video de pantalla


Screenshots are not included because of 40 KB limit

They can be taken from here: http://n2.nabble.com/How-to-record-sound-on-Ubuntu-8.04%2C-8.10%2C-9.04-td2988982.html#a2988982

One may need these screenshots to understand how to capture audio with ffmpeg

Dear friends,

I created a script for recording screencasts on Ubuntu 9.04.
I believe it might be useful.

It works well. The quality is good.
The screencasts can be published without any editing or noise removal.

Using the script, an ordinary user can easily produce a good
screencast with minimal efforts.
No expensive hardware is required.

In the Attachment: the script (two versions), howto, screenshots.

The script works on Ubuntu 9.04
It runs two ffmpegs, one capture screen, another records audio.
Then avi file (video+audio) is created.
This version of the script includes filtering and normalization (SoX
with Ladspa plugs).

One can also run the script on Ubuntu 8.04, or 8.10, but
this would require recompilation of ffmpeg.
HOWTO: Install and use the latest FFmpeg and x264

To be fair, I am completely ignorant in shell scripting.
I just re-used somebody's script.
Therefore, I would be happy to hear any advice about how to improve the script.

Best regards,

The origin of the script:

I am not a guru of Linux shell scripting.
I simply re-used somebody's script.
The author of the original script wrote: 
"I'm no bash script expert, so check if everything is OK before running it".

Source of the script:


    * recordSoundAndDesktop.sh (1.3 KiB, text/x-sh)

Just in case anyone arrives here with the same problem I'm reporting, I'm currently using a workaround: using arecord to record audio and recordmydesktop to record video only.

I made a bash script (I'm no bash script expert, so check if everything is OK before running it) that, when called, runs both programs in the background and when you press ENTER it finalizes both processes, waits for recordmydesktop to finish encoding the video and uses mencoder to merge audio and video into an AVI.

recordSoundAndVideo.sh myvideo

(If the name of the video is not specified, it uses a default name)



The script "recordSoundAndDesktop.sh" seems to be designed to synchronize audio and video output.
I tested the script. My conclusion: audio and video are not synchronized.

I "re-used" this script, actually, changed it essentially.

My script does synchronize audio and video, I believe.
Instead of arecord (alsa-record), I utilized ffmpeg to record from OSS.
The reason is simple. OSS does not produce such amount of noise as AlSA.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: my-shooting-script-norm.sh
Type: application/x-sh
Size: 3900 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/ubuntu-screencasts/attachments/20090602/ab58a015/attachment.sh 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: my-usb-shooting-script-norm.sh
Type: application/x-sh
Size: 3857 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/ubuntu-screencasts/attachments/20090602/ab58a015/attachment-0001.sh 
-------------- next part --------------

How to record video tutorials (high quality screencasts) on Ubuntu 9.04

Bash scripts to record screencasts:

1. my-shooting-script-norm.sh (capture screen and record audio from /dev/dsp - OSS, the internal sound card)

2. my-usb-shooting-script-norm.sh (capture screen and record audio from /dev/dsp1 - OSS, the external USB sound card)

To run the scripts you have to install ffmpeg, SoX, and Steve Harris's LADSPA plugins (swh-plugins).

Step 1: Make your Ubuntu multimedia ready

How to make Ubuntu 9.04 (Jaunty Jackalope) Multimedia Ready

Step 2: Install SoX

sudo apt-get install sox 

Step 3: Install Steve Harris's LADSPA plugins (swh-plugins)

sudo apt-get install swh-plugins

Step 4: Read my post about how to record sound on Ubuntu:

Step 5. Run my script to record screencast

The script (two versions) is in the Attachment. Howto is inside the script.

The script produces 4 files:

1. wave
2. wave (filtered and normalized)
3. avi (only video)
4. avi (video+sound)

Noise removal is not necessary if you follow the method described in my post:

In any case, wave can be edited with Audacity.
AVI can be edited with ffmpeg or mencoder


If you hate command line tools, you can edit AVI with Avidemux (install it with Synaptic).
Avidemux has a nice GUI, but the quality of video might be reduced during editing.

Avi and wave can be easily merged into AVI (video+sound) with this command:
ffmpeg -isync -i input.wav -i input.avi -acodec mp2 -ab 192k -vcodec copy output-final.avi

In a word, VLC allows to play a video with "external audio file".

Anem a provar tot això:

$ sudo chmod +x recordSoundAndDesktop.sh 
$ ./recordSoundAndDesktop.sh 
Audio recording started with process ID 5355
Initial recording window is set to:
X:0   Y:0    Width:1280    Height:800
Adjusted recording window is set to:
X:0   Y:0    Width:1280    Height:800
Your window manager appears to be compiz

Detected 3d compositing window manager.
Reverting to full screen capture at every frame.
To disable this check run with --no-wm-check
(though that is not advised, since it will probably produce faulty results).

Video recording started with process ID 5360

Press ENTER to finish.

Cached 8 MB, from 1101 MB that were received.
Average cache compression ratio: 0 %

Saved 282 frames in a total of 341 requests
Shutting down......
Encoding started!
This may take several minutes.
Pressing Ctrl-C will cancel the procedure (resuming will not be possible, but
any portion of the video, which is already encoded won't be deleted).
Please wait...
Encoding finished!
Wait a moment please...
Written 1251942 bytes
(1251942 of which were video data and 0 audio data)

Cleanning up cache...

El que obtinc és myrecording.ogv i myrecording.wav

Per convertir ogv to avi puc fer servir:

$ mencoder -idx input.ogv -ovc lavc -oac mp3lame -o output.avi
$ mencoder -idx /home/joan/Escritorio/myrecording.ogv -ovc lavc -oac mp3lame -o /home/joan/Escritorio/myrecording.avi

i funciona perfectament, i el avi ocupa una mica més que el ogv.

Per afegir audio al meu avi puc fer:

$ ffmpeg -isync -i /home/joan/faig_saber.mp3 -i /home/joan/Escritorio/myrecording.avi -acodec mp2 -ab 192k -vcodec copy /home/joan/Escritorio/myrecording_audio.avi

i funciona correctament

Resum del que tinc fins ara I

Per extreure d'un video la veu en format mp3:

$ ffmpeg -i /home/joan/prova_peli_veu.avi /home/joan/prova_peli_veu.mp3
$ ffmpeg -i /home/joan/prova1b.avi /home/joan/prova1b.mp3

i ara que tinc els dos mp3 els puc mesclar amb l'audacity com he fet abans i obtinc el fitxer prova1b2.mp3, i ara ja puc afegir al video prova1b.avi el audio mesclat, tal com s'ha vist anteriorment:

$ avimerge -o /home/joan/prova1b2.avi -i /home/joan/prova1b.avi -p /home/joan/prova1b2.mp3

això no funciona perquè en comptes d'un mp3 ha de ser un avi que contingui audio. El que sí que funciona és:

$ ffmpeg -i /home/joan/prova1b2.mp3 -i /home/joan/prova1b.avi /home/joan/prova1b2.avi

el que passa és que la qualitat s'ha reduït molt.

converteixo el meu mp3 a avi:

$ transcode -i /home/joan/prova1b2.mp3 -x null,mp3 -g 0x0 -y raw -a 1 -o /home/joan/prova1b2avi.avi -u 50

i finalment:

$ avimerge -o /home/joan/prova1b2.avi -i /home/joan/prova1b.avi -p /home/joan/prova1b2avi.avi

i ara sí

ara tinc un ogv que ve de la captura d'una pantalla. El converteixo a avi:

$ mencoder -idx /home/joan/myrecording.ogv -ovc lavc -oac mp3lame -o /home/joan/myrecording.avi
a aquest avi l'hi vull afegir el aaa.mp3:
$ transcode -i /home/joan/aaa.mp3 -x null,mp3 -g 0x0 -y raw -a 1 -o /home/joan/aaa.avi -u 50
$ avimerge -o /home/joan/aaa2.avi -i /home/joan/myrecording.avi -p /home/joan/aaa.avi

i ara ajunto aquest video (que ve d'una captura de pantalla amb un mp3 afegit) amb un video que ve de la videocàmera:

$ avimerge -o /home/joan/aaa3.avi -i /home/joan/prova1b2.avi /home/joan/aaa2.avi

i funciona a mitges. No se sent la veu de aaa2.avi, i la resolució de la pantalla canvia. La resolució de la captura de pantalla era de 1280x800, i evidentment que a l'ajuntar-ho amb el format que ve de la videocàmera hi ha un problema. El fitxer prova1b2.avi té una resolució de 480x360

he de canviar la ratio:

$ transcode -i /home/joan/myrecording.avi -y raw -Z 480x360 -o /home/joan/myrecording2.avi
[transcode] V: import frame     | 1280x800  1.60:1  
[transcode] V: zoom             | 480x360  1.33:1 (Lanczos3)

En comptes d'utilitzar el script recordSoundAndDesktop.sh puc utilitzar senzillament recordmydesktop, que és una utilitat suposo del Ubuntu, i que em dóna la possibilitat d'escollir la resolució que vull:

recordmydesktop --help
	-width N		Width of recorded window.
	-height N		Height of recorded window.

$ recordmydesktop -width 480 -height 360

però això no és el que jo necessito, doncs això el que fa és capturar una porció de la pantalla.

 -s size
$ avimerge -o /home/joan/aaa3.avi -i /home/joan/prova1b2.avi /home/joan/aaa2.avi
$ ffmpeg -i /home/joan/out.ogv -s 480x360 /home/joan/out.avi

funciona, tot i que baixa molt la qualitat (la qualitat es soluciona amb l'opció -sameq, veure més endavant)

li afegeixo la veu:

$ avimerge -o /home/joan/out2.avi -i /home/joan/out.avi -p /home/joan/prova1b2avi.avi

i ajunto els dos videos que ara tenen el mateix format de 480x360:

$ avimerge -o /home/joan/aaa3.avi -i /home/joan/prova1b2.avi /home/joan/out2.avi

i ara ja he ajuntat els dos vídeos, cada vídeo amb el seu audio. S'ajunta bé. La única pega és que la resolució del video de la captura de pantalla que he obtingut és molt dolenta. (es soluciona amb -sameq)

he de millorar la conversió, i això es soluciona amb l'opció -sameq (same quality)

$ ffmpeg -i /home/joan/out.ogv -sameq /home/joan/out.avi

Per tant, lo correcte és

$ ffmpeg -i /home/joan/out.ogv -s 480x360 -sameq /home/joan/out.avi

li afegeixo la veu:

$ avimerge -o /home/joan/out2.avi -i /home/joan/out.avi -p /home/joan/prova1b2avi.avi

i ajunto els dos videos que ara tenen el mateix format de 480x360:

$ avimerge -o /home/joan/aaa3.avi -i /home/joan/prova1b2.avi /home/joan/out2.avi

la qualitat de la captura de pantalla ja és més acceptable.

Ara bé, tot això ve de que el meu fitxer avi que ve de la videocàmera té el format 480x360, i això és perquè he utilitzat acidrip (per ripejar el meu DVD a AVI) sense cap opció. Ara bé, mirant les opcions de acidrip, veig que per defecte està escollit en la pestanya video:

Scale: Sí; width: 480; Lock aspect: Sí. I d'aquí ve el tamany del video de 480x360. Per tant, l'opció correcta és desmarcar aquesta opció i treballar amb el format original que em dóna el DVD.

per tant, tornem ara a fer tot el procés:

Resum del que tinc fins ara II

1. Importar el DVD a audio

2. Tallar el trossos que interessen

$ avisplit -i /home/joan/2009_07_27_02h34m_pm.avi -c -o out.avi -t 00:00:38-00:00:58
[avilib] V: 25.000 fps, codec=FMP4, frames=16192, width=720, height=576
[avilib] A: 48000 Hz, format=0x55, bits=0, channels=2, bitrate=122 kbps,
[avilib]    27006 chunks, 9928080 bytes, VBR

Com veig en el procés, el format del vídeo és de 720x576 (NOTA POSTERIOR: compte! en la càmera de vídeo hi ha tres possibles qualitats, i jo per defecte tinc la qualitat mitjana. Puc escollir la qualitat superior i aleshores tindré més resolució)

3. Fer un video de la pantalla de l'ordinador, i afegir-hi un audio

$ recordmydesktop

obtinc out-1.ogv

$ ffmpeg -i /home/joan/out-1.ogv -s 720x576 -sameq /home/joan/out2.avi

i retallo del video el tros que m'interessa:

$ avisplit -i /home/joan/out2.avi -c -o out3.avi -t 00:00:02-00:00:09

4. Barrejar els diferents avi's

$ avimerge -o /home/joan/out4.avi -i /home/joan/out3.avi /home/joan/out.avi

així queda malament, hi ha un problema amb la ratio del video i els fps

$ avimerge -o /home/joan/out4.avi -i /home/joan/out.avi /home/joan/out3.avi

així sí que queda bé.

$ ffmpeg -i /home/joan/out.ogv -s 720x576 -sameq /home/joan/out5.avi
Input #0, ogg, from '/home/joan/out-1.ogv':
  Duration: 00:00:11.13, start: 0.000000, bitrate: 744 kb/s
    Stream #0.0: Invalid Codec type -1
    Stream #0.1: Video: theora, yuv420p, 1280x800, PAR 1:1 DAR 8:5, 15 tbr, 15 tbn, 15 tbc
    Stream #0.2: Audio: vorbis, 22050 Hz, stereo, s16, 171 kb/s

$ avimerge -o /home/joan/out4.avi -i /home/joan/out5.avi /home/joan/out.avi
to set the video bitrate:
ffmpeg -i input.avi -b 64k output.avi
ffmpeg -i /home/joan/out.avi -b 744k /home/joan/out6.avi
$ avimerge -o /home/joan/out7.avi -i /home/joan/out5.avi /home/joan/out6.avi

ara l'audio està bé, però en canvi el video va lent... va lent perquè falta l'opció -r (sample rate, veure més avall)

...m'he quedat aquí...

ffmpeg -i /home/joan/out.avi -b 171k /home/joan/out8.avi es pixela molt la imatge (el bitrate original és de 3954 kb/s)

$ avimerge -o /home/joan/out9.avi -i /home/joan/out5.avi /home/joan/out.avi el mateix que abans, la imatge va lenta i el audio va lent

$ avimerge -o /home/joan/out10.avi -i /home/joan/out.avi /home/joan/out5.avi ara va bé, però la captura de la pantalla la tinc al darrere, quan la voldria ficar al davant.

El problema pot venir de què el meu clip de captura de pantalla no té audio. Vaig a afegir-li un audio: $ avimerge -o /home/joan/out11.avi -i /home/joan/out5.avi -p /home/joan/prova1b2avi.avi

$ avimerge -o /home/joan/out12.avi -i /home/joan/out11.avi /home/joan/out.avi tampoc funciona

$ avimerge -o /home/joan/out12.avi -i /home/joan/out.avi /home/joan/out11.avi i al revés tampoc funciona

Have you tried mencoder? Below is a sample of how to combine 3 videos. Just edit it and add all 17 of yours and see what happens.

mencoder -oac copy -ovc copy vid1.avi vid2.avi vid3.avi -o final.avi mencoder -oac copy -ovc copy /home/joan/out11.avi /home/joan/out.avi -o /home/joan/out12.avi

videocodec: framecopy (720x576 24bpp fourcc=34504d46) audiocodec: framecopy (format=50 chans=2 rate=22050 bits=0 B/s=8000 sample-1) audiocodec: framecopy (format=55 chans=2 rate=48000 bits=0 B/s=15250 sample-0)

All files must have identical audio codec and format for -oac copy.

i m'indica el problema que em temia, que són sons amb característiques diferents.

$ mencode -oac help Available codecs:

  copy     - frame copy, without re-encoding (useful for AC3)
  pcm      - uncompressed PCM audio
  mp3lame  - cbr/abr/vbr MP3 using libmp3lame
  lavc     - FFmpeg audio encoder (MP2, AC3, ...)
  twolame  - Twolame MP2 audio encoder
  faac     - FAAC AAC audio encoder

$ mencode -ovc help Available codecs:

  copy     - frame copy, without re-encoding. Doesn't work with filters.
  frameno  - special audio-only file for 3-pass encoding, see DOCS.
  raw      - uncompressed video. Use fourcc option to set format explicitly.
  nuv      - nuppel video
  lavc     - libavcodec codecs - best quality!
  vfw      - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.
  qtvideo  - QuickTime DLLs, currently only SVQ1/3 are supported.
  libdv    - DV encoding with libdv v0.9.5
  xvid     - XviD encoding
  x264     - H.264 encoding

$ mencoder -oac pcm -ovc lavc /home/joan/out11.avi /home/joan/out.avi -o /home/joan/out12.avi funciona! excepte que desapareix el so del primer vídeo, que és el de la captura de pantalla en comptes de -oac pcm també pot ser -oac mp3lame -ovc pot ser lavc, libdv ara el video obtingut és de 37 seg.

amb mencoder s'ha de poder canviar les característiques d'audio d'un vídeo: AUDIO FILTERS

      Audio filters allow you to modify the audio stream and its properties.  The syntax is:
      -af <filter1[=parameter1:parameter2:...],filter2,...>
             Setup a chain of audio filters.
      NOTE: To get a full list of available audio filters, see -af help.
      format[=format] (also see -format)
             Convert between different sample formats.  Automatically enabled when needed by the sound card or another filter.
                     Sets  the  desired  format.  The general form is ’sbe’, where ’s’ denotes the sign (either ’s’ for signed or ’u’ for unsigned), ’b’
                     denotes the number of bits per sample (16, 24 or 32) and ’e’ denotes the endianness (’le’ means little-endian, ’be’ big-endian  and
                     ’ne’  the endianness of the computer MPlayer is running on).  Valid values (amongst others) are: ’s16le’, ’u32be’ and ’u24ne’.  Ex‐
                     ceptions to this rule that are also valid format specifiers: u8, s8, floatle, floatbe, floatne, mulaw, alaw, mpeg2, ac3 and  imaad‐

-af resample=48000:0:0, format=55 mencoder -oac copy -ovc copy -af resample=48000:0:0 /home/joan/out11.avi -o /home/joan/out13.avi

No me n'en surto, ho provo amb ffmpeg:

ffmpeg -i /home/joan/out.avi /home/joan/out6.avi i miro a man ffmpeg l'apartat audio options:

  Audio Options
      -aframes number
          Set the number of audio frames to record.
      -ar freq
          Set the audio sampling frequency (default = 44100 Hz).
      -ab bitrate
          Set the audio bitrate in bit/s (default = 64k).
      -ac channels
          Set the number of audio channels (default = 1).
      -an Disable audio recording.
      -acodec codec
          Force audio codec to codec. Use the "copy" special value to specify that the raw codec data must be copied as is.
          Add a new audio track to the output file. If you want to specify parameters, do so before "-newaudio" ("-acodec", "-ab", etc..).
          Mapping will be done automatically, if the number of output streams is equal to the number of input streams, else it will pick the first one
          that matches. You can override the mapping using "-map" as usual.
                  ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
      -alang code
          Set the ISO 639 language code (3 letters) of the current audio stream.

ffmpeg -i /home/joan/out11.avi /home/joan/out14.avi no me n'en surto...

Per afegir audio al meu avi puc fer:

$ ffmpeg -isync -i /home/joan/out13.mp3 -i /home/joan/out3.avi -acodec mp2 -ab 48000 -vcodec copy /home/joan/out15.avi

mencoder -oac copy -ovc copy /home/joan/out15.avi /home/joan/out.avi -o /home/joan/out16.avi però encara no funciona...

Finalment una solució, encara que no és l'òptima. Parteixo d'un avi out12.avi, en el que he ajuntat un video de captura de pantalla amb un video que ve de la videocàmera. Aleshores amb audacity edito el so amb mp3 que tingui la mateixa longitud que el vídeo. Aquí puc afegir diferents trossos, tallar, tornar a gravar, aplicar envolvents,... Aleshores només em queda convertir aquest mp3 a avi, i aplicar-lo sobre el video original, fent una substitució de la veu:

$ transcode -i /home/joan/BeyonceHalo_37s.mp3 -x null,mp3 -g 0x0 -y raw -a 1 -o /home/joan/out16.avi -u 50 $ avimerge -o /home/joan/out17.avi -i /home/joan/out12.avi -p /home/joan/out16.avi


dvd-slideshow: Create your own movie titles/credits, transitions & effects in Linux.


Important utilitzar l'opció -p (PAL), per tenir el mateix format que en la videocàmera.

sudo apt-get install dvd-slideshow

Description: Creates a dvd-compatible mpeg2 video from a bunch of images. You can add music if you want also. Supports several effects like fadein/fadeout/crossfade/crop/kenburns.

Fem un títol: I create an all black png image and type the title information in large white font on the image using gimp (I store the original in xcf format as well just in case I want to make edits). Then I use dvd-slideshow to turn the png image into dvd video.

Abans que res, faig el title.png de 720x576 px $ dvd-slideshow -n hola.avi -o /home/joan -f /home/joan/dvd_slideshow_input_file.txt

en aquesta primera prova no utilitzo l'opció -p (PAL), i el video resultant es NTSC

i amb el fitxer dvd_slideshow_input_file.txt:


efectivament se'm genera el video hola.avi.vob que conté un vídeo del títol amb una transició Si trec l'extensió .vob em queda el fitxer hola.avi que té format avi. Ara bé, això funciona fent doble click sobre el video. Quan el vull mesclar amb avimerge diu que no té format avi.

La solució és ripejar-lo com ho féiem en l'acidrip. En el path poso el fitxer .vob: /home/joan/hola.avi.vob

$ avimerge -o /home/joan/out19.avi -i /home/joan/hola.avi /home/joan/out.avi el fitxer out.avi, que venia de la videocàmera, tenia so. I ara el so ja comença a ser un desastre. Per tant, això reafirma la meva posició, que és fer primer tot el vídeo sense preocupar-se del so, i al final ficar el so ben editat amb l'audacity. Ara bé, això sí que és un problema, perquè que es desincronitzi el so vol dir que un dels videos va més ràpid del que ha de ser. La longitud total del video són 34 segons, que és el que ha de ser, perquè la longitud del audio és la correcta. Ara bé, fadeout:0.5out.avi avança més ràpid del que hauria de ser i acaba abans dels 34 segons.

Anem a fusionar el títol amb el primer frame del vídeo.

19 ffmpeg commands for all needs: http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs Turn a video to X images

ffmpeg -i video.mpg image%d.png The following image formats are also availables : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.

ffmpeg -i /home/joan/out.avi /home/joan/image%d.png compte perquè va molt ràpid (hi ha manera de què només faci la primera imatge?).

$ dvd-slideshow -n hola.avi -o /home/joan -f /home/joan/dvd_slideshow_input_file2.txt

#(0.034 seconds creates a single frame at 29.97 fps.  See note on timing below.)

ara ja tinc el títol i la primera imatge del video amb una fade. Igual que abans, amb acidrip converteixo el .vob a .avi. Ajunto el avi:

$ avimerge -o /home/joan/out20.avi -i /home/joan/hola.avi /home/joan/out.avi

En el link s'expliquen més possibilitats, però jo m'ancontentaré ficant uns crèdits al final del vídeo, també amb blanc sobre negre.

$ avimerge -o /home/joan/out20.avi -i /home/joan/hola.avi /home/joan/out.avi /home/joan/adeu.avi i si també hi barrejo una captura de pantalla:fadeout:0.5 $ avimerge -o /home/joan/out21.avi -i /home/joan/hola.avi /home/joan/out.avi /home/joan/out5.avi /home/joan/adeu.avi però això no funciona, hi ha un problema amb el tempo. Anem a veure per separat el temps dels videos:

hola.avi: fet amb dvd-slideshow 4 segons out.avi: importat de la videocàmera 30 segons out5.avi: captura de pantalla 7 segons adeu.avi: fet amb dvd-slideshow 4 segons

video resultatnt: out21.avi. Haurien de ser 45 segons i són 38 segons

Anem a analitzar $ avimerge -o /home/joan/out19.avi -i /home/joan/hola.avi /home/joan/out.avi que fa que out.avi el vídeo va més ràpid del compte, però el so està be.

Per trobar informació d'un video puc fer

$ ffmpeg -i /home/joan/out.avi
Input #0, avi, from '/home/joan/out.avi':
  Duration: 00:00:30.00, start: 0.000000, bitrate: 3954 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x576 [PAR 1:1 DAR 5:4], 25 tbr, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 122 kb/s

$ ffmpeg -i /home/joan/hola.avi
Input #0, avi, from '/home/joan/hola.avi':
  Duration: 00:00:04.75, start: 0.000000, bitrate: 1008 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 1:1 DAR 3:2], 29.97 tbr, 29.97 tbn, 30k tbc
    Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 32 kb/s

Hauria d'aconseguir que hola.avi tingués les mateixes característiques que out.avi

La imatge title.png era de 720x576, però el vidfadeout:0.5eo resultant és de 720x480...

$ dvd-slideshow -n hola.avi -o /home/joan -f /home/joan/dvd_slideshow_input_file.txt

... [dvd-slideshow] Video: NTSC 720x480 29.97fps 4:3 [dvd-slideshow] Audio: AC3 48000 192k

Amb l'opció p utilitzo PAL en comptes de NTSC $ dvd-slideshow -n hola.avi -o /home/joan -f /home/joan/dvd_slideshow_input_file.txt ... [dvd-slideshow] Video: PAL 720x576 25fps 4:3 [dvd-slideshow] Audio: AC3 48000 192k

obtinc hola.avi.vob, i amb acidrip obtinc hola.avi

Input #0, avi, from '/home/joan/hola.avi':

 Duration: 00:00:08.60, start: 0.000000, bitrate: 322 kb/s
   Stream #0.0: Video: mpeg4, yuv420p, 720x576 [PAR 1:1 DAR 5:4], 25 tbr, 25 tbn, 25 tbc
   Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 32 kb/s

i ara les característiques d'aquest video ja són les mateixes que out.avi (s'ha d'utilitzar PAL!)

$ avimerge -o /home/joan/out22.avi -i /home/joan/hola.avi /home/joan/out.avi ja quasi s'ha solucionat el tema del tempo, tot i que encara hi ha un petit decalatge

$ avimerge -o /home/joan/out20.avi -i /home/joan/hola.avi /home/joan/out.avi /home/joan/adeu.avi és més que acceptable

Fer un video a càmera ràpida o lenta



El video de la videocàmera està a 25 fps. If your original file is PAL based, with a framerate of 25fps, changing the framerate to 50fps will result in the video running twice as fast, for half as long.

sudo apt-get install mjpegtools

Next, the input video needs to be converted to yuv4mpegpipe format, passed through yuvfps and output to a new avi file. Here's the command line I used to create a clip at 50fps:

ffmpeg -i /home/joan/out.avi -f yuv4mpegpipe - | yuvfps -s 50:1 -r 50:1 | ffmpeg -f yuv4mpegpipe -i - -b 28800k -y /home/joan/out18.avi

amb la relació 50:1 va el doble de ràpid. Si el video durava 30 seg, ara en durarà 15 seg. El so desapareix. Per fer càmera lenta puc utilitzar una relació 10:1:

ffmpeg -i /home/joan/out.avi -f yuv4mpegpipe - | yuvfps -s 10:1 -r 10:1 | ffmpeg -f yuv4mpegpipe -i - -b 28800k -y /home/joan/out18.avi

Convertir un avi a flv (format de YouTube)


$ ffmpeg -i /home/joan/aaa2.avi -sameq /home/joan/aaa2.flv

 Duration: 00:00:05.76, start: 0.000000, bitrate: 1535 kb/s
   Stream #0.0: Video: mpeg4, yuv420p, 1280x800 [PAR 1:1 DAR 8:5], 25 tbr, 25 tbn, 25 tbc
   Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s

Output #0, flv, to '/home/joan/aaa2.flv':

   Stream #0.0: Video: flv, yuv420p, 1280x800 [PAR 1:1 DAR 8:5], q=2-31, 200 kb/s, 90k tbn, 25 tbc
   Stream #0.1: Audio: adpcm_swf, 48000 Hz, stereo, s16, 64 kb/s

Stream mapping:

 Stream #0.0 -> #0.0
 Stream #0.1 -> #0.1

[adpcm_swf @ 0x9200110]Sample rate must be 11025, 22050 or 44100 Error while opening codec for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height

Es veu que hi ha un problema amb el sample rate, s'ha de convertir el audio a 44100

La solució és fàcil: $ ffmpeg -i /home/joan/aaa2.avi -ar 44100 -sameq /home/joan/aaa2.flv


ara va en sèrio. Vida 12.0

Primer de tot es fa un guió i s'escriu el que es dirà. Grabo el que es dirà amb els temps correctes.

Primer de tot faig el audio:

$  arecord -r 44100 -f cd -t wav -D plughw:UA25EX /home/joan/vida_12/vida_12.wav
$ aplay -D plughw:UA25EX /home/joan/vida_12/vida_12.wav

Compte que això no era correcte! Si faig servir la UA25EX, assegurar-me de què la gravació és stereo:

$  arecord -r 44100 -f cd -t wav -Dplug:record_left /home/joan/vida_12/vida_12.wav

on record_left és una entrada que he fet en el fitxer .soundrc per tal de poder gravar amb un micròfon sobre els dos canals.

...i determino els temps per canviar les diferents parts.

$ arecord -r 44100 -f cd -t wav -D plughw:UA25EX /home/joan/vida_12/vida_12.wav $ aplay -D plughw:UA25EX /home/joan/vida_12/vida_12.wav $ recordmydesktop

recordmydesktop em dóna un format ogv. Per passar-lo a format avi:

$ ffmpeg -i /home/joan/vida_12/out-6.ogv -s 720x576 -sameq /home/joan/vida_12/p1.avi $ ffmpeg -i /home/joan/vida_12/out-10.ogv -s 720x576 -sameq /home/joan/vida_12/p2.avi $ ffmpeg -i /home/joan/vida_12/out-5.ogv -s 720x576 -sameq /home/joan/vida_12/p3.avi $ ffmpeg -i /home/joan/vida_12/out-9.ogv -s 720x576 -sameq /home/joan/vida_12/p4.avi $ ffmpeg -i /home/joan/vida_12/out-8.ogv -s 720x576 -sameq /home/joan/vida_12/p6.avi $ ffmpeg -i /home/joan/vida_12/out-7.ogv -s 720x576 -sameq /home/joan/vida_12/p8.avi

Compte perquè els fitxers resultants estan a 15fps. Si ho vull ajuntar amb un video de la videocàmera, per defecte estarà a 25 fps. Aquesta deu ser una de les causes dels problemes que tenia...

tallem tots els trossos:

$ avisplit -i /home/joan/vida_12/p1.avi -c -o /home/joan/vida_12/1.avi -t 00:00:6-00:00:13 $ avisplit -i /home/joan/vida_12/p2.avi -c -o /home/joan/vida_12/2.avi -t 00:00:20-00:00:53 $ avisplit -i /home/joan/vida_12/p3.avi -c -o /home/joan/vida_12/3.avi -t 00:00:10-00:01:14 $ avisplit -i /home/joan/vida_12/p4.avi -c -o /home/joan/vida_12/4.avi -t 00:00:22-00:01:1 $ avisplit -i /home/joan/vida_12/p3.avi -c -o /home/joan/vida_12/5.avi -t 00:00:10-00:00:23 $ avisplit -i /home/joan/vida_12/p6.avi -c -o /home/joan/vida_12/6.avi -t 00:00:6-00:00:35 $ avisplit -i /home/joan/vida_12/p3.avi -c -o /home/joan/vida_12/7.avi -t 00:00:10-00:01:2 $ avisplit -i /home/joan/vida_12/p8.avi -c -o /home/joan/vida_12/8.avi -t 00:00:6-00:00:12

Ara ja podem ajuntar tots els videos per fer el video màster:

$ avimerge -o total.avi -i 1.avi 2.avi 3.avi 4.avi 5.avi 6.avi 7.avi 8.avi

ara ja podem afegir l'audio. Amb avimerge necessitava crear un avi a partir del wav, i ajuntant els dos avis ja tenia la barreja d'audio i video. A mi ara no m'ha sortit perquè em diu que el audio.avi no té video data. Tant se val, perquè m'ha sortit d'una forma molt més directa amb ffmpeg:

ffmpeg -i vida_12.wav -i total.avi -sameq vida_12.avi

i ja obtinc vida_12.avi amb un resultat molt satisfactori. Són 4'9 que ocupen 29MB.

El pas final és exportar el AVI al format de YouTube (Flash Player, flv) i publicar-lo:

$ ffmpeg -i vida_12.avi -sameq vida_12.flv

Són 35MB (ocupa més!) i les proporcions són diferents. Això és perquè per defecte deu haver fet unes proporcions més estàndars (1,25 o 1,33) quan de fet el meu portàtil és 1280x800 (1,6). Tot això bé perquè he captura la pantalla amb aquesta proporció.

millor reduir el tamany del video i controlar manualment les proporcions:

$ ffmpeg -i vida_12.avi -b 384000 -s 1280x800 -pass 1 -passlogfile log-file vida_12.flv -> són 19 MB

i miro de reduir el tamany del video amb unes mides més petites (i que tinguin la mateixa proporció):

$ ffmpeg -i vida_12.avi -b 384000 -s 640x400 -pass 1 -passlogfile log-file vida_12.flv -> són 17MB (pensava que es reduïria més) $ ffmpeg -i vida_12.avi -s 640x400 -pass 1 -passlogfile log-file vida_12.flv -> són 11 MB $ ffmpeg -i vida_12.avi -s 320x240 -pass 1 -passlogfile log-file vida_12.flv -> són 11MB $ ffmpeg -i vida_12.avi -s 320x200 -pass 1 -passlogfile log-file vida_12.flv -> són 11MB

ffmpeg -i vida_12.avi -s 640x480 -pass 1 -passlogfile log-file vida_12.flv -> són 11 MB

Ara pengem el video. www.youtube.com (JoanilloMediaArt/jq****)

manual del youtube: http://www.youtube.com/t/yt_handbook_home

YouTube recomana: 1280 x 720 (16 x 9 HD) (ratio=1.77) y 640 x 480 (4:3 SD)(ratio=1.33) (http://www.google.com/support/youtube/bin/answer.py?answer=132460&topic=16612&hl=es-ES). La ràtio 4:3 és la de la videocàmera (480x360). (NOTA POSTERIOR: mentida! la meva videocàmera pot treballar amb 4:3 o amb 16:9. També pot escollir tres modes de qualitat. La qualitat mitjana dóna 720x576... però la més alta?)

NOTA: llegint bé el link de YouTube no diu que és bo treballar amb el format 640x480. Senzillament diu que és el format estàndard de fa uns anys, quan no hi havia HQ (High Quality). El que s'ha de fer és escollir el format 4:3 o 16:9, i aleshores mirar de treballar amb la màxima resolució, i enviar al YouTube el fitxer amb la màxima resolució. el YouTube ja s'encarregarà de gestionar-ho. De fet, el visor del YouTube per defecte és de 16:9. Els videos que he enviat amb format 4:3 hi posa dues barres verticals.

NOTA sobre la pantalla del portàtil. La pantalla del portàtil treballa per defecte a 1280x800. Això és una resolució de 16:10. Puc escollir treballar a 1280x720 (16:9), i així escollir una resolució de sortida compatible amb el format 16:9 de la videocàmera. Tanmateix, treballant a 1280x720 es veu pitjor que 1280x800. El millor és fer recorddesktop a 1280x800 i després retallar a 16:9 o 4:3 segons hagi treballat amb la videocàmera.

Resolent els fps

el video que ve de la captura de pantalla i el que ve de la videocàmera han de tenir les mateixes característiques: tamany i fps. El fps de la videocàmera és de 25 fps.

recordmydesktop --no-sound -delay 2 -fps 25 --overwrite -o p1.ogv la resolució original és de 1280x800 $ ffmpeg -i /home/joan/p1.ogv -s 1280x720 -r 25 -sameq /home/joan/p1.avi -> format recomanat per YouTube

el video que em ve de la videocàmera el converteixo al format de Youtube (1280x720): $ ffmpeg -i /home/joan/out.avi -s 1280x720 -r 25 -sameq /home/joan/p2.avi

i ara ajunto els dos vídeos, un que ve de la captura de pantalla, i un altre que ve de la videocàmera.

$ avimerge -o p3.avi -i p1.avi p2.avi i ara la longitud total és la suma dels dos vídeos doncs m'he assegurat que els fps siguin els mateixos.


1) vídeos que vénen només de captura de pantalla. Al final poso la veu a sobre. No dóna problema. Es: Vida 12.0 2) captura de pantalla + vídeocàmera, però no surt ningú parlant. M'he d'assegurar que la ràtio i els fps siguin els mateixos. Poso la veu a posteriori, tot visualitzant el vídeo. 3) ajuntar vídeos que vénen de la videocàmera. Això no donaria cap problema. Ara bé, com a mínim la portada i els crèdits vénen de captura de pantalla. Per tant, ho redueixo al punt 4. 4) videocàmera de gent parlant + captures de pantalla. La veu de les captures de pantalla la faig a posteriori. La veu de la videocàmera també la trec. Quan tinc tot el vídeo muntat, edito i fusiono les veus amb el audacity. Si tots els fps estan bé, no hi hauria d'haver problemes. Recordem que el tema crític és la gent que parla, que no quedi dessincronitzat.

Causística 4

p1: portada (6 seg) (sense so) p2: un plat ple... (16 seg) (amb so) p3: crèdits (6 seg) (sense so)

recordmydesktop --no-sound -delay 3 -fps 25 --overwrite -o p1.ogv ffmpeg -i /home/joan/prova_video/p1.ogv -cropleft 106 -cropright 106 -s 640x480 -aspect 4:3 -r 25 -sameq /home/joan/prova_video/p1.avi avisplit -i /home/joan/prova_video/p1.avi -c -o /home/joan/prova_video/p1.avi -t 00:00:00-00:00:06

no n'hi ha prou amb -s 640x480. També he de ficar -aspect 4:3 per tal que realment canvḯi la ràtio. Les lletres queden més estretes. Si el que vull és realment retallar pels costats, també es pot fer, veure man ffmpeg:

       -cropleft size
           Set left crop band size (in pixels).
       -cropright size
           Set right crop band size (in pixels).

per tal de què la meva pantalla de 1280x800 quedi amb una ràtio de 4:3, hauré de retallar dues bandes a l'esquerra i a la dreta. x/800=4/3 -> x=1066, per tant he de retallar (1280-1066)/2=107 -> 106 pixels a cada banda. (107 dóna error)

recordmydesktop --no-sound -delay 3 -fps 25 --overwrite -o p3.ogv ffmpeg -i /home/joan/prova_video/p3.ogv -cropleft 106 -cropright 106 -s 640x480 -aspect 4:3 -r 25 -sameq /home/joan/prova_video/p3.avi avisplit -i /home/joan/prova_video/p3.avi -c -o /home/joan/prova_video/p3.avi -t 00:00:00-00:00:06

ffmpeg -i /home/joan/prova_video/joanillo.avi -s 640x480 -r 25 -sameq /home/joan/prova_video/p2.avi

ara ho ajunto: $ avimerge -o total.avi -i p1.avi p2.avi p3.avi

la ratio és la correcte, l'únic problema és que m'ha desaparegut la veu. Ara extrec la veu, ho fico en el audacity, i si els frames i tot és correcte la veu s'haurà de posar bé en el seu lloc.

$ ffmpeg -i /home/joan/prova_video/p2.avi /home/joan/prova_video/p2.mp3

Aleshores només em queda editar aquest mp3 en el audacity, convertir el mp3 resultant a avi, i aplicar-lo sobre el video original, fent una substitució de la veu:

$ transcode -i /home/joan/prova_video/total.mp3 -x null,mp3 -g 0x0 -y raw -a 1 -o /home/joan/prova_video/total2.avi -u 50 $ avimerge -o /home/joan/prova_video/total3.avi -i /home/joan/prova_video/total.avi -p /home/joan/prova_video/total2.avi

i el resultat és correcte, entenent que si la veu no s'ajusta, amb el audacity hauré de fer les correcions oportunes, doncs permet finura a l'hora de moure a l'esquerra o dreta els troços d'audio.

finalment, exporto al format de YouTube:

$ ffmpeg -i total3.avi -s 640x480 -pass 1 -passlogfile log-file -ar 44100 -sameq prova_video.flv

M'he trobat amb dues coses: 1) l'audio de la videocàmera és de 48000, i necessàriament el format flv ha de ser 44100 o menor. També he hagut de ficar el paràmetre -sameq per evitar la pixel.lació. El resultat ocupa més o menys el mateix, però no ens fixem en el tamany. Ara ja podem penjar la prova per veure el resultat final:

www.youtube.com (JoanilloMediaArt/jq****)

Edició de mp3 amb l'audacity

importo un mp3. Vull ficar 5 segons de silenci a l'esquerra. Fico el cursor en la posició 5 seg, i alinear pistas > alinear en el cursor i el meu mp3 es desplaça a la dreta 5 seg.

Ara vull ficar silenci per la dreta. Doncs molt fàcil. Selecciono la part que he creat a l'esquerra, que és un silenci pur, i la copio a la dreta. Si em passo del total, selecciono la part que m'he passat i faig Ctrl-X.

Falta una cosa: Pistas > Mezclar y generar

Afegeixo una pista de mp3, i la retallo de manera que coincideixin amb lo que tenia. Després aplico l'eina Envolvent, que és molt intuïtiva.


NOTA POSTERIOR. Per què treballar amb 640x480? Hauria de treballar amb la resolució més alta possible (la pantalla ja em dóna prou resolució, i de la videocàmera treballar amb qualitat màxima. Aleshores treballar amb la mínima de les dues fins al final (mantenint la ratio 4:3 o 16:9, que la videocàmera també pot treballar amb les dues). I quan converteixo a format YouTube aleshores puc baixar la resolució o bé que sigui l'aplicatiu de YouTube el que m'ajusti la qualitat o la resolució. Però sens dubte, m'interessa tenir uns videos originals amb la màxima resolució possible.

$ cd /home/joan/projectes/ELECT_22/video/

$ recordmydesktop --no-sound -delay 3 -fps 25 --overwrite -o p1.ogv
$ ffmpeg -i p1.ogv -cropleft 106 -cropright 106 -s 640x480 -aspect 4:3 -r 25 -sameq p1.avi -ss 00:00:00.000 -t 00:00:06.000

$ ffmpeg -i /home/joan/prova_video/p1.ogv -cropleft 106 -cropright 106 -s 640x480 -aspect 4:3 -r 25 -sameq /home/joan/prova_video/p1.avi
$ avisplit -i /home/joan/prova_video/p1.avi -c -o /home/joan/prova_video/p1.avi -t 00:00:00-00:00:06
$ recordmydesktop --no-sound -delay 3 -fps 25 --overwrite -o p2_1.ogv
$ ffmpeg -i p2_1.ogv -cropleft 106 -cropright 106 -s 640x480 -aspect 4:3 -r 25 -sameq p2_1.avi -ss 00:00:00.000 -t 00:00:09.000
$ ffmpeg -i p3_5.avi -s 640x480 -sameq p3.avi -ss 00:00:22.000 -t 00:00:38.000
$ recordmydesktop --no-sound -delay 6 -fps 25 --overwrite -o p4.ogv
$ ffmpeg -i p4.ogv -cropright 212 -s 640x480 -aspect 4:3 -r 25 -sameq p4.avi -ss 00:00:00.000 -t 00:01:12.000
$ ffmpeg -i p3_5.avi -s 640x480 -sameq p5.avi -ss 00:00:00.000 -t 00:00:15.000
$ recordmydesktop --no-sound -delay 6 -fps 25 --overwrite -o p6.ogv
$ ffmpeg -i p6.ogv -cropright 212 -s 640x480 -aspect 4:3 -r 25 -sameq p6.avi -ss 00:00:00.000 -t 00:01:55.000
$ recordmydesktop --no-sound -delay 3 -fps 25 --overwrite -o p7.ogv
$ ffmpeg -i p7.ogv -cropleft 106 -cropright 106 -s 640x480 -aspect 4:3 -r 25 -sameq p7.avi -ss 00:00:00.000 -t 00:00:06.000

Ara ajuntem tots els videos:

$ avimerge -o proj22_sense_veu.avi -i p1.avi p2_1.avi p2_2.avi p2_3.avi p2_4.avi p2_5.avi p5.avi p3.avi p4.avi p5.avi p6.avi p7.avi 

faig el so:

$ arecord -r 44100 -f cd -t wav -D plughw:0 ELECT_22_so.wav
o bé
$ arecord -r 44100 -f cd -t wav -Dplug:record_left ELECT_22_so.wav
$ aplay -D plughw:UA25EX ELECT_22_so.wav
$ aplay -D plughw:0 ELECT_22_so.wav

em preocupa la sortida, que tingui prou volum. Al final he hagut de parlar fort en el micro, doncs el resultat que obtenia era amb poc volum (mirar)

NOTA POSTERIOR: Una possible solució per al tema del micròfon és l'aplicatiu alsamixer. Mirar bé com estan tots els paràmetres i ajustar algun control relacionat amb el micròfon, fer proves...

i ajunto el so amb el video sense so:

$ ffmpeg -i ELECT_22_so.wav -i proj22_sense_veu.avi -y -sameq ELECT_22.avi

finalment, exporto al format de YouTube:

$ ffmpeg -i ELECT_22.avi -s 640x480 -pass 1 -passlogfile log-file -ar 44100 -sameq -y ELECT_22.flv

i pujo el video:

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/hq6r_xZwNeU&hl=es&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hq6r_xZwNeU&hl=es&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Video de la construcció

He tingut problemes amb el avisplit (no talla bé el vídeo), o sigui que ho faig directament amb ffmpeg. Això confirma que de fet tot es pot fer amb ffmpeg.

ffmpeg -y -i /home/joan/prova_video/construccio.avi -sameq /home/joan/prova_video/p1.avi -ss 00:00:03.000 -t 00:00:01.000

música lliure de drets

http://www.jamendo.com/es/albums?pn=2 (citar l'autor) Música > cercar per etiquetes (per exemple, Ambient) per ex,

Format pvr (Personal Video Recording)

És el format que obtinc quan grabo programes de la BBD amb l'aparell de la TDT. Es poden convertir a AVI:

$ ffmpeg -i /home/joan/How_a_Choir_Works.pvr  -y -sameq /home/joan/How_a_Choir_Works.avi

Gravar en format 16:9. Combinar Escriptori i videocàmera amb veu

per grabar la pantalla de l'ordinador $ recordmydesktop --no-sound -delay 3 -fps 25 -width 1280 -height 800 --overwrite -o p1.ogv m'he d'assegurar quines són les dimensions de la càmera treballant a 16:9 i màxima resolució, i hauré de fer un crop per ajustar-ho

$ recordmydesktop --no-sound -delay 3 -fps 25 --overwrite -o zzz_desktop.ogv hd480 852x480 -> és un format 16:9

$ ffmpeg -y -i zzz_desktop.ogv -s 852x480 -aspect 16:9 -r 25 -sameq zzz_desktop.avi $ ffmpeg -y -i zzz_hq169.avi -s 852x480 -aspect 16:9 -sameq zzz_hq169_2.avi $ avimerge -o zzz_total.avi -i zzz_desktop.avi zzz_hq169_2.avi -> ara sí, amb 16:9 funciona Ja he aconseguit ajuntar dos videos (escriptori i videocàmera) amb format 16:9. Ara falta posar el so que ve de la videocàmera

$ ffmpeg -y -i zzz_hq169.avi zzz_hq169.mp3

ho fico en el audacity. la veu comença en el segon 7. obtinc zzz_hq169_2.mp3

$ ffmpeg -y -isync -i zzz_hq169_3.mp3 -i zzz_total.avi -vcodec copy zzz_total_3.avi

$ ffmpeg -y -isync -i zzz_hq169_3.mp3 -i zzz_total.avi -acodec copy -ar 48000 -vcodec copy zzz_total_3.avi -> molt millor

Anem a fer un títol, i un fade del títol amb el video

$ ffmpeg -y -i zzz_desktop.avi image%d.png obtinc image1.png

$ dvd-slideshow -n zzz_portada.avi -o /home/joan -w -f /home/joan/dvd_slideshow_input_file2.txt del segon video extrec la primera imatge


#(0.034 seconds creates a single frame at 29.97 fps.  See note on timing below.)

Ara ja puc ajuntar aquest video de la portada amb el que havia fet:

amb acidrip he de ripejar el fitxer zzz_portada.avi.vob i obtinc zzz_portada2.avi A video no poso res al crop, i marco scale i poso 852x480.

El següent pas és necessari per tal de poder ajuntar bé els videos en el pas que vindrà: $ ffmpeg -i zzz_portada2.avi -s 852x480 -aspect 16:9 -r 25 -sameq zzz_portada3.avi

$ avimerge -o zzz_total4.avi -i zzz_portada3.avi zzz_desktop.avi zzz_hq169_2.avi i ara els videos enllacen molt bé: la portada a un fade cap al primer video, el segon video que ve de d'una captura de pantalla de l'escriptori, i el tercer video que ve de la videocàmera. La única cosa que queda ara és tornar a ajustar la veu.

Substituir la veu de la videocàmera per una veu feta amb arecord

Grabo la meva sessió amb la videocàmera (que com és sabut introdueix molt soroll ambiental), i al mateix temps grabo amb arecord el que dic, de manera que tinc una gravació de qualitat i sense soroll. Es tracta de substituir un audio per l'altre.

$ arecord -r 44100 -f cd -t wav -D plughw:0 prova.wav
$ aplay -D plughw:0 prova.wav

grabo amb el video. Ja tinc prova.wav i prova.avi. L'objectiu és treure el so de prova.avi, i substituir-lo per prova.wav

em quedo amb la part del video que m'interessa:

$ ffmpeg -y -i prova.avi -s 852x480 -aspect 16:9 -r 25 -sameq prova2.avi -ss 00:00:11.000 -t 00:01:07.000

D'aquest video en trec el so:

$ ffmpeg -y -i prova2.avi -an -sameq prova3.avi

ara edito prova.wav en el audacity.

En el fitxer d'audio tallo les cues per davant i per darrera, i poso el començament de la veu just al principi. (selecciono la part que vull esborrar, i tallo). De manera que el fitxer d'audio quedi més curt que el de video. Exporto a prova2.wav

Ara els ajunto i miro què passa.

$ ffmpeg -y -isync -i prova2.wav -i prova3.avi -acodec copy -ar 44100 -vcodec copy prova4.avi

Evidentment, no estan ajustats.

Selecciono tot, i tallo, de manera que la pista em queda buida. En Ajuste a... fico per exemple el valor 25 fotogrames (en el primer combo), que crec que és un valor que es pot ajustar bastant. Aleshores: Pistas > Mezclar y generar (important per integrar l'espai que he generat al principi a la pista). Torno a exportar a prova2.wav, i torno a generar prova4.avi.

Com que haurà quedat malament... faig desfer, escullo un altre valor de fotogrames, Pistas > Mezclar y generar, i torno a exportar a prova2.wav. I així anar fent, prova i error. Faig una taula per tal d'ajustar el valor

En la primera prova amb tres valors n'he tingut prou.

Per tant, el resultat final el tinc a prova4.avi.

Compte! amb l'amplificació del senyal. Seria interessant que totes les grabacions tinguessin el mateix nivell sonor, doncs veig que si amplifico un so amb el audacity afegeix un sorollet (quasi imperceptible).

$ ffmpeg -i prova4.avi 
Input #0, avi, from 'prova4.avi':
  Duration: 00:01:05.72, start: 0.000000, bitrate: 1427 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 852x480 [PAR 1:1 DAR 71:40], 25 tbr, 25 tbn, 25 tbc
    Stream #0.1: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s

Fixem-nos que el audio del video era de 48000, i jo amb arecord he fet 44100. Ara ja puc fer totes les gravacions de arecord i recordmydesktop a 44100, donat que aquest és el format que demana YouTube.

Eines de l'usuari
Espais de noms
Institut Jaume Balmes
Màquines recreatives
Informàtica musical
joanillo.org Planet