Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/04/2010, à 10:30

seuf76

Encodage X264 en ligne de commande

Bonjour à tous,

Voila, j'ai réalisé une petite appli web de vidéo en streaming utilisant la balise <video> de HTML 5.
Le principe est de lister les vidéos dispo sur le serveur, de lancer l'encodage depuis l'interface web et une fois l'encodage terminé, on peut la regarder ne streaming.
Du coup ça s'appelle Voquad pour Video On Quasi Demand tongue (http://sourceforge.net/projects/voquad/)

Pour l'instant il est possible de convertir la vidéo uniquement au format Theora, via la commande ffmpeg2theora.

Je souhaiterai y ajouter la possibilité d'encoder la vidéo en x264, afin d'être compatible avec les navigateurs Chrome et Safari (avec un conteneur mp4).

Mais voila, je galère pour trouver la bonne ligne d'encodage...
J'ai essayé avec mencoder, et x264 (le binaire), mais rien n'y fait..
Soit je n'ai pas de son, soit l'encodage marche mais une fois qu'on regarde la vidéo dans le navigateur, elle est tronquée, ou elle est de mauvaise qualitée...

Voici les commandes que j'ai déjà testé...

- Avec mencoder :

mencoder '$video_in' -ovc x264 -oac faac -x264encopts subq=5:pass=1:bitrate=$bitrate:bframes=3:partitions=p8x8,b8x8,i4x4:weight_b:threads=auto:nopsnr:nossim:frameref=3:mixed_refs:bime:brdo:level_idc=41:direct_pred=auto:trellis=1 -o '$video_out.avi'

MP4Box -aviraw video '$video_out.avi'
MP4Box -aviraw audio '$video_out.avi'
for i in *.raw; do mv \"\$i\" `echo \"\$i\" |sed 's/raw\$/aac/'` ; done
MP4Box -add '$video_out\_audio.aac' -add '$video_out\_video.h264':fps=$fps '$video_out.mp4'

Mais quand j'essaye d'extraire le son et la video pour la repackager avec MP4Box, ça ne marche pas..

- Avec x264

x264 --pass 1 --stats data/x264_log.stats --bitrate 2306 --stats data/test.stats --ref 3 --bframes 3 --b-pyramid --weightb --direct auto --filter -4:-3 --analyse all --8x8dct --subme 6 --me umh --trellis 1 --mixed-refs --progress --no-psnr --vbv-maxrate 400 --output data/test2.mp4 data/test.yuv 720x540

x264 --pass 2 --stats data/x264_log.stats --bitrate 2306 --stats data/test.stats --ref 3 --bframes 3 --b-pyramid --weightb --direct auto --filter -4:-3 --analyse all --8x8dct --subme 6 --me umh --trellis 1 --mixed-refs --progress --no-psnr --vbv-maxrate 400 --output data/test2.mp4 data/test.yuv 720x540

La, je n'ai pas de son, car le fichier en entrée test.yuv est juste un raw de la vidéo d'origine.

Si quelqu'un a une idée de commande à exécuter pour encoder une vidéo en h264 et la packager dans du MP4, je suis preneur...

PS : je souhaite utiliser uniquement des outils dispo dans les dépots ubuntu (pas de recompilation de ffmpeg par exemple), afin de pouvoir packager en .deb par la suite...

Hors ligne

#2 Le 23/04/2010, à 11:08

PRQT83

Re : Encodage X264 en ligne de commande

Bonjour,

Juste une idée ( qui est peut être mauvaise ou inutile d'ailleurs):
Pourquoi ne pas tester en encodant une vidéo avec un logiciel comme handbrake?
Le truc, c'est qu'il me semble qu'il te montre la ligne de commande qu'il utilise.
Ça pourrais t'indiquer les bonnes options smile

#3 Le 23/04/2010, à 11:19

seuf76

Re : Encodage X264 en ligne de commande

J'ai déjà testé d'encoder une video avec handbrake, et le la mettre dans une balise <video> : ça marche !
Hélas, je n'arrive pas a récupérer la ligne de commande qui est utilisée pour l'encodage sad

Hors ligne

#4 Le 23/04/2010, à 11:27

PRQT83

Re : Encodage X264 en ligne de commande

Et en le lançant via un terminal?

Tu peut me dire en quoi est la vidéo d'origine ( ou si pas d'importance) et en quoi tu la veux ( audio vidéo conteneur taille) que je jete un oeil avec mencoder.

Par contre, te promet rien, j'ai plus encoder depuis un moment et me semble que les noms de codecs ont changés avec mencoder.

Je repasse d'ici une heure, une heure et demi smile

#5 Le 23/04/2010, à 11:36

seuf76

Re : Encodage X264 en ligne de commande

Alors en format de video d'origine : n'importe..
Généralement, ça sera du mpeg 4 dans du AVI.

En sortie, ce que j'aimerai, c'est du h264 dans du MP4.
La taille n'a pas d'importance non plus, il faut que la qualité reste équivalente à la vidéo d'origine..

En tout cas, merci beaucoup de bien vouloir me filer un coup de main...

Hors ligne

#6 Le 23/04/2010, à 14:16

PRQT83

Re : Encodage X264 en ligne de commande

Re,
Essaye ta commande avec mencoder ( post #1) en enlevant l'option brdo pour voir.

#7 Le 23/04/2010, à 16:10

seuf76

Re : Encodage X264 en ligne de commande

Dans la commande post #1, le problème venais plus tu repackaging en MP4.
En effet, je n'arrivais pas a extraire l'audio et la video en raw du .avi généré pour le remettre dans du MP4. (avec MP4Box)

Après, j'ai lu qu'il fallait obligatoirement 2 passes pour que la vidéo puisse être lue par Chrome..
Aurais tu des exemples d'encodage avec mencoder en 2 passes ?

Hors ligne

#8 Le 23/04/2010, à 16:23

PRQT83

Re : Encodage X264 en ligne de commande

Pourquoi tu mets pas direct en .mp4?
Ca devrais marcher.

Par contre, bizarre cette histoire de 2 pass obligatoire...

je retope mes liens et te mets quelques exemples smile

#9 Le 24/04/2010, à 16:23

kurtnoise

Re : Encodage X264 en ligne de commande

Une première commande que tu peux tester:

x264 -crf 18 –intra-refresh –fps 25 –vbv-maxrate 5000 –vbv-bufsize 200 –slice-max-size 1500 -o output.mp4 input

NB : ne fonctionne probablement pas avec les dépôts actuels...car nécessite une compilation récente à partir des sources. smile

Dernière modification par kurtnoise (Le 24/04/2010, à 16:23)

Hors ligne

#10 Le 24/04/2010, à 19:18

seuf76

Re : Encodage X264 en ligne de commande

Erf, j'ai testé cette commande, mais la version cd x264 que j'ai n'est pas compatible avec les fichiers AVI en entrée, et certaines options ne sont pas reconnues :

x264 [error]: not compiled with AVIS input support

C'est compliqué à recompiler ? y'a beaucoup de dépendances ?
Après, je sais pas si ça se fait de générer un .deb ou .rpm en incluant un binaire déjà dispo dans les dépots de base hmm

Hors ligne

#11 Le 26/04/2010, à 13:48

seuf76

Re : Encodage X264 en ligne de commande

Re..

Bon, j'ai un peu progressé avec mencoder..
J'encode en 2 passes :

1ère passe :
mencoder video_in.avi -o /dev/null -oac faac -ovc x264 -x264encopts subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b:bitrate=2500:pass=1
2eme passe :
mencoder video_in.avi -o video_out.avi -oac faac -ovc x264 -x264encopts subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b:bitrate=2500:pass=2

MP4Box -aviraw audio <video_out>.avi => génère un fichier video_out_audio.raw

MP4Box -aviraw video <video_out>.avi => génère un fichier video_out_video.h264

mv <video_out>_audio.raw <video_out>_audio.aac => Renomme le .raw en .aac

MP4Box -add <video_out>_audio.aac -add <video_in>_video.h264 <video_out>.mp4 => Packaging MP4

Le fichier mp4 obtenu est parfaitement lisible dans un lecteur traditionnel (gstreamer), mais dans le lecteur vidéo de chrome, ça bug (tourne en boucle sur 5 secondes au milieu de la vidéo, avec du son) sad

Si quelqu'un a une idée...

Hors ligne

#12 Le 02/05/2010, à 12:04

kurtnoise

Re : Encodage X264 en ligne de commande

seuf76 a écrit :

Erf, j'ai testé cette commande, mais la version cd x264 que j'ai n'est pas compatible avec les fichiers AVI en entrée, et certaines options ne sont pas reconnues :

x264 [error]: not compiled with AVIS input support

C'est compliqué à recompiler ? y'a beaucoup de dépendances ?

Non pas vraiment compliqué...Les dépendances sont libavcodec/libavformat/libpostproc/ffmpegsource.

Hors ligne