Android音视频开发之播放、录制音频解析

1. 播放音频

使用MediaPlayer类播放音频:

MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.my_audio_file);
mediaPlayer.start(); // 开始播放

2. 录制音频

使用MediaRecorder类录制音频:

MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile("/path/to/your/file.mp4");
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

try {
    mediaRecorder.prepare();
} catch (IOException e) {
    e.printStackTrace();
}

mediaRecorder.start(); // 开始录制

3. 播放视频

使用VideoView播放视频:

<!-- 在布局文件中添加 VideoView -->
<VideoView
    android:id="@+id/videoView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
// 在Activity中设置视频源并播放
VideoView videoView = (VideoView) findViewById(R.id.videoView);
videoView.setVideoPath("/path/to/your/video.mp4");
videoView.start(); // 开始播放

4. 录制视频

结合MediaRecorderCamera录制视频:

Camera camera = Camera.open(); // 获取摄像头
Camera.Parameters params = camera.getParameters();
params.setRecordingHint(true); // 设置录制提示
camera.setParameters(params);

MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile("/path/to/your/file.mp4");
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

try {
    mediaRecorder.prepare();
} catch (IOException e) {
    e.printStackTrace();
}

mediaRecorder.start(); // 开始录制

// 录制完成后记得释放资源
mediaRecorder.stop();
mediaRecorder.release();
camera.release();

5. 实时音视频通信

使用WebRTC或类似的库进行实时音视频通信:

// 这是一个WebRTC的简化示例,实际使用会更复杂
PeerConnectionFactory factory = ...; // 初始化工厂
PeerConnection peerConnection = ...; // 创建PeerConnection
MediaStream stream = factory.createLocalMediaStream("ARDAMS");

// 添加本地音视频轨道
stream.addTrack(localAudioTrack);
stream.addTrack(localVideoTrack);

// 添加远程音视频轨道
peerConnection.addStream(stream);

// 创建offer或answer
peerConnection.createOffer(...); // 或者 createAnswer(...)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容