小编max*_*art的帖子

Android - 将rtsp(h264)流保存到mp4文件

我正在开展一个我需要的项目

  1. 读取来自IPCamera的输入H.264编码流 - 我可以通过rtsp://192.168.1.83:8001/rtsp url获取此信息

  2. 显示IPCamera流 - 我可以使用


final VideoView vv = (VideoView) findViewById(R.id.video_view_h264);
        MediaController mc = new MediaController(getApplicationContext());
        vv.setVideoURI(video);
        vv.setMediaController(mc);
        vv.requestFocus();
        vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            public void onPrepared(MediaPlayer mp) {
                vv.start();
            }
        });
Run Code Online (Sandbox Code Playgroud)
  1. 现在我想将此流记录到MP4文件中.这是我被困的地方,我正在考虑以下选项

a)MediaRecorder - 根据我的谷歌搜索,我相信这个类的输入只能来自设备相机.有没有办法调整这个我可以提供rtsp流的输入?

b)MediaCodec API - 4.1以后Android已经发布了这个低级API以及MediaExtractor和MediaCodec.对于此选项,我认为rtsp流不能用于以下代码段

final String STREAM_URL = "rtsp://192.168.1.83:8001/";
MediaExtractor mediaExtractor = new MediaExtractor();
mediaExtractor.setDataSource(STREAM_URL); // I get an exception 04-28 18:30:18.914: E/AndroidRuntime(8140): Caused by: java.io.IOException: Failed to instantiate extractor.
Run Code Online (Sandbox Code Playgroud)

c)我可以从网址读取并将其存储为文件.如何将此流转换为MP4文件?任何代码段都非常有用.

我也试过使用FFMPEG,但性能太差,我放弃了这个选项.

我非常感谢上述三个选项的任何输入或我可以考虑的任何其他附加选项.

谢谢 !!

mp4 android android-mediaplayer android-mediarecorder

11
推荐指数
1
解决办法
6348
查看次数