FUNIX

Mettez un manchot dans votre PC


Encourager FUNIX

La consultation du site est totalement libre et gratuite, sans publicités. Les dons sont néanmoins appréciés pour payer l'hébergement et encourager son auteur


Montage vidéo sous linux    
[ Présentation | Outils de montage ( KDEnlive ( Présentation , Installation , Utilisation ) , LiVES ( installation , utilisation )  , Cinelerra ( Installation , Utilisation ) , OpenShot Vidéo ( Installationutilisation ) , Kino (Installation, Présentation , utilisation de kino) | Outils divers ( Synfig Studio ( Installation , Utilisation ) , Blender ) ]

Montage vidéo

Dernière modification 7 mars 2014

( ce document est disponible au format pdf dans la rubrique téléchargement)

Présentation

Kino est dédié en particulier aux  caméscopes DV. Il possède toutes les fonctions utiles pour un vidéaste amateur, c'est un très bon début pour commencer dans la pratique du montage vidéo. C'est malheureusement un projet mort qui n'évolue plus.

[Retour haut de la page]

Outils de montage vidéo

kino

Installation

Préalablement on installera les outils de base pour piloter votre liaison IEEE1394 (firewire) grâce à la page qui leur est consacrée.  On récupèrera la dernière version stable de kino sur le site http://www.kinodv.org on décompresse l'archive en tapant

tar xvfz kino-1.3.4.tar.gz

Cela donne le répertoire kino-1.3.4 on veillera à ce que les packages suivants soient installés intltool, libiec61883-devel (si vous avez une entrée firewire)  libsamplerate-devel et libglade2-devel (libglade2-dev sous ubuntu). Maintenant sous kino-1.3.4 on tape

./configure  --enable-quicktime --disable-local-ffmpeg

la première option permet de bénéficier du quicktime et la deuxième d'utiliser la version locale de ffmpeg (et non pas ffmpeg fourni avec kino). On tape maintenant

make

je bute sur l'erreur suivante

frame.cc:1066: erreur: ‘avcodec_decode_video’ was not declared in this scope

cela vient de la fontion avcodec_decode_video qui a disparu des versions récentes de ffmpeg et qui a été remplacé par la commande avcodec_decode_video2 qui a des arguments différents.

On édite le fichier ./src/frame.cc au niveau de la fonction suivante

int Frame::ExtractRGB( void * rgb )
{
#if defined(HAVE_LIBAVCODEC)
        AVFrame *frame = avcodec_alloc_frame();
        AVPicture dest;
        int got_picture;

        avcodec_decode_video2( libavcodec, frame, &got_picture, data, GetFrameSize() );

on écrit à la place

       AVFrame *frame = avcodec_alloc_frame();
        AVPicture dest;
        int got_picture;
        AVPacket pkt;
        av_init_packet(&pkt);
        pkt.data = data;
        pkt.size = GetFrameSize();
       
        avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );

au niveau de la fonction suivante

int Frame::ExtractYUV( void *yuv )
{
#if defined(HAVE_LIBAVCODEC)
     AVFrame *frame = avcodec_alloc_frame();;
     AVPicture output;
     int got_picture;

     avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );

on écrit à la place

int Frame::ExtractYUV( void *yuv )
{
#if defined(HAVE_LIBAVCODEC)
        AVFrame *frame = avcodec_alloc_frame();;
        AVPicture output;
        int got_picture;
        AVPacket pkt;
        av_init_packet(&pkt);
        pkt.data = data;
        pkt.size = GetFrameSize();
       
        avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );

au niveau de la fonction suivante

int Frame::ExtractYUV420( uint8_t *yuv, uint8_t *output[ 3 ] )
{
#if defined(HAVE_LIBAVCODEC)
        AVFrame *frame = avcodec_alloc_frame();
        int got_picture;

        avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );

on écrit à la place

int Frame::ExtractYUV420( uint8_t *yuv, uint8_t *output[ 3 ] )
{
#if defined(HAVE_LIBAVCODEC)
        AVFrame *frame = avcodec_alloc_frame();
        int got_picture;

        AVPacket pkt;
        av_init_packet(&pkt);
        pkt.data = data;
        pkt.size = GetFrameSize();
       
        avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );

au niveau de la fonction suivante

bool Frame::CreateEncoder( bool isPAL, bool isWide )
{
        pthread_mutex_lock( &avcodec_mutex );
#if defined(HAVE_LIBAVCODEC)
        if ( avformatEncoder == NULL )
        {
                avformatEncoder = av_alloc_format_context();
                if ( avformatEncoder )
                {
                        avformatEncoder->oformat = guess_format( "dv", NULL, NULL );
                        AVStream* vst = av_new_stream( avformatEncoder, 0 );
                        vst->codec->codec_type = CODEC_TYPE_VIDEO;
                        vst->codec->codec_id = CODEC_ID_DVVIDEO;
                        vst->codec->bit_rate = 25000000;
                        vst->start_time = 0;

on écrit à la place

bool Frame::CreateEncoder( bool isPAL, bool isWide )
{
        pthread_mutex_lock( &avcodec_mutex );
#if defined(HAVE_LIBAVCODEC)
        if ( avformatEncoder == NULL )
        {
                avformatEncoder = avformat_alloc_context();
                if ( avformatEncoder )

                {
                        avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL );
                        AVStream* vst = av_new_stream( avformatEncoder, 0 );
                        vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
                        vst->codec->codec_id = CODEC_ID_DVVIDEO;
                        vst->codec->bit_rate = 25000000;
                        vst->start_time = 0;

on retape make puis en tant que root

make install

on rajoutera dans le fichier /etc/ld.so.conf la ligne /usr/local/lib/kino-gtk2 puis on tape ldconfig

L'exportation au format divx marche enfin très bien  il utilise pour cela ffmpeg (présenté dans ma page outils de base pour la vidéo). Cela dit vous ne pouvez pas saisir de paramètres de transcodage à ffmeg, ils sont figés, on peut modifier cela pour que ça corresponde à vos attentes.

Editer le fichier kino-1.3.4/scripts/exports/ffmpeg_divx.sh vous trouverez les lignes

        # Profiles
        echo "Profile: Best Quality (native size, interlace, VBR)"
        echo "Profile: High Quality (full size, progressive, VBR, QPEL)"
        echo "Profile: Medium Quality (medium size, progressive, VBR)"
        echo "Profile: Broadband Quality (medium size, progressive, 564 kb/s)"
        echo "Profile: Low Quality (small size, 12fps, progressive, 128 kb/s)"

Puis

        # Run the command
        case "$profile" in
                "0" )   ffmpeg -threads $threads -f dv -i pipe: $hq $interlace -g 300 -vtag DIVX -s $normalisation \
                        -aspect $aspect -qscale 2 \
                        -acodec "$acodec" -ab 192$audio_kilo -y "$file".avi ;;
                "1" )   ffmpeg -threads $threads -f dv -i pipe: $hq $progressive -g 300 -vtag DIVX -s $full_res \
                        -aspect $aspect -qscale 2 $qpel \
                        -acodec "$acodec" -ab 192$audio_kilo -y "$file".avi ;;
                "2" )   ffmpeg -threads $threads -f dv -i pipe: $hq $progressive -g 300 -vtag DIVX -s $med_res \
                        -aspect $aspect -qscale 4 -acodec "$acodec" -ar 44100 -ab 128$audio_kilo -y "$file".avi ;;
                "3" )   ffmpeg -threads $threads -f dv -i pipe: $hq $progressive -g 120 -g 300 -vtag DIVX -s $med_res \
                        -aspect $aspect -b 500$kilo -acodec "$acodec" -ar 32000 -ab 64$audio_kilo -y "$file".avi ;;
                "4" )   ffmpeg -threads $threads -f dv -i pipe: $hq $progressive -r 12 -g 120 -vtag DIVX -s $low_res \
                        -aspect $aspect -b 96$kilo -acodec "$acodec" -ac 1 -ar 22050 -ab 32$audio_kilo -y "$file".avi ;;
        esac

Vous pouvez très facilement adapter ou créer un profil particulier

FFMPEG supporte les options suivantes
-b bitrate vidéo
-acodec mp3 -ab bitrate audio mp3
-s taille de l'image

Pour le reste reportez vous à la doc de ffmpeg (man).

Recommencez la compilation de kino...

Utilisation

Voilà ce que ça donne en tapant maintenant

kino

Mode Acquisition


Voilà pour la configuration (Menu Editions->Préférences). Onglet IEEE 1394. Je me suis contenté de charger le module raw1394 par défaut kino utilise maintenant libiec61883 au lieu de dv1394, si vous avez néanmoins des soucis d'export vers le caméscope, vous pouvez toujours compiler kino avec l'option --with-dv1394


Onglet de configuration Acquisition pour définir le format des fichiers à manipuler (éviter DV type 1 non lisible par aviplay ou MPlayer, par défaut c'est le DV brut qui est actif).  Vous pouvez décocher la case Auto Séparation des fichiers si vous ne voulez pas que Kino crée un fichier pour chaque scène (cette option est néanmoins intéressante pour le DVD authoring pour créer un chapitre pour chaque scène)


On sort des pages de configuration. Onglet Montage pour monter sa vidéo.  Pour avoir une idée plus poussée du montage avec kino, voir la page correspondante.


Onglet Timeline

Onglet Découper



L'onglet Effets pour gérer les transitions entre les scènes.



Export vers un fichier MPEG. On a le choix entre les codecs suivants generic MPEG1, standard VCD, VCD,  generic MPEG2, standard SVCD, user SVCD et DVD, à noter la possibilité de création d'un xml pour le dvdauthoring. L'export au format divx au format  se fait à partir de l'onglet Autre,


Export vers autres formats, on  a le choix vers différents formats compatibles MPEG-4 avec les encodeurs mencoder ou ffmpeg



Et celui d'exportation vers le caméscope DV (onglet Export puis IEEE1394)


Export d'une vidéo "montée" vers le caméscope DV qui fait ainsi office de magnétoscope numérique. Pour mon caméscope Canon, j'ai du me placer en mode Lecture, pour accepter le flux vidéo. L'exportation ne marche que si vous avez une carte ieee1394 compatible OHCI.

Dernière précision au niveau de la barre de menu principal, Fichier à ouvrir, Kino n'accepte que les fichiers au format DV (enregistrés avec dvgrab par exemple) et Quicktime.

Utilisation de kino

Maintenant passez à la page kino qui vous présente plus en détail l'utilisation de kino.

[Retour page d'accueil FUNIX]