Exemple #1
0
  /** One time setup of the FFmpeg library. */
  public Observable<Void> setupFFmpeg() {
    if (!firstSetup.get()) return Observable.just(null);
    firstSetup.set(false);
    return Observable.create(
        new Observable.OnSubscribe<Void>() {
          @Override
          public void call(final Subscriber<? super Void> subscriber) {
            LoadBinaryResponseHandler responseHandler =
                new LoadBinaryResponseHandler() {
                  @Override
                  public void onFailure() {
                    if (subscriber.isUnsubscribed()) return;
                    subscriber.onError(new IllegalStateException("failed to load FFmpeg binaries"));
                  }

                  @Override
                  public void onSuccess() {
                    if (subscriber.isUnsubscribed()) return;
                    subscriber.onNext(null);
                    subscriber.onCompleted();
                  }
                };

            try {
              fFmpeg.loadBinary(responseHandler);
            } catch (FFmpegNotSupportedException e) {
              subscriber.onError(e);
            }
          }
        });
  }