Проблема с видеорегистратором FFMPEG

Я использую FFmpegVideoRecorder — настраиваемую библиотеку видеозаписи для Android.

в моем приложении для записи видео. Я следовал инструкциям на GitHub и установил библиотеку. Когда я запускаю приложение, я получаю следующую ошибку.

Error opening camera
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:247)
    at com.amosyuen.videorecorder.camera.CameraController.setFlashModeParams(CameraController.java:383)
    at com.amosyuen.videorecorder.camera.CameraController.openCamera(CameraController.java:175)
    at com.amosyuen.videorecorder.activity.FFmpegRecorderActivity$OpenCameraTask.doInBackground(FFmpegRecorderActivity.java:718)
    at com.amosyuen.videorecorder.activity.FFmpegRecorderActivity$OpenCameraTask.doInBackground(FFmpegRecorderActivity.java:706)
    at android.os.AsyncTask$2.call(AsyncTask.java:333)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)

Код, который я использовал, это

recordbtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {


                    String date = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
                    String videoSTVString = "/sdcard/myapp_"+ date +".mp4";
                    prefs.edit().putString("videoSTVString", videoSTVString).commit();

                    String thumbnailString = "/sdcard/myapp_thumbnail_"+ date +".jpg";

                    File stvVideoFile = new File(videoSTVString);
                    File stvThumbnailFile = new File(thumbnailString);

                    startActivity(stvVideoFile, stvThumbnailFile);


                }
            });

public void startActivity(File videoFile, File thumbnailFile) {
    FFmpegRecorderActivityParams.Builder paramsBuilder =
            FFmpegRecorderActivityParams.builder(getApplicationContext())
                    .setVideoOutputFileUri(videoFile)
                    .setVideoThumbnailOutputFileUri(thumbnailFile);

    paramsBuilder.recorderParamsBuilder()
            .setVideoSize(new ImageSize(640, 480))
            .setVideoCodec(EncoderParamsI.VideoCodec.H264)
            .setVideoBitrate(100000)
            .setVideoFrameRate(30)
            .setVideoImageFit(ImageFit.FILL)
            .setVideoImageScale(ImageScale.DOWNSCALE)
            .setShouldCropVideo(true)
            .setShouldPadVideo(true)
            .setVideoCameraFacing(CameraControllerI.Facing.BACK)
            .setAudioCodec(EncoderParamsI.AudioCodec.AAC)
            .setAudioSamplingRateHz(44100)
            .setAudioBitrate(100000)
            .setAudioChannelCount(2)
            .setOutputFormat(EncoderParamsI.OutputFormat.MP4);

    Intent intent = new Intent(this, FFmpegRecorderActivity.class);
    intent.putExtra(FFmpegRecorderActivity.REQUEST_PARAMS_KEY, paramsBuilder.build());
    startActivityForResult(intent, 1000);

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1000) {
        switch (resultCode) {
            case RESULT_OK:
               Uri videoUri = data.getData();
            break;
        case Activity.RESULT_CANCELED:
            break;
        case FFmpegRecorderActivity.RESULT_ERROR:
            break;
       }
    }
}

Может ли кто-нибудь помочь мне решить эту ошибку?


person Arjun    schedule 26.08.2019    source источник
comment
Эта проблема исправлена? Я также получаю аналогичную проблему   -  person MrinmoyMk    schedule 11.08.2020


Ответы (1)


Используемая вами библиотека https://github.com/amosyuen/FFmpegVideoRecorder недавно обработала эту ошибку. , эта ошибка возникает при получении getSupportedFlashModes из камеры. Вы можете проверить последнюю сборку здесь -

https://github.com/amosyuen/FFmpegVideoRecorder/commit/5844bd9b9044cd6efa1e932>

person Krishna Vyas    schedule 26.08.2019
comment
Можно ли редактировать файлы внутри библиотеки? Когда я попробовал, это показало, что это файл только для чтения. Я установил его, используя реализацию «com.amosyuen.ffmpegvideorecorder: ffmpeg-video-recorder: 2.0.3». - person Arjun; 26.08.2019
comment
Просто очистите проект и перекомпилируйте библиотеку, возможно, вы устраните свою ошибку. - person Krishna Vyas; 26.08.2019
comment
Я почистил и перекомпилировал библиотеку, теперь получаю следующую ошибку: E/FFmpegRecorderActivity: Ошибка при открытии камеры java.lang.RuntimeException: Не удалось подключиться к службе камеры на android.hardware.Camera.‹init›(Camera.java: 546) в android.hardware.Camera.open(Camera.java:392) - person Arjun; 26.08.2019
comment
Когда я тестировал то же самое в One Plus 6T, я получаю эту ошибку: E/libc: Доступ запрещен к поиску свойства vendor.debug.egl.swapinterval 2019-08-26 17:51:48.148 987-987/? E/FFmpegRecorderActivity: ошибка при открытии камеры java.lang.RuntimeException: не удалось подключиться к службе камеры на android.hardware.Camera.‹init›(Camera.java:764) на android.hardware.Camera.open(Camera.java:560 ) - person Arjun; 26.08.2019
comment
Даже когда я очистил и перекомпилировал библиотеку, getSupportedFlashModes остался прежним. Он не обновлялся по ссылке, которой вы поделились выше. Что может быть причиной? - person Arjun; 26.08.2019