2016-04-25 14 views
5

UżywamAndroid Błąd ffmpeg wyjściowy

https://github.com/writingminds/ffmpeg-android-java

uruchomić ffmpeg poleceń na Androidzie. Próbuję nakładać obraz na wideo. Z jakiegoś powodu pojawia się następujący błąd podczas wykonywania tego polecenia.

ffmpeg -i input.mp4 strict -2 -i overlay.jpg -filter_complex [0:v][1:v] overlay=25:25:enable='between(t,0,4)' output.mp4 

Output file #0 does not contain any stream 

Czy ktoś może mi pomóc? Z góry dziękuję!

+0

dowolny Powodzenia z tym? Mam również do czynienia z tym problemem. –

+0

Nie. Myślę, że problemem jest konstrukcja, z której korzystamy. Spróbuj i zbuduj własną nową wersję FFMpeg. Zbuduj go, korzystając z odpowiednich funkcji. Myślę, że kompilacja, której używamy, nie zawiera właściwych rzeczy. Porzuciłem FFMpeg, zwiększyło to mój rozmiar aplikacji i było wolne. –

+0

Rozumiem. Wydaje mi się, że znalazłem rozwiązanie tego problemu, opublikowane jako odpowiedź =) –

Odpowiedz

4

Miałem do czynienia z tym samym problemem, a mój problem polegał na tym, że nazwałem metodę wykonywania w niewłaściwy sposób. Tablica ciąg I mijał było coś takiego:

final String[] cmd = new String[] { "-i input.mp4 strict -2 -i overlay.jpg -filter_complex [0:v][1:v] overlay=25:25:enable='between(t,0,4)' output.mp4" }; 

Prawidłowe sposobem utworzenia tej tablicy jest jednak to, aby podzielić polecenia w oddzielnych ciągów:

final String[] cmd = new String[]{ "-i", "input.mp4", "strict", "-2", "-i", "overlay.jpg", 
       "-filter_complex", "[0:v][1:v]", "overlay=25:25:enable='between(t,0,4)'", "output.mp4"}; 

a następnie wywołać polecenie:

try { 
    final FFmpeg ffmpeg = FFmpeg.getInstance(context); 
    ffmpeg.execute(cmd, new FFmpegExecuteResponseHandler() { 
     @Override 
     public void onSuccess(String message) { 

     } 

     @Override 
     public void onProgress(String message) { 

     } 

     @Override 
     public void onFailure(String message) { 

     } 

     @Override 
     public void onStart() { 

     } 

     @Override 
     public void onFinish() { 

     } 
    }); 
} catch (FFmpegCommandAlreadyRunningException e) { 

} 

Znalazłem rozwiązanie na komentarzu danej lauffenp w tej kwestii: https://github.com/WritingMinds/ffmpeg-android-java/issues/88

+0

Hej Jak możesz z powodzeniem uruchomić to polecenie, Czy możesz mi pomóc z tym, co robię źle? Otrzymuję ten błąd "A/libc: Fatal signal 11 (SIGSEGV), kod 1, fault addr 0x0 w tid 14661 (AsyncTask # 4)" dla każdego polecenia filter_complex – Nisarg