android Запись потока RTSP в файл из SurfaceView. - PullRequest
2 голосов
/ 10 апреля 2020

Я показываю прямой поток RTPS (с камеры) в SurfaceView (my_surface_view), используя IP-адрес камеры. Для этого я использую следующую библиотеку -> реализация ' com.github.pedroSG94.vl c -example-streamplayer: libvl c: 2.5.14v3 '

I Мне нужно реализовать функцию, чтобы пользователь мог записать поток в файл, но когда я пытаюсь записать мое видео с моего вида поверхности, используя mediaRecorder, я получаю: java .lang.IllegalArgumentException: не PersistentSurface

Вот мой код:

    mediaRecorder.setInputSurface(my_surface_view.holder.hurface)
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT)
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264)
    mediaRecorder.setVideoEncodingBitRate(512 * 1000)
    mediaRecorder.setVideoFrameRate(30)
    mediaRecorder.setVideoSize(640, 480)
    mediaRecorder.setOutputFile(File(getVideosDirectory(), "TEST.mp4").path)
    mediaRecorder.prepare()
    mediaRecorder.start()

Я смотрю на inte rnet, но я не нашел ни одной библиотеки или примера. И сейчас я застрял и не имею никакой идеи

1 Ответ

0 голосов
/ 21 апреля 2020

Мне удалось сделать это, используя FFmpeg ->

implementation 'com.arthenica:mobile-ffmpeg-full-gpl:4.2.2.LTS'

Для начала записи (убедитесь, что она не в основном потоке), и файл имеет. расширение mkv

   runOnIoThread {
                FFmpeg.execute("-i $url -acodec copy -bsf:a aac_adtstoasc -vcodec copy ${file.path}")
            }

и остановить его -> FFmpeg.cancel()

...