Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

video:cinelerra:pluginlprod2 [2013/10/24 17:56] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Le plugin Lprod.org pour Cinelerra ======
  
 +Ce plugin est la réponse informatique d'un programmeur comme Eric Seigne à un quidam utilisateur Laurent Bellegarde pour "faire des rendus plus simples avec un simple clic de souris"​ depuis Cinelerra sans taper de lignes de commandes.
 +
 +Ce travail particulièrement génial a pour but de permettre à des personnes de plus en plus débutantes d'​utiliser et de s'​approprier un logiciel comme Cinelerra.
 +
 +===== Améliorer les exports vidéos (Rendus) =====
 +
 +Vous savez sans aucun doute exporter votre travail dans un fichier mpeg (par exemple) via l'​export yuv4mpeg. Là vous avez deux boites déroulantes "​mpeg2enc"​ et "​ffmpeg"​ ... si vous voulez modifier les commandes vous pouvez le faire à la main.
 +
 +Le problème se pose lorsque vous avez envie de rajouter 4 ou 5 commandes que vous utilisez souvent ... si vous voulez les mettre dans les boites déroulantes il faut absolument modifier le code source de cinelerra (fichier fileyuv.C) et recompiler tout !
 +
 +Ce soir j'ai bossé sur un patch un peu plus propre qui permet justement à l'​utilisateur d'​ajouter ses propres commandes "​custom"​ dans un fichier de configuration.
 +
 +Pour celà (lorsque vous utilisez la version patchée de cinelerra) vous avez juste à saisir dans votre fichier ~/​.bcast/​exports_fileyuv_options.rc autant de lignes que vous voulez, comme par exemple:
 +
 +<​code>​
 +(DVD)               | cinelerra_ffmpeg.sh 0 %
 +(VCD)               | cinelerra_ffmpeg.sh 1 %
 +(WMV1 320x240) ​     | cinelerra_ffmpeg.sh 2 %
 +(WMV1 640x480) ​     | cinelerra_ffmpeg.sh 3 %
 +(WMV2 320x240) ​     | cinelerra_ffmpeg.sh 4 %
 +(WMV2 640x480) ​     | cinelerra_ffmpeg.sh 5 %
 +(MSMpegV2 320x240) ​ | cinelerra_ffmpeg.sh 6 %
 +(MSMpegV2 640x480) ​ | cinelerra_ffmpeg.sh 7 %
 +(RealVideo 320x240) | cinelerra_ffmpeg.sh 8 %
 +(384x288 DivX 4/5 700bps) ​ | cinelerra_mencoder.sh 0 %
 +(640x480 DivX 4/5 2000bps) | cinelerra_mencoder.sh 1 %
 +(640x480 DivX 4/5 7000bps) | cinelerra_mencoder.sh 2 %
 +</​code>​
 +
 +Avec des scripts cinelerra_ffmpeg.sh comme ceci:
 +
 +<​code>​
 +#!/bin/sh
 +# By Ruda Matousek, October 5th 2004
 +# matousek(AT)utia.cas.cz
 +# used in kino project, updated for cinelerra exports
 +# by Eric Seigne, 2006 04 10 (http://​fr.lprod.org)
 +
 +usage()
 +{
 +    # Title
 +    echo "​Title:​ DivX using FFMpeg"​
 +
 +    # Usable?
 +    command -v ffmpeg 1> /dev/null 2>&1
 +    [ $? -eq 0 ] && echo Status: Active || echo Status: Inactive
 +    ​
 +    # Type
 +    echo Flags: single-pass file-producer
 +    ​
 +    # Profiles
 +    echo "​Profile:​ DVD"
 +    echo "​Profile:​ VCD"
 +    echo "​Profile:​ WMV1 320x240"​
 +    echo "​Profile:​ WMV1 640x480"​
 +    echo "​Profile:​ WMV2 320x240"​
 +    echo "​Profile:​ WMV2 640x480"​
 +    echo "​Profile:​ MSMpegV2 320x240"​
 +    echo "​Profile:​ MSMpegV2 640x480"​
 +    echo "​Profile:​ RealVideo 320x240"​
 +}
 +
 +execute()
 +{
 +    # add -hq if ffmpeg support it
 +    FFMPEG=ffmpeg
 +    # Arguments
 +    profile="​$1"​
 +    file="​$2"​
 +    [ "​x$file"​ = "​x"​ ] && file="​cinelerra_export_"​`date +%Y-%m-%d_%H.%M.%S`
 +    ​
 +    # Run the command
 +    # Note that the -cache 8192 parameter is required to force mencoder
 +    # to recognize the DV stream on STDIN.
 +    case "​$profile"​ in 
 + "​0"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -target dvd -ilme -ildct -f mpeg2video "​$file"​ ;;
 + "​1"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -target vcd -f mpeg2video "​$file"​ ;;
 + "​2"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec wmv1 -s 320x240 "​$file"​ ;;
 + "​3"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec wmv1 -s 640x480 "​$file"​ ;;
 + "​4"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec wmv2 -s 320x240 "​$file"​ ;;
 + "​5"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec wmv2 -s 640x480 "​$file"​ ;;
 + "​6"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec msmpegv2 -s 320x240 "​$file"​ ;;
 + "​7"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec msmpegv2 -s 640x480 "​$file"​ ;;
 + "​8"​ )   ​${FFMPEG} -f yuv4mpegpipe -i - -y -vcodec rv10 -s 320x240 "​$file"​ ;;
 +    esac
 +}
 +
 +[ "​$1"​ = "​--usage"​ ] || [ -z "​$1"​ ] && usage "​$@"​ || execute "​$@"​
 +</​code>​
 +
 +Et le tour est joué, vous pouvez créer autant de scripts d'​exports que vous voulez - y compris avec des logiciels qui n'​existent pas encore - et cinelerra saura les utiliser ! Magique ? pas tant que ça, l'​idée est de kino, regardez les fichiers /​usr/​lib/​kino/​scripts/​exports/​*.sh ...
 +
 +Bon, maintenant on croise les doigts pour que les développeurs de cinelerra acceptent de commiter ce patch dans l'​upstream !
 +
 +{{:​video:​cinelerra:​cinelerra_custom_exports.png|:​video:​cinelerra:​cinelerra_custom_exports.png}}
 +
 +===== Contenu du patch =====
 +
 +Je publie ici l'​état du patch au 29 mai 2006 pour éviter tout pb si jamais ...
 +
 +<​code>​
 +diff -u hvirtual-2.0.0/​cinelerra/​fileyuv.C hvirtual-2.0.0.patch/​cinelerra/​fileyuv.C
 +--- hvirtual-2.0.0/​cinelerra/​fileyuv.C 2006-05-20 12:​05:​09.000000000 +0200
 ++++ hvirtual-2.0.0.patch/​cinelerra/​fileyuv.C 2006-05-29 22:​11:​59.000000000 +0200
 +@@ -360,6 +360,8 @@
 + ​ delete pipe_config;​
 + ​ delete mpeg2enc;
 + ​ delete ffmpeg;
 ++ //erics
 ++ delete custom;
 + }
 + 
 + int YUVConfigVideo::​create_objects()
 +@@ -407,6 +409,33 @@
 + ​ ffmpeg->​add_item(new BC_MenuItem("​(DVD) | ffmpeg -f yuv4mpegpipe -i - -y -target dvd -ilme -ildct -hq -f mpeg2video %"));
 + ​ ffmpeg->​add_item(new BC_MenuItem("​(VCD) | ffmpeg -f yuv4mpegpipe -i - -y -target vcd -hq -f mpeg2video %"));
 + 
 ++ /* eric.seigne@ryxeo.com http://​lprod.org patch */
 ++ y += 25;
 ++ x -= 160;
 ++ custom = new PipePreset(x,​ y, "​custom",​ pipe_config);​
 ++ add_subwindow(custom);​
 ++
 ++ FILE *flux;
 ++ char buff[1024];
 ++ char conffile[1024];​
 ++ sprintf(conffile,​ "​%s/​.bcast/​exports_fileyuv_options.rc",​ getenv("​HOME"​));​
 ++ flux = fopen(conffile,"​r"​);​
 ++ if(flux) {
 ++   fprintf(stderr,"​file %s openned",​conffile);​
 ++   fgets(buff, 1024, flux);
 ++   while(!feof(flux)) {
 ++     fprintf(stderr,"​ ->%s added",​buff);​
 ++     custom->​add_item(new BC_MenuItem(buff));​
 ++     fgets(buff, 1024, flux);
 ++   }
 ++   pclose(flux);​
 ++ }
 ++ else {
 ++   perror("​fopen"​);​
 ++   fprintf(stderr,"​ERROR:​ file %s can't be openned",​conffile);​   ​
 ++ }
 ++ /* end eric.seigne@ryxeo.com http://​lprod.org patch */
 ++
 + ​ add_subwindow(new BC_OKButton(this));​
 + ​ add_subwindow(new BC_CancelButton(this));​
 + ​ show_window();​
 +diff -u hvirtual-2.0.0/​cinelerra/​fileyuv.h hvirtual-2.0.0.patch/​cinelerra/​fileyuv.h
 +--- hvirtual-2.0.0/​cinelerra/​fileyuv.h 2006-05-20 12:​05:​09.000000000 +0200
 ++++ hvirtual-2.0.0.patch/​cinelerra/​fileyuv.h 2006-05-29 21:​37:​45.000000000 +0200
 +@@ -61,6 +61,8 @@
 + ​ PipeConfig *pipe_config;​
 + ​ PipePreset *mpeg2enc;
 + ​ PipePreset *ffmpeg;
 ++ //erics
 ++ PipePreset *custom;
 + };
 +</​code>​
 +
 +Et le script cinelerra_mencoder.sh
 +<​code>​
 +#!/bin/sh
 +# By Ruda Matousek, October 5th 2004
 +# matousek(AT)utia.cas.cz
 +# used in kino project, updated for cinelerra exports
 +# by Eric Seigne, 2006 04 10 (http://​fr.lprod.org)
 +
 +usage()
 +{
 +        # Title
 +        echo "​Title:​ DivX using MEncoder"​
 +
 +        # Usable?
 +        command -v mencoder 1> /dev/null 2>&1
 +        [ $? -eq 0 ] && echo Status: Active || echo Status: Inactive
 +
 +        # Type
 +        echo Flags: single-pass file-producer
 +
 +        # Profiles
 +        echo "​Profile:​ 384x288 DivX 4/5 700bps, mp3 128bps"​
 +        echo "​Profile:​ 640x480 DivX 4/5 2000bps, mp3 128bps"​
 +        echo "​Profile:​ 640x480 DivX 4/5 7000bps, mp3 224bps"​
 +}
 +
 +execute()
 +{
 +        # Arguments
 +        profile="​$1"​
 +        file="​$2"​
 +        [ "​x$file"​ = "​x"​ ] && file="​cinelerra_export_"​`date +%Y-%m-%d_%H.%M.%S`
 +
 +        # Run the command
 +        # Note that the -cache 8192 parameter is required to force mencoder
 +        # to recognize the DV stream on STDIN.
 +        case "​$profile"​ in 
 +                "​0"​ )   ​mencoder - -quiet -cache 8192 -aspect 4:3 -vf harddup,​scale=384:​288 -ovc lavc -oac lavc -lavcopts vcodec=mpeg4:​acodec=mp3:​vhq:​vbitrate=700:​abitrate=128 -o "​$file"​ ;;
 +                "​1"​ )   ​mencoder - -quiet -cache 8192 -aspect 4:3 -vf harddup,​pp=ci,​scale=640:​480 -ovc lavc -oac lavc -lavcopts vcodec=mpeg4:​acodec=mp3:​vhq:​vbitrate=2000:​abitrate=128 -o "​$file"​ ;;
 +                "​2"​ )   ​mencoder - -quiet -cache 8192 -aspect 4:3 -vf harddup,​pp=ci,​scale=640:​480 -ovc lavc -oac lavc -lavcopts vcodec=mpeg4:​acodec=mp3:​vhq:​vbitrate=7000:​abitrate=224 -o "​$file"​ ;;
 +        esac
 +}
 +
 +[ "​$1"​ = "​--usage"​ ] || [ -z "​$1"​ ] && usage "​$@"​ || execute "​$@"​
 +</​code>​