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. 录制视频
结合MediaRecorder
和Camera
录制视频:
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(...)
音视频的学习之路
不少人在音视频初级入门过程中只是接触Android多媒体展示相关的API,通过单独的列举和使用这些API,只能让你对Android音视频处理有一个基本的轮廓,知识点都是零散的,根本没有有效的途径将所有知识点串联起来。
这样对于音视频的了解和控制就仅仅局限于最外层的API了,在深入学习之前,往往这些API就已经把脑袋都弄大了,而且,仅仅停留在使用API的层次,不能让你适应不断变化的需求。
如果最开始的方向都错了,那么不管你如何努力,都学不好音视频!
而如果是跟着正确的学习路线一步步深挖,那么一切都不是问题!
这里给大家推荐一份音视频开发进阶文档,让初学者可以比较“柔顺丝滑”地入门,即使是老司机也能得到不少收获。【扫描下方二维码即可免费领取!!】👇👇
首先给大家分享一份高级音视频学习思维导图,希望这份思维导图能够给大家学习音视频开发提供一个好的方向
并且根据上述这份思维导图融合了这些年的工作经历及对网上的资料查询和整理, 最终将其整合了一份高级音视频开发学习笔记
第1章 Android音视频硬解码篇
- 1.1 音视频基础知识
- 1.2 音视频硬解码流程:封装基础解码框
- 1.3 音视频播放:音视频同步
- 1.4 音视频解封和封装:生产一个MP4
第2章 使用OpenGL渲染视频画面篇
- 2.1 初步了解OpenGL ES
- 2.2 使用OpenGL渲染视频画面
- 2.3 OpenGL渲染多视频,实现画中画
- 2.4 深入了解OpenGL之EGL
- 2.5.2 FBO简介
- 2.6 Android音视频硬编码:生成一个MP4
第3章 Android FFmpeg音视频解码篇
- 3.1 FFmpeg so库编译
- 3.2 Android 引入FFmpeg
- 3.3 Android FFmpeg视频解码播放
- 3.4Android FFmpeg+OpenSL ES音频解码播放
- 3.5 Android FFmpeg+OpenGL ES播放视频
- 3.6 FFmpeg简单合成MP4:视屏解封与重新封装
- 3.7 Android FFmpeg 视频编码
第4章 直播系统聊天技术
- 4.1 百万在线的美拍直播弹幕系统的实时推送技术实践之路
- 4.2 阿里电商IM消息平台,在群聊、直播场景下的技术实践
- 4.3 微信直播聊天室单房间1500万在线的消息架构演进之路
- 4.4 百度直播的海量用户实时消息系统架构演进实践
- 4.5 微信小游戏直播在Android端的跨进程渲染推流实践
第5章 阿里IM技术分享
- 5.1 企业级IM王者——钉钉在后端架构上的过人之处
- 5.2 闲鱼IM基于Flutter的移动端跨端改造实践
- 5.3 闲鱼亿级IM消息系统的架构演进之路
- 5.4 闲鱼亿级IM消息系统的可靠投递优化实践