从MediaRecord录像中读取H264参数

说明:

许多以前做个一个测试项目,想把android手机视频接入视频服务器,做法是这样的:

把android手机的实时视频上传到后台转发服务器,转发服务器把音视频流包装成IPC rtsp服务器形式,流媒体连接手机转发服务器就像连接IPC设备一样,使用rtsp的拉流模式获取视频流。

从而实现手机---转发服务器---视频服务器—PC客户端的双向通信。

这个方案是一个简化方案,手机端仅仅负责抓包回放以及远程播放,转发服务器仅实现一个rtsp封装并未其他任何功能,其他模块是不变的。手机端使用了最上层的mediarecorder对象,一边录制回显,一边上传音视频。

手机端需要使用自定义的协议和转发服务器通信,把音视频参数告知服务器,其中获取视频参数是很重要的。

如何 获取视频参数呢?其实,mediarecorder(H264)的录制数据的开头就包含了SPS和pps参数,分析一下取出来即可,并且相同的设备、相同的配置获取的sps,pps都是相同的,只需要在启动界面的时候获取一下即可,后面就不需要获取了。

如何获取H264参数呢?

解决方案:

1、设置录像的视频解码参数为H264

2、获取到录像数据之后跳过文件头:

​​​​​​​

 3、后面就是SPS和PPS:

​​​​​​​

 

这样就找到视频参数,然后封装起来,告诉服务器。

参考:

以前我好像写过一篇文章介绍sps,pps,那时候在做h264分片传输。

关于:

编者:李国帅

qq:9611153 微信lgs9611153

时间:2022-6-26  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MediaRecorder 是 Android 提供的一个录制音视频的类,可以用来录制视频、音频、音视频等多种格式的文件。 下面是一个简单的示例代码,演示了如何使用 MediaRecorder 进行屏幕录制: ```java public class ScreenRecorder { private MediaRecorder mediaRecorder; public void startRecording() { mediaRecorder = new MediaRecorder(); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mediaRecorder.setVideoEncodingBitRate(512 * 1000); mediaRecorder.setVideoFrameRate(30); mediaRecorder.setVideoSize(720, 1280); mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory() + "/screen_record.mp4"); try { mediaRecorder.prepare(); } catch (IOException e) { e.printStackTrace(); } mediaRecorder.start(); } public void stopRecording() { mediaRecorder.stop(); mediaRecorder.release(); } } ``` 此示例,我们使用了 `MediaRecorder.VideoSource.SURFACE` 作为录制视频的源,并设置了输出格式、视频编码器、视频编码比特率、视频帧率、视频大小和输出文件路径等参数。然后,调用 `prepare()` 方法进行准备,最后调用 `start()` 方法开始录制视频。 当需要停止录制时,调用 `stop()` 方法停止录制,并释放资源。 需要注意的是,录制屏幕需要申请权限,并且在 Android 5.0 以上版本需要使用 MediaProjection API。具体实现可以参考 Android 官方文档或其他相关教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值