在Android中,你可以使用MediaRecorder
类来将RTSP流保存到文件。下面是一个简单的示例代码,展示了如何实现这个功能:
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.IOException;
public class RTSPRecorder {
private static final String TAG = "RTSPRecorder";
private MediaRecorder mediaRecorder;
public void startRecording(String rtspUrl) {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
// 设置输出文件路径
String outputPath = getOutputFilePath();
mediaRecorder.setOutputFile(outputPath);
try {
mediaRecorder.prepare();
mediaRecorder.start();
Log.d(TAG, "Recording started");
} catch (IOException e) {
Log.e(TAG, "startRecording: " + e.getMessage());
}
}
public void stopRecording() {
if (mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
Log.d(TAG, "Recording stopped");
}
}
private String getOutputFilePath() {
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MOVIES), "RTSPRecordings");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.e(TAG, "Failed to create directory");
return null;
}
}
String timeStamp = String.valueOf(System.currentTimeMillis());
return mediaStorageDir.getPath() + File.separator + "Recording_" + timeStamp + ".mp4";
}
}
在上述代码中,startRecording
方法接收一个RTSP流的URL作为参数,并将其保存到指定的文件中。stopRecording
方法用于停止录制。
请注意,为了使代码正常工作,你需要在AndroidManifest.xml文件中添加适当的权限,如下所示:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
此外,还需要在Android设备上具有适当的存储权限。
领取专属 10元无门槛券
手把手带您无忧上云