[TUTO] Encodage video - Pour les pro
Ce topic n'est pas destiner a monsieur tout le monde , vous devez savoir utiliser une console
si ce n'est pas le cas passez votre chemin ou utiliser l'un des logitiel si dessous :
Vous avez utiliser Xvid4PSP ! mais c'est une usine a gaz ...
Vous avez utiliser PSPvideo9 ! mais vous le trouvez incomplet ...
Vous avez utiliser MediaManager ! mais il n'encode pas en bonne qualitée
Vous avez utiliser WindowMediaPlayer ! mais il n'encode pas -_-
Alors voici une solution (a la brute force) pour encoder rapidement avec une qualité irréprochable qui marche sous Linux Mac et Window !
Pourquoi utiliser les ligne de commande ?
Pourquoi ne pas utiliser les ligne de commande ?
________________
FFmpeg est un encodeur , open source , multi plateforme , régulièrement mis a jour , il supporte a peu pres tout les codec.
____________________________
(Window)
________________________________Code Source
Étapes :
dans les exemple si dessous ffmpeg doit être dans le même dossier que la vidéo ou dans un dossier défini par une variable d'environnement (pour window : window/system32/ ou window/)
on va commencer par un encodage basique puis je complexifierait la tache (en vous expliquant)
Tout d'abord il faut savoir que les commandes s'écrivent de la sorte :
programme -option argument -option argument /.../ fichierDeSortie
pour lancer un encodage basic écrivez ceci dans l'invité de commande :
ffmpeg -i maVideo.avi -acodec libfaac -ab 128kb -vcodec libx264 -coder 1 -b 1400kb -s 480x272 sortie.mp4
options utilisées ici :
i : mon fichier d'entrée est ...
acodec : la librairie a utiliser pour encoder l'audio
ab : débit binaire utiliser pour la piste son
vcodec : librairie utiliser pour encoder la vidéo
coder : X264 mode Baseline (je suppose ^^)
b : débit binaire utiliser pour la piste vidéo
s : la résolution de notre vidéo (320x240|480x272|720x480 ...)
il se peut que l'encodage donne une vidéo que la PSP ne peut pas lire. cela est du au fait qu'en l'absence de paramètre ffdshow prend comme modele la video d'entrée , or si votre vidéo d'entré est a une fréquence d'image de 5fps la PSP ne l'acceptera pas on va donc forcer quelque paramètres pour etre certain d'obtenir un résultats lisible :
ffmpeg -i maVideo.avi -acodec libfaac -ab 128kb -ac 2 -ar 44100 -vcodec libx264 -coder 1 -b 1400kb -s 720x480-r 30 -y sortie.mp4
ac : canaux audio
ar : fréquence audio (22050|44100|48000)
r : image par seconde (15|23.976|29.97|30)
y : pour écraser sans confirmation l'ancien fichier
Vous pouvez utiliser d'autre option utiles :
ss : on commence a encoder a HH:MM:SS
t : on encode HH:MM:SS de vidéo
____________
Mencoder est aussi un très bon programme comme FFmpeg il est open source, multi plateforme , plein de codec , il reprend le code source de FFmpeg et y ajoute certaine fonctionnalité (extraction de VOB etc..) donc avec ces 2 outils vous devriez vous en sortir
____________________________
(Window)
________________________________Code Source
Pour passer ses argument a Mencoder , il faut proceder de la sorte :
Programme entrée.avi -oac codecAudio option:paramètre option:param... -ovc codecVideo option:paramètre... -vf filtreVideo -o sortie.mp4
plus concretement :
mencoder entree.avi -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:acodec=aac -o sortie.mp4
option utilisées ici :
entrée.avi < pas de - c'est donc un fichier d'entrée
oac la librairie qui encodera l'audio sera la librairie AVC
ovc la librairie qui encodera la vidéo sera la librairie AVC (encore ^^)
lavcopts option pour envoyer des paramètre a la lAVC
vcodec=mpeg4:acodec=aac c'est assez explicite ^^
o le fichier de sortie est : sortie.mp4
appliquation : (j'ai bien gualéré pour y arriver mais voila ^^)
mencoder entree.avi -vf scale=480:272 -oac faac -faacopts br=128:object=2:raw -ovc x264 -x264encopts bitrate=650 -of lavf -lavfopts format=psp -o sortie.mp4
ici la video est resizé a la taile de l'ecran , le codec audio est l'AAC a 128kb/s en stéréo , le codec video est x264 (aussi connu sous le nom de AVC) avec un bitrate de 650kb/s () on ne s'oqupe pas trop du stream audio on pourrai le resamplé ou cas ou la fréquence d'entrée ne soit pas supportée par la PSP si c'est le cas on ajoute :
-af lavcresample=48000 ou 44000 ou 22000 etc...
je tente de trouver comment encoder en 720*480 avec Mencoder (oui j'ai une slim) mais apparament la PSP refuse de lire le fichier ... (mauvais level pour le AVC ?) en tout cas Mencoder a l'aire de gere les VOB (dédicaces : sora ^^)
edit : yeah ! c''etait bien un probleme de level , il faut utiliser le level 3.0 :
mencoder dj.mp4 -vf scale=720:480 -oac faac -faacopts br=128:object=2:raw -ovc x264 -x264encopts bitrate=650:level_idc=30 -of lavf -lavfopts format=psp -o sortie.mp4
si ce n'est pas le cas passez votre chemin ou utiliser l'un des logitiel si dessous :
Vous avez utiliser Xvid4PSP ! mais c'est une usine a gaz ...
Vous avez utiliser PSPvideo9 ! mais vous le trouvez incomplet ...
Vous avez utiliser MediaManager ! mais il n'encode pas en bonne qualitée
Vous avez utiliser WindowMediaPlayer ! mais il n'encode pas -_-
Alors voici une solution (a la brute force) pour encoder rapidement avec une qualité irréprochable qui marche sous Linux Mac et Window !
Pourquoi utiliser les ligne de commande ?
- Vous avez le contrôle sur toutes les options d'encodage
- Lorsqu'un encodage foire vous savez pourquoi (vous ne vous retrouvez pas avec un 'an ERROR as occured' sur les bras)
- Vous pouvez automatisée vos conversions avec un fichier .bat
- Par ce que sa fait class :3
Pourquoi ne pas utiliser les ligne de commande ?
- Par ce qu'il ne permet pas d'encoder l'audio en AAC-HEv2
- Par ce qu'on n'a jamais utilisée de ligne de commande de sa vie
________________

FFmpeg est un encodeur , open source , multi plateforme , régulièrement mis a jour , il supporte a peu pres tout les codec.
____________________________

________________________________Code Source
Étapes :
dans les exemple si dessous ffmpeg doit être dans le même dossier que la vidéo ou dans un dossier défini par une variable d'environnement (pour window : window/system32/ ou window/)
on va commencer par un encodage basique puis je complexifierait la tache (en vous expliquant)
Tout d'abord il faut savoir que les commandes s'écrivent de la sorte :
programme -option argument -option argument /.../ fichierDeSortie
pour lancer un encodage basic écrivez ceci dans l'invité de commande :
ffmpeg -i maVideo.avi -acodec libfaac -ab 128kb -vcodec libx264 -coder 1 -b 1400kb -s 480x272 sortie.mp4
options utilisées ici :
i : mon fichier d'entrée est ...
acodec : la librairie a utiliser pour encoder l'audio
ab : débit binaire utiliser pour la piste son
vcodec : librairie utiliser pour encoder la vidéo
coder : X264 mode Baseline (je suppose ^^)
b : débit binaire utiliser pour la piste vidéo
s : la résolution de notre vidéo (320x240|480x272|720x480 ...)
il se peut que l'encodage donne une vidéo que la PSP ne peut pas lire. cela est du au fait qu'en l'absence de paramètre ffdshow prend comme modele la video d'entrée , or si votre vidéo d'entré est a une fréquence d'image de 5fps la PSP ne l'acceptera pas on va donc forcer quelque paramètres pour etre certain d'obtenir un résultats lisible :
ffmpeg -i maVideo.avi -acodec libfaac -ab 128kb -ac 2 -ar 44100 -vcodec libx264 -coder 1 -b 1400kb -s 720x480-r 30 -y sortie.mp4
ac : canaux audio
ar : fréquence audio (22050|44100|48000)
r : image par seconde (15|23.976|29.97|30)
y : pour écraser sans confirmation l'ancien fichier
Vous pouvez utiliser d'autre option utiles :
ss : on commence a encoder a HH:MM:SS
t : on encode HH:MM:SS de vidéo
____________

Mencoder est aussi un très bon programme comme FFmpeg il est open source, multi plateforme , plein de codec , il reprend le code source de FFmpeg et y ajoute certaine fonctionnalité (extraction de VOB etc..) donc avec ces 2 outils vous devriez vous en sortir
____________________________

________________________________Code Source
Pour passer ses argument a Mencoder , il faut proceder de la sorte :
Programme entrée.avi -oac codecAudio option:paramètre option:param... -ovc codecVideo option:paramètre... -vf filtreVideo -o sortie.mp4
plus concretement :
mencoder entree.avi -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:acodec=aac -o sortie.mp4
option utilisées ici :
entrée.avi < pas de - c'est donc un fichier d'entrée
oac la librairie qui encodera l'audio sera la librairie AVC
ovc la librairie qui encodera la vidéo sera la librairie AVC (encore ^^)
lavcopts option pour envoyer des paramètre a la lAVC
vcodec=mpeg4:acodec=aac c'est assez explicite ^^
o le fichier de sortie est : sortie.mp4
appliquation : (j'ai bien gualéré pour y arriver mais voila ^^)
mencoder entree.avi -vf scale=480:272 -oac faac -faacopts br=128:object=2:raw -ovc x264 -x264encopts bitrate=650 -of lavf -lavfopts format=psp -o sortie.mp4
ici la video est resizé a la taile de l'ecran , le codec audio est l'AAC a 128kb/s en stéréo , le codec video est x264 (aussi connu sous le nom de AVC) avec un bitrate de 650kb/s () on ne s'oqupe pas trop du stream audio on pourrai le resamplé ou cas ou la fréquence d'entrée ne soit pas supportée par la PSP si c'est le cas on ajoute :
-af lavcresample=48000 ou 44000 ou 22000 etc...
je tente de trouver comment encoder en 720*480 avec Mencoder (oui j'ai une slim) mais apparament la PSP refuse de lire le fichier ... (mauvais level pour le AVC ?) en tout cas Mencoder a l'aire de gere les VOB (dédicaces : sora ^^)
edit : yeah ! c''etait bien un probleme de level , il faut utiliser le level 3.0 :
mencoder dj.mp4 -vf scale=720:480 -oac faac -faacopts br=128:object=2:raw -ovc x264 -x264encopts bitrate=650:level_idc=30 -of lavf -lavfopts format=psp -o sortie.mp4
Dernière édition par kba le 08 Mai 2009, 16:22, édité 8 fois.
-
biscottealacrevette Gamer Hardcore
- Messages: 750
- Inscription: 28 Jan 2010, 20:54