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 12/07/2010, à 17:13

Vermouth

[RESOLUT]Encodage vidéo pour android avec mencoder

Bonjour.

Je suis en train d'essayer d'encoder une vidéo pour pouvoir la lire sur mon smartphone android (HTC Magic) en utilisant mencoder.

J'ai trouvé ce topic avec un petit script mais la commande utilisé (mencoder) ne produit pas une vidéo lisible sur mon Magic.
De même j'avais trouvé il y a longtemps cette page qui traite du sujet. Mais la commande mencoder ne produit toujours pas un fichier lisible.

Donc actuellement j'en suis à avoir réuissit à lire un fichier mais le son ne fonctionne pas.
Donc voici la commande:

mencoder IN.avi -vf scale=480:-2,harddup -oac faac -faacopts raw:br=96:object=2 -ovc lavc -lavcopts vbitrate=384:vcodec=mpeg4:aglobal=3:vglobal=3 -o OUT.3gp -of lavf

Voici les détails du fichier de sortie:

libavformat file format detected.
ID_VIDEO_ID=0
[lavf] Video stream found, -vid 0
ID_AUDIO_ID=1
[lavf] Audio stream found, -aid 1
VIDEO:  [mp4v]  480x192  24bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)
ID_FILENAME=mencoder.3gp
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=mp4v
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=480
ID_VIDEO_HEIGHT=192
ID_VIDEO_FPS=23.976
ID_VIDEO_ASPECT=2.5000
ID_AUDIO_FORMAT=255
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
ID_LENGTH=299.97
ID_SEEKABLE=1
ID_CHAPTERS=0
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] Can't open /dev/fb0: Permission denied.
[VO_3DFX] Unable to open /dev/3dfx.
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
ID_VIDEO_CODEC=ffodivx
==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)

Unsupported LATM configuration: 16 programs/ 46 subframes, 3 layers, allstreams: 1

Unsupported LATM configuration: 3 programs/ 9 subframes, 8 layers, allstreams: 1
FAAD: compressed input bitrate missing, assuming 128kbit/s!
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=faad

Pour lire l'audio, je pense qu'il faille que je résolve ceci:

Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)

Unsupported LATM configuration: 16 programs/ 46 subframes, 3 layers, allstreams: 1

Unsupported LATM configuration: 3 programs/ 9 subframes, 8 layers, allstreams: 1
FAAD: compressed input bitrate missing, assuming 128kbit/s!
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)

Notamment les deux lignes "Unsupported LATM ....". Car je n'ai pas ces deux lignes avec un ficher encodé avec avidemux (en passant: pourquoi il passe en "débit illimité" quand on veux faire deux passe ? Bref...) qui est lisible (audio et vidéo) sur mon Magic.

Quelqu'un connait-il la solution smile ?

Merci.

PS:je découvre mencoder et c'est vraiment super tongue

Dernière modification par Vermouth (Le 13/07/2010, à 10:58)


Android !
\_/°<

   coin coin...

Hors ligne

#2 Le 13/07/2010, à 09:28

Vermouth

Re : [RESOLUT]Encodage vidéo pour android avec mencoder

J'avance sur le problème.

J'ai un profil avec lequel je n'ai que l'audio qui est lut et un autre avec seulement la vidée de lut:

#SON:oui VIDEO:non
mencoder sample.avi -vf scale=480:-2,harddup -o OUT.mp4 \
-oac faac \
	-faacopts mpeg=4:object=2:raw:br=128 \
-ovc x264 -sws 9 \
	-x264encopts nocabac:level_idc=30:bframes=0:bitrate=384:threads=auto:turbo=1:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh  \-lavfopts format=mp4 \
-of lavf

#SON:non VIDEO:oui
mencoder sample.avi -vf scale=480:-2,harddup -o OUT.mp4 \
-oac faac \
	-faacopts raw:br=128:object=2 \
-ovc lavc \
	-lavcopts vbitrate=384:vcodec=mpeg4:aglobal=3:vglobal=3 \
-lavfopts format=mp4 \
-of lavf

Le flux audio est lut dans un des 2 cas donc l'encodage est bon (j'encode de la même façon l'audio dans les 2 cas).
Par contre pour la vidéo je pense que mon Magic n'arrive pas à lire h264 bien que normalement android le lise (h264 AVC, AVC ?). Par contre il lit bien quand encodé avec mpeg4.
Donc je pense que j'ai un problème de format mais j'ai beau chercher dans les options de mencoder je ne trouve pas hmm ! (android supporte les formats 3gp et mp4/m4a)

Toujours personne neutral ?

Dernière modification par Vermouth (Le 13/07/2010, à 09:33)


Android !
\_/°<

   coin coin...

Hors ligne

#3 Le 13/07/2010, à 09:51

Vermouth

Re : [RESOLUT]Encodage vidéo pour android avec mencoder

ça y est big_smile !
Voilà la bonne commande:

mencoder sample.avi -vf scale=480:-2,harddup -o OUT.mp4 \
-oac faac \
	-faacopts mpeg=4:object=2:raw:br=128 \
-ovc lavc \
	-lavcopts vbitrate=384:vcodec=mpeg4:aglobal=3:vglobal=3 \
-lavfopts format=mp4 \
-of lavf

Il manquait l'option "mpeg=4" à -faacopts.

Je ne l'avais pas mise car dans le man on peut lire:

mpeg=<2|4>
              version de MPEG (par défaut : 4)

Pas cool...

Dernière modification par Vermouth (Le 13/07/2010, à 09:51)


Android !
\_/°<

   coin coin...

Hors ligne

#4 Le 27/07/2010, à 17:46

Baspar

Re : [RESOLUT]Encodage vidéo pour android avec mencoder

Pour la qualité, tu peux aussi faire du deux passes :

mencoder sample.avi -vf scale=480:-2,harddup -o OUT.mp4 \
-oac faac \
    -faacopts mpeg=4:object=2:raw:br=128 \
-ovc lavc \
    -lavcopts vbitrate=384:vcodec=mpeg4:aglobal=3:vglobal=3:vpass=1 \
-lavfopts format=mp4 \
-of lavf
mencoder sample.avi -vf scale=480:-2,harddup -o OUT.mp4 \
-oac faac \
    -faacopts mpeg=4:object=2:raw:br=128 \
-ovc lavc \
    -lavcopts vbitrate=384:vcodec=mpeg4:aglobal=3:vglobal=3:vpass=2 \
-lavfopts format=mp4 \
-of lavf

Idem, toujours pour la qualité, tu peux augmenter le bitrate vidéo, moi je le met à 512

-ovc lavc \
    -lavcopts vbitrate=512

Et puis, dernier point, certaine video ( Je pense surtout au containeur MKV) on du mal  enregistrr des information comme leur framerate,bitrate ou encore resolution. Je te conseille donc d'éviter de passer par le "scale=480:-2", mais plutot par un "scale=800:480" ( pour ma resolution)
Mais sinon le code est nikel ^^ Je te remercie d'ailleurs, vu que j'avais aussi du mal avec les video android wink
(PS: sous avidemux, les video aussi sont bonnes wink )

Dernière modification par Baspar (Le 27/07/2010, à 17:49)

Hors ligne

#5 Le 27/07/2010, à 19:35

Vermouth

Re : [RESOLUT]Encodage vidéo pour android avec mencoder

J'utilisais avidemux aussi mais pour mettre dans un script mencoder et mieux.

Par contre avec 2 passes j'ai pas remarquer de mieux niveaux qualité (d'ailleurs, faudra m'expliquer comment ont fait du vbr en une passe). J'ai comparer image par image (enfin pas tout tu m'as compris) et à part quelques "bavements" différent il n'y a pas de différence...
Et dans ta version 2 passes, tu ne lui as pas indiquer le fichier statistique (nom par défaut dans ce cas ?).


Android !
\_/°<

   coin coin...

Hors ligne

#6 Le 28/07/2010, à 00:17

Baspar

Re : [RESOLUT]Encodage vidéo pour android avec mencoder

Ça doit dependre de la video ( Aussi de la resolution, je fait en 800x480 moi, les defaut sont plus nombreux)
Et les deux passes, il encode la video puis repasse par dessus le fichier créee pour rectifier les defaut lors de la deuxième passes, il n'a donc pas de ficier temporaire ( si c'est ce que tu entends par fichier statique)

Hors ligne

#7 Le 28/07/2010, à 11:22

Vermouth

Re : [RESOLUT]Encodage vidéo pour android avec mencoder

Si on prend le vbr, l'intérêt c'est bien d'avoir plus de débit sur les images qui ont plus d'information ?
Donc pour cela il faut bien regardé une première fois pour voir quel quantité d'information il y a, puis de mettre un débit sur chaque image en fonction du débit moyen demandé.
Ça je ne voit pas comment on peut le faire en une passe (2 en 1 ^^ ?) et d'ailleurs, dans avidemux pour utilisé le vbr (average bitrate) c'est bien en 2 passes !

Et le fichier statistique c'est indiqué dans le man qu'il est nécessaire pour mémoriser les stats le pass 1 en pass 1 et pour avoir les infos de pass 1 en pass 2.


Android !
\_/°<

   coin coin...

Hors ligne