Convertir des Vidéos pour Android à l'aide de FFMPEG
Ce que je suis en train de faire est de convertir la vidéo en format mp4 qui va jouer dans Android.
Je suis passé par http://developer.android.com/guide/appendix/media-formats.html
Je suis définissant les options suivantes
-vcodec libx264 -vprofile baseline -acodec libfaac -ar 44100 -ac 1 -ab 128k
mais je reçois le message d'erreur "Désolé, Cette Vidéo n'est pas valide pour la diffusion de ce dispositif"
J'ai Joué de la vidéo dans le navigateur android à l'aide de videoJS http://video-js.zencoder.com/oceans-clip.mp4 et il FONCTIONNE très bien.
J'ai télécharger la vidéo océans-clip.mp4 et ont tenté de convertir à l'aide de minimaliste options
-y -i working.mp4 -vprofile baseline pleasework.mp4
pourtant je reçois le même message d'erreur.
Suivant est le FFMPEG info vidage des fichiers vidéo
De travail.mp4
Array
(
[0] => ffmpeg version N-40229-g24e3f44-syslint Copyright (c) 2000-2012 the FFmpeg developers
[1] => built on Apr 29 2012 22:01:41 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
[2] => configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
[3] => libavutil 51. 48.100 / 51. 48.100
[4] => libavcodec 54. 17.101 / 54. 17.101
[5] => libavformat 54. 3.100 / 54. 3.100
[6] => libavdevice 53. 4.100 / 53. 4.100
[7] => libavfilter 2. 72.100 / 2. 72.100
[8] => libswscale 2. 1.100 / 2. 1.100
[9] => libswresample 0. 11.100 / 0. 11.100
[10] => libpostproc 52. 0.100 / 52. 0.100
[11] => Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'working.mp4':
[12] => Metadata:
[13] => major_brand : isom
[14] => minor_version : 1
[15] => compatible_brands: isomavc1
[16] => creation_time : 2010-05-18 04:24:00
[17] => Duration: 00:00:46.54, start: 0.000000, bitrate: 3342 kb/s
[18] => Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 /0x31637661), yuv420p, 640x264 [SAR 132:133 DAR 320:133], 3195 kb/s, SAR 127:128 DAR 635:264, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
[19] => Metadata:
[20] => creation_time : 2010-05-18 04:24:00
[21] => handler_name : GPAC ISO Video Handler
[22] => Stream #0:1(und): Audio: aac (mp4a /0x6134706D), 44100 Hz, stereo, s16, 144 kb/s
[23] => Metadata:
[24] => creation_time : 2010-05-18 04:24:01
[25] => handler_name : GPAC ISO Audio Handler
[26] => At least one output file must be specified
)
Pas De Travail.mp4
Array
(
[0] => ffmpeg version N-40229-g24e3f44-syslint Copyright (c) 2000-2012 the FFmpeg developers
[1] => built on Apr 29 2012 22:01:41 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
[2] => configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
[3] => libavutil 51. 48.100 / 51. 48.100
[4] => libavcodec 54. 17.101 / 54. 17.101
[5] => libavformat 54. 3.100 / 54. 3.100
[6] => libavdevice 53. 4.100 / 53. 4.100
[7] => libavfilter 2. 72.100 / 2. 72.100
[8] => libswscale 2. 1.100 / 2. 1.100
[9] => libswresample 0. 11.100 / 0. 11.100
[10] => libpostproc 52. 0.100 / 52. 0.100
[11] => Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'pleasework.mp4':
[12] => Metadata:
[13] => major_brand : isom
[14] => minor_version : 512
[15] => compatible_brands: isomiso2avc1mp41
[16] => creation_time : 2010-05-18 04:24:00
[17] => encoder : Lavf54.3.100
[18] => Duration: 00:00:46.54, start: 0.000000, bitrate: 1843 kb/s
[19] => Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 /0x31637661), yuv420p, 640x264 [SAR 127:128 DAR 635:264], 1715 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
[20] => Metadata:
[21] => creation_time : 2010-05-18 04:24:00
[22] => handler_name : VideoHandler
[23] => Stream #0:1(und): Audio: aac (mp4a /0x6134706D), 44100 Hz, stereo, s16, 124 kb/s
[24] => Metadata:
[25] => creation_time : 2010-05-18 04:24:00
[26] => handler_name : SoundHandler
[27] => At least one output file must be specified
)
Les métadonnées ressemble presque la même mais il ne semble pas jouer sur android. Toute aide appréciée.
Vous devez vous connecter pour publier un commentaire.
Le MP4 créé par ffmpeg a la moov-tête à la queue. C'est pourquoi vous obtenez ce message d'erreur. ffmpeg peut mettre le moov-tête à l'avant (approprié pour la diffusion).
Exécutez simplement:
Également se référer à Post-traitement dans ffmpeg pour vous déplacer en moov atom' dans les fichiers MP4 (qt-fast start)
-movflags faststart
option dans ffmpeg.-movflags faststart
option et je ne sais pas votre ffmpeg commande, et à la sortie de la console.-movflags faststart
option. J'ai ajouté-vprofile baseline
et c'est bon. Merci.libfaac n'est pas pris en charge plus, Vous pouvez utiliser cette configuration:
La solution qui a fonctionné pour moi a été:
J'utilise Ubuntu 16.04.1 LTS
-c:a libvo_aacenc
était obsolète, utiliser-c:a aac
au lieuLa solution qui a fonctionné pour moi a été:
Je me suis converti à 3gp. Il travaille dans l'API de 16 ans ou plus, à l'aide de VideoView.
Ce que j'ai fait ici est d'enregistrer une vidéo avec mon appareil Android et voir ce qu'il a configuré avec FFMPEG:
Je ne suis pas très technique, mais c'est ce qui a attiré mon attention surtout:
J'ai utilisé les commandes suivantes pour convertir ma vidéo de sorte qu'il peut être joué sur mon Android:
Je soupçonne mon problème est que la résolution de ma vidéo d'origine était trop pour mon appareil. C'est ce qu'il était auparavant:
Qui a un 2250x4000 résolution (c'est une image à partir du même appareil, je l'ai transformé en une vidéo avec cet article https://superuser.com/questions/617392/ffmpeg-image-sequence-with-various-durations).
J'ai tout simplement essayé de redimensionner l'image sans changer le codec h264, mais qui n'a pas donné une très bonne image. h264 fait pour moi 🙂
Espérons que cette aide!! <3