web-dev-qa-db-fra.com

Problème lors de l'utilisation de avconv pour convertir .mp4 en .webm

Je vais essayer de décrire ma situation:

J'ai un téléphone Android qui crée une vidéo au format MP4. J'aime partager cette vidéo sur ma page Web et sur jwplayer. Tel qui fonctionne bien. J'utilise un script pour que tout fonctionne bien. J'utilise pour convertir le fichier en webm, et l'insertion dans jwplayer avec ce type de code d'intégration:

 <div id="player" align="center">
<script src="jwplayer.js" type="text/javascript"></script>

 <script type="text/javascript"> jwplayer("player").setup({
     height: 270,
     image: "thumb.png",
     levels: [
         {file: 'file.mp4', type: 'video/mp4' },
         {file: 'file.webm', type: 'video/webm' },
     ],
     modes: [
         { type: 'html5' },
         { type: 'flash', src: 'player.swf' }
     ],
     width: 480 }); </script></div>

pour convertir de mp4 en webm j'utilise simplement cette commande:

avconv -i "$file".mp4 "$file".webm

OK! Maintenant, le problème vient de mon nouvel appareil photo. Mon pentax fait de la vidéo en AVI et dans ce cas, pour intégrer avec jwplayer, il me faut un fichier mp4 et un fichier webm.

OK j'utilise cette commande:

avconv -i "$videoname".AVI -c:v libx264 -crf 23 -c:a libfaac -b:a 192k "$videoname".mp4

les résultats sont positifs.

Maintenant, si j’utilise pour convertir ce nouveau mp4 en webm avec:

avconv -i "$file".mp4 "$file".webm

le fichier webm ne fonctionne pas ....

exemple ffprobe avec le fichier avi:

$ ffprobe IMGP0129.AVI 
avprobe version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2007-2012 the Libav               
developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #0, avi, from 'IMGP0129.AVI':
  Duration: 00:00:44.64, start: 0.000000, bitrate: 27089 kb/s
    Stream #0.0: Video: mjpeg, yuvj420p, 1280x720, 30.08 tbr, 30.08 tbn, 30.08 tbc
    Stream #0.1: Audio: pcm_u8, 32000 Hz, 1 channels, u8, 256 kb/s

exemple de message d'erreur pour le webm en sortie:

$ avconv -i output.mp4 out2.webm
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav
developers
 built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
 Metadata:
   major_brand     : isom
   minor_version   : 512
   compatible_brands: isomiso2avc1mp41
   encoder         : Lavf53.21.0
 Duration: 00:00:04.99, start: 0.000000, bitrate: 2228 kb/s
   Stream #0.0(und): Video: h264 (Main), yuvj420p, 1280x720, 2193 kb/s, 30.01 fps,
30.01 tbr, 500k tbn, 60.01 tbc
   Stream #0.1(und): Audio: aac, 32000 Hz, mono, s16, 54 kb/s
Incompatible pixel format 'yuvj420p' for codec 'libvpx', auto-selecting format 'yuv420p'
[buffer @ 0x2345340] w:1280 h:720 pixfmt:yuvj420p
[avsink @ 0x2356540] auto-inserting filter 'auto-inserted scaler 0' between the filter
'src' and the filter 'out'
[scale @ 0x2343220] w:1280 h:720 fmt:yuvj420p -> w:1280 h:720 fmt:yuv420p flags:0x4
[libvpx @ 0x23468a0] v1.0.0
Output #0, webm, to 'out2.webm':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf53.21.0
    Stream #0.0(und): Video: libvpx, yuv420p, 1280x720, q=-1--1, 200 kb/s, 1k tbn,
30.01 tbc
    Stream #0.1(und): Audio: libvorbis, 32000 Hz, mono, s16
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libvpx)
  Stream #0:1 -> #0:1 (aac -> libvorbis)
Press ctrl-c to stop encoding
**[webm @ 0x2344de0] Application provided invalid, non monotonically increasing dts to
**muxer in stream 0: 33 >= 33**
**strong text**av_interleaved_write_frame(): Invalid argument**

Aucune suggestion?

2
johnny cravatta

enfin pour certains ont un intérêt, j'utilise ces commandes pour convertir certains types de fichiers vidéo:

avconv -i "$videoname".AVI -b 2048k -r 30 -c:a libmp3lame "$videoname".mp4
avconv -i "$videoname".AVI -c:v libx264 -ar 44100 -y "$videoname".flv
avconv -i "$videoname".mp4 -y "$videoname".webm

avec ces trois étapes, je peux intégrer correctement avec mon script.

2
johnny cravatta