Encodage video

Bonsoir à tous,

Voilà j’ai quelques Go de films sorti tous droits de mon camescope la qualité est assez sympa. Je lance donc kino m’éclate avec les quelques plugins pour faire du montage et je souhaite enfin encoder les vidéos. Bon la pas trop de soucis j’ai pas mal de choix.

Le seul problème c’est le résultat, en fait la qualité est plutôt pas terrible je perd énormément mais si je veux une qualité supérieur ben je perd en compression. Bref l’histoire du serpent qui se mord la queue.

Donc la question est comment encoder mes vidéos et avec quel encodage afin de garder une bonne qualité tout en ayant un ratio de compression honorable.

Je ne demande pas de garder une qualité équivalente à celle sortie par le camescope (à moins que ce soit faisable) mais quelque chose qui soit sympa.

Je suis ouvert à toutes propositions pour le type d’encodage le format etc…

Merci :wink:

Je crois que c’est le Xvid qui donne les meilleurs résultats.
Tu peux compresser ta vidéo avec mencoder ou avidemux (qui utilise mencoder).

Après tout dépend de la taille de fichier que tu peux te permettre et du poids de ta vidéo.

Après pour faire des dvd sympas avec chapîtres et tout : doc.ubuntu-fr.org/matroska

Merci je vais jeter un oeil pour information la video encodé en ogg fait environ 90mo
la durée est de 20min et j’ai environ 4go de video en DV j’ai encodé en xvid mais le résultat tiens sur 2go

Pour la meilleure qualité : x264 !

Tu peux me donner plus d’infos sur ce codec?

Est-ce qu’on peux le lire facilement après car l’objectif de ma video est d’être partagé avec les potes avec qui j’ai fait la vidéo.

C’est un codeur libre faisant partie du projet VideoLAN et permettant de coder des flux vidéos H.264 (connu également sous le nom MPEG-4 AVC).

On peut le lire les flux H.264 facilement avec n’importe quel lecteur qui utilise ffmpeg (n’importe quel lecteur sous Linux).
Sous Windows, il faut installer un décodeur DirectShow supplémentaire si tu souhaites utiliser un lecteur utilisant DirectShow (la plupart des lecteur sous Windows). Sinon tu peux installer VLC ou MPlayer pour Windows.

La qualité d’un flux vidéo en H.264 est largement supérieure à celle d’un flux video MPEG-4 AVS (Xvid ou DivX par exemple). Cependant le temps de codage est beaucoup plus long.

Si ton objectif principal est que ce soit facilement partageable, fais plutôt un DVD.

Ben voilà je viens de finir une première passe 650Mo pour une fichier de 20min par contre la qualité est identique en gros à celle en DV vraiment impressionnant :wink:

Bon comme j’ai besoin de réduire la taille je vais voir un peu ce que ça donne :wink:

salut

je fais souvent joujou avec kino
ce que j’aime bien faire c’est sortir le master en DVD (1/4 du dv)
et ensuite éventuellement en Xvid

en général je ne vois pas de baisse de qualité
récemment j’ai même découvert avidemux qui est très rigolo pour encoder en cliquant

Méfies toi de l’encodage H.264 dont la qualité est indéniable mais dont la lecture n’est pas simple, je n’ai vu à ce jour aucun lecteur de salon les lisant. Pour encoder personnellement, j’utilise mencoder en 2 passes avec
-ovc lavc -lavcopts vcodec=mpeg4 avec un bitrate=(HxL)/325 à (HxL)/350 où H et L sont les largeur et hauteur.

j’utilise mencoder en 2 passes avec
-ovc lavc -lavcopts vcodec=mpeg4 avec un bitrate=(HxL)/325 à (HxL)/350 où H et L sont les largeur et hauteur.

Le bitrate video par défaut de mencoder, je crois est de 800. J’utilisais plutôt 900.

Pour le fun, le script fait par moi que j’utilisais quand je n’arrivais pas à avoir crop et aspect correct avec avidemux (qui utilise lavc, xvid et bien d’autres).

##################################################################################################################
#!/bin/bash
#######################################

Nautilus script

Encodage de mpeg en avi

Mplayer, mencoder, transcode, zenity

#######################################
for arg
do

identifie le type video de l’argument

typevid=file -bi "$arg"

Si l’argument est video/mp2p

if [ $typevid = video/mp2p ]; then

identifie les pistes audio

audioinfo()
{
zenity --info --title=“INFO” --text="Identifier ID_AUDIO \n ex: 128"
mplayer -identify -vc null -ac null -frames 0 “$arg” | grep “ID_AUDIO_ID=” | zenity --text-info & atrack=zenity --entry --title="ENTREE" --text="Entrer la piste audio \n ex 128" 2>&1
zenity --info --title=“INFO” --text="Teste la piste audio"
mplayer “$arg” -ss 00:02:00 -aid $atrack
zenity --question --title=“QUESTION” --text="Audio correct ?"
if [ $? = 0 ]; then

Amplification audio

ampli=zenity --entry --title="ENTREE" --text="Entrer le facteur d'AMPLIFICATION \n ex: 5 (0 - 10)" 2>&1

Recherche de l’aspect video

aspect=mplayer -identify -vc null -frames 0 "$arg" | cat | grep ^"ID_VIDEO_ASPECT" | awk '{print}' | cut -d= -f2

zenity --info --title=“INFO” --text=“Recherche du crop \n lire jusqu’à scene claire \n … puis Echap”

Recherche du crop

crop=mplayer "$arg" -vf cropdetect | tail -n 4 | head -n 1 | cat | awk '{print $22}'| cat | cut -d")" -f1 | cut -d= -f2

crop=mplayer "$arg" -ss 00:02:00 -vf cropdetect | tail -n 4 | head -n 1 | cat | cut -d= -f2 | cut -d")" -f1
zenity --info --text="Vérification du crop"
mplayer “$arg” -aid $atrack -ss 00:02:00 -vf crop=$crop
zenity --question --title=“QUESTION” --text="Crop correct ?"
if [ $? = 0 ]; then
vbitrate=zenity --entry --title="ENTREE" --text="Entrer le BITRATE VIDEO \n ex: 900 \n (defaut 800)" 2>&1

Crée un fichier texte des paramètres entrés

echo parametres de transcodage: >> "${arg/%./.txt}"
echo titre = “$arg” >> "${arg/%.
/.txt}"
echo vbitrate = $vbitrate >> "${arg/%./.txt}"
echo audio = $atrack, ampli = $ampli >> "${arg/%.
/.txt}"
echo crop = $crop >> "${arg/%./.txt}"
echo autoaspect >> "${arg/%.
/.txt}"
else zenity --info --title=“INFO” --text=“Crop incorrect \n Recommencer” && exit
fi
else zenity --info --title=“INFO” --text=“Audio incorrect \n Recommencer” && exit
fi

Encodage mencoder lavc 2 passes

}
lavcenc()
{

passe 1

mencoder “$arg” -aid $atrack -oac mp3lame -lameopts vbr=3:vol=$ampli -ovc lavc -lavcopts vcodec=mpeg4:vhq:v4mv:vqmin=2:vpass=1:vbitrate=$vbitrate:autoaspect:turbo -vf crop=$crop -ffourcc DX50 -passlogfile “${arg/%.*/.log}” -o /dev/null | nice zenity --progress --auto-close --pulsate --title=“MENCODER lavc” --text=“Encodage en mpeg4 de: \n … “$arg” … \n Bitrate video = $vbitrate \n Audio = $atrack \n Volume = ampli x $ampli \n Crop = $crop \n Autoaspect \n Qualité VHQ \n PASSE 1 (turbo) … en cours”

passe 2

mencoder “$arg” -aid $atrack -oac mp3lame -lameopts vbr=3:vol=$ampli -ovc lavc -lavcopts vcodec=mpeg4:vhq:v4mv:vqmin=2:vpass=2:vbitrate=$vbitrate:autoaspect -vf crop=$crop -ffourcc DX50 -passlogfile “${arg/%./.log}" -o "${arg/%./.avi}” | nice zenity --progress --auto-close --pulsate --title=“MENCODER lavc” --text=“Encodage en mpeg4 de: \n … “$arg” … \n Bitrate video = $vbitrate \n Audio = $atrack \n Volume = ampli x $ampli \n Crop = $crop \n Autoaspect \n Qualité VHQ \n PASSE 2 … en cours”
}

Encodage mencoder xvid 2 passes

xvidenc()
{

passe 1

mencoder “$arg” -aid $atrack -oac mp3lame -lameopts vbr=3:vol=$ampli -ovc xvid -xvidencopts chroma_opt:vhq=4:bvhq=1:quant_type=mpeg:pass=1:bitrate=$vbitrate:autoaspect:turbo -vf crop=$crop -passlogfile “${arg/%.*/.log}” -o /dev/null | nice zenity --progress --auto-close --pulsate --title=“MENCODER xvid” --text=“Encodage en mpeg4 de: \n … “$arg” … \n Bitrate video = $vbitrate \n Audio = $atrack \n Volume = ampli x $ampli \n Crop = $crop \n Autoaspect \n Qualité VHQ \n PASSE 1 (turbo) … en cours”

passe 2

mencoder “$arg” -aid $atrack -oac mp3lame -lameopts vbr=3:vol=$ampli -ovc xvid -xvidencopts chroma_opt:vhq=4:bvhq=1:quant_type=mpeg:pass=2:bitrate=$vbitrate:autoaspect -vf crop=$crop -passlogfile “${arg/%./.log}" -o "${arg/%./.avi}” | nice zenity --progress --auto-close --pulsate --title=“MENCODER xvid” --text=“Encodage en mpeg4 de: \n … “$arg” … \n Bitrate video = $vbitrate \n Audio = $atrack \n Volume = ampli x $ampli \n Crop = $crop \n Autoaspect \n Qualité VHQ \n PASSE 2 … en cours”
}

Encodage transcode 2 passes scale fixé à 576x328 (préférer dvd::rip qui fait mieux)

transcodeenc()
{
nice transcode -i “$arg” -y xvid4 -Z 576x328,fast -w $vbitrate -V -N 0x55 -b 128 -s 3 -o /dev/null -R 1 | nice zenity --progress --pulsate --auto-close --title=“TRANSCODE” --text=""$arg" \n Vbitrate = $vbitrate \n Resolution = 576x328 \n Passe 1 … en cours"
nice transcode -i “$arg” -y xvid4 -Z 576x328,fast -w $vbitrate -V -N 0x55 -b 128 -s 3 -o “${arg/%.*/.avi}” -R 2 | nice zenity --progress --pulsate --auto-close --title=“TRANSCODE” --text=""$arg" \n Vbitrate = $vbitrate \n Resolution = 576x328 \n Passe 2 … en cours"
rm -f divx4.log
}

Boîte de choix

encode=zenity --title="MPEG to AVI" --text="MPEG to AVI 2 passes (Mencoder/Transcode)" --list --radiolist --height="250" --width="350" --column="Selection" \ --column="Codec"\ --column="Encodage"\ FALSE "lavc" "Encodage mencoder lavc"\ TRUE "xvid" "Encodage mencoder xvid"\ FALSE "transcode" "Encodage transcode xvid"\ | sed 's/ max//g'
if [ “$encode” = “lavc” ]; then
audioinfo && lavcenc && rm -f “${arg/%./.log}" && zenity --info --title=“INFO” --text="Encodage … OK"
elif [ “$encode” = “xvid” ]; then
audioinfo && xvidenc && rm -f "${arg/%.
/.log}” && zenity --info --title=“INFO” --text="Encodage … OK"
elif [ “$encode” = “transcode” ]; then
zenity --info --title=“INFO” --text="Encodage video et toutes pistes audio"
vbitrate=zenity --entry --title="ENTREE" --text="Entrer le BITRATE VIDEO \n ex: 900 \n (defaut 800)" 2>&1
transcodeenc && zenity --info --title=“INFO” --text="Encodage … OK"
else exit
fi
else zenity --info --title=“INFO” --text=“Argument non video/mp2p \n Encodage annulé” && exit
fi
done
##################################################################################################################

Le H264 est le codec utilisé pour la diffusion TNT HD, il va donc se démocratiser très vite.
Mais le codec ce n’est pas tout pour le rapport qualité/taille.
Il faut aussi voir la résolution! (et le frame rate)
Si c’est pour afficher sur une TV CRT, tu peux réduire en 800x600 (voire moins), sur un écran fullHD c’est du 1080.
Donc tout dépend sur quoi tu veux lire ces vidéos.
Et n’oublie pas que de la HD en 1080 demande une bonne puissance de calcul pour que ce soit fluide!

Merci pour tous ces conseils je vais voir ce qui m’arrange le plus dans tout ça en fait l’objectif est de pouvoir encoder les videos dans différents format pour différents supports faire un DVD pour les sorties ou encore et c’est la ce qui m’intéresse le plus pouvoir encoder donc la vidéo pour la diffusion sur un site perso de manière à ce que mes potes n’attendent pas 6 mois avant de voir la vidéo :smiley:

Donc si vous avez des idées pour encoder pour le web je suis preneur :wink:

merci encore :wink:

La doc de mplayer fourmie d’astuces pour faire tout ce que tu veux.

Par exemple : mplayerhq.hu/DOCS/HTML/fr/me … mpeg4.html

Pour mon site (clefagreg.dnsalias.org), pour être sûr que tout le monde puisse lire les video, j’ai encodé en mpeg2 et en flv :frowning:, sinon ça ne ratait pas, plein de mesages disant qu’on n’arrivait pas à lire les videos…