7

このリンクからgithubからビデオトリミングコードをダウンロードしました。

初めて完全に機能しますが、2回目に実行しようとすると、例外なくコードがクラッシュし、クラッシュ後に3回目に実行しようとすると、機能します。誰かがこの種の行動について何か考えを持っていますか?

ビデオをトリミングするモジュールが1つあるアプリケーションも開発しています。誰かが私を助けることができれば、私は本当にそれをいただければ幸いです。

4

4 に答える 4

4

https://lists.ffmpeg.org/pipermail/libav-user/2012-May/001964.html

アクティビティでサードパーティ ライブラリのネイティブ メソッドを 2 回呼び出すと、Android アプリケーションが終了する

「ffmpeg.c」の静的変数の問題について読んでください...

同じ問題があり、これらの変数をリセットまたはGCするために何か(3つの代替選択肢)を行う必要があるに違いありません:

  1. ライブラリをロードしたJavaクラスローダーを取得し、それをGCします

  2. c-layerで、OPが上記のリンクで行ったことを行います

  3. 各呼び出しサイクル中に最初のライブラリで 'dlsym' と 'dlclose' を使用する 2 番目の共有ライブラリを作成します。

github 、こちらの「README」を参照して ください

あなたが抱えているのと同じ問題

于 2012-08-27T20:26:21.870 に答える
3

このように見えるffmpeg.cでメソッドを作成するだけです

void exitmycode(){
       ffmpeg_exit(0);

}

ffmpeg_exit(0)メソッドは、ビデオ トリミングの完了後にメインの C ファイルからffmpeg.c呼び出すだけで、既に存在します。exitmycode();

何が起こっていたのかというと、ffmpeg でビデオなどをトリムしても完全に終了しないため、次にコマンドを実行すると終了しますが、トリム コマンドも実行されません。 3回目に実行すると、コマンドが完全に実行されます。だから、私がやったことはffmpeg_exit(0)、処理の最後に手動で呼び出すことです。

于 2013-09-18T12:56:52.297 に答える
0

コードでビデオ トリミングを呼び出した後、アクティビティを終了してアプリケーションを再起動できると思います。

2 回目にアプリケーションがクラッシュし、3 回目に動作する場合は、アプリケーションが初期化され、クラッシュ後にアプリケーションが再起動される可能性があります。

ネイティブ ライブラリのリンクをロードおよびアンロードしてみてください

于 2012-08-20T07:59:13.437 に答える
-1

ワン・シング

ffmpeg4android_os lib をインストールしている場合は、このようにメソッド StopTranscoding の 1 行をコメントするだけです。

public void stopTranscoding() {
        Log.d(Prefs.TAG, "stopTranscoding called");
        if (_transcodeBackground != null) {
            //_transcodeBackground.forceCancel();
        }
    }

そのすべて....

于 2014-06-09T11:04:22.207 に答える