android 在 SurfaceView 的文件中记录 RTSP 流

android Record a RTSP stream in a file from SurfaceView

我正在使用摄像头的 IP 将 RTPS 实时流(来自摄像头)显示到 SurfaceView (my_surface_view) 中。 为此,我正在使用以下库 -> 实现 'com.github.pedroSG94.vlc-example-streamplayer:libvlc:2.5.14v3'

我需要实现一项功能,以便用户可以将流记录到文件中,但是当我尝试使用 mediaRecorder 从我的表面视图记录我的视频时,我得到:java.lang.IllegalArgumentException:不是持久表面

这是我的代码:

    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()

我在互联网上看过,但没有找到任何库或示例。现在我被困住了,没有想法

我已经使用 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()