2017-07-04 8 views
0

J'ai un problème avec https://github.com/WritingMinds/ffmpeg-android-java. C'est Java wrapper lib pour ffmpeg sur Android et ça marche plutôt bien. Mais il semble que vous ne pouvez pas exécuter deux encodages vidéo dans une rangée. En fait, il n'encodera la vidéo qu'une seule fois dans sa vie. Chaque fois que vous essayez d'encoder une vidéo, elle gèle. Ceci est la sortie que je reçois quand il gèle:Android ffmpeg échoue lors de la deuxième exécution

Build.CPU_ABI : arm64-v8a 
Loading FFmpeg for armv7 CPU 
Running publishing updates method 
ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers 
    built with gcc 4.8 (GCC) 
    configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags= 
    libavutil  55. 17.103/55. 17.103 
    libavcodec  57. 24.102/57. 24.102 
    libavformat 57. 25.100/57. 25.100 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 31.100/6. 31.100 
    libswscale  4. 0.100/4. 0.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/WhatsApp/Media/WhatsApp Video/VID-20160731-WA0005.mp4': 
    Metadata: 
    major_brand  : mp42 
    minor_version : 1 
    compatible_brands: mp41mp42isom 
    creation_time : 2016-07-31 17:24:29 
    Duration: 00:00:13.63, start: 0.000000, bitrate: 1641 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709), 544x960, 1573 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default) 
    Metadata: 
     creation_time : 2016-07-31 17:24:29 
     handler_name : Core Media Video 
    Stream #0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 44100 Hz, stereo, fltp, 62 kb/s (default) 
    Metadata: 
     creation_time : 2016-07-31 17:24:29 
     handler_name : Core Media Audio 

Je ne sais pas ce qui se passe. Il semble que ffmpeg laisse quelque chose après le premier encodage qui le verrouille pour tout encodage futur. Et cela ne fonctionnera que si je désinstalle puis réinstalle l'application. Si vous supprimez une application de l'arrière-plan, ce problème persiste.

  • Si vous le tuez et redémarrez le problème de périphérique reste.
  • Si vous utilisez la fonction de fermeture forcée dans les paramètres, le problème persiste. Seule la réinstallation me permet d'encoder une nouvelle vidéo une seule fois. Après que rien ne fonctionne.

  • Répondre

    0

    C'était en fait assez simple. J'ai utilisé le même nom de fichier de sortie dans les deux essais. Et ffmpeg me demandait si je voulais remplacer un existant. Le problème était que cette lib n'a pas enregistré cette ligne. OnProgress listener se connecterait la dernière ligne avant cela et il ressemblait à ça gèle. La solution consiste à ajouter "-y", ce qui overwrite output file without asking.