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?
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.