RTMP推流组件EasyRTMP实现手机直播推送、屏幕推送及录像功能时录像功能时如何实现的

EasyRTMP是结合了多种音视频缓存及网络技术的一个rtmp直播推流端,包括:圆形缓冲区(circular buffer)、智能丢帧、自动重连、rtmp协议等多种技术,能够非常有效地适应各种平台(Windows、Linux、ARM、Android、iOS),各种网络环境(有线、wifi、4G),以及各种情况下的直播恢复(服务器重启、网络重启、硬件设备重启)。

EasyRTMP架构1.png

调用方法

EasyRTMP_File:EasyRTMP做为RTMP推送端,将本地文件推送到RTMP流媒体服务器;

EasyRTMP_RTSP:将RTSP/RTP数据获取到本地,再通过EasyRTMP推送到RTMP服务器;

EasyRTMP-Android:Android安卓RTMP直播推流,采集安卓手机前/后摄像头、麦克风音视频推送直播;项目地址:https://github.com/EasyDSS/EasyRTMP-Android

EasyRTMP-iOS:iOS苹果RTMP直播推流,采集苹果手机前/后摄像头、麦克风音视频推送直播;项目地址

提出问题

EasyRTMP-iOS录像的实现方式是什么?

分析问题

iOS在实现视频录制功能的时,如果单纯的使用AVCaptureMovieFileOutput将录制的视频文件进行输出,则会导致录制的视频文件太过于大。而使用AVAssetWriter 实现高分辨率录制视频,生成低体积的视频文件。

解决问题

AVAssetWriter实现视频录制的流程如下:
1、初始化AVAssetWriter,需要输入文件在沙盒中的路径,并设置视频文件的大小已属性:

21.png

2、将AVCaptureAudioDataOutputSampleBufferDelegate的回调中获取到的视频和音频的原始数据写入到文件中:

写入视频数据:

22.png

写入音频数据:

23.png

3、同时可以将录像的进度回调出去:

24.png

4、最后完成视频的录制:

25.png

猜你喜欢

转载自www.cnblogs.com/TSINGSEE/p/11643080.html