我正在做一个我需要做的项目
从 IPCamera 读取输入 H.264 编码流 - 我可以通过 rtsp url 获取它,例如 rtsp://192.168.1.83:8001/
显示 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();
}
});
- 现在我想将此流录制到 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.
c)我可以从 url 中读取并将其存储为文件。如何将此流转换为 MP4 文件?任何代码片段都会非常有帮助。
我也尝试过使用 FFMPEG,但性能太差了,我放弃了这个选项。
对上述三个选项或我可以考虑的任何其他附加选项的任何输入将不胜感激。
谢谢 !!