基于FFmpeg的视频推流
来源:互联网 发布:ipad怎么在淘宝找微淘 编辑:程序博客网 时间:2024/05/18 03:45
前几天 项目经理给了一个需求,是一个报警功能,类似直播,可以拍摄身边的景象上传到服务器,当时还以为是录制视频然后回传给服务器,后来上网google了一下 才发现不是这个样子的。FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。编码和推流,有两种方法来实现:一、javacv来实现
javacv地址:https://github.com/bytedeco/javacv
demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master
二、使用Android自带的编码工具,可实现硬编码,这里有一个开源的封装很完善的库yasea,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果。
yasea地址:https://github.com/begeekmyfriend/yasea
非常简单,只要导入library,并添加一些权限就可以了。
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <usespermissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" />
<net.ossrs.yasea.SrsCameraView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/glsurfaceview_camera" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" />
//java代码 需要实现接口 implements SrsEncodeHandler.SrsEncodeListener, RtmpHandler.RtmpListener, SrsRecordHandler.SrsRecordListener SrsCameraView cameraView = (SrsCameraView) findViewById(R.id.glsurfaceview_camera) mPublisher = new SrsPublisher(cameraView); //编码状态回调 mPublisher.setEncodeHandler(new SrsEncodeHandler(this)); mPublisher.setRecordHandler(new SrsRecordHandler(this)); //rtmp推流状态回调 mPublisher.setRtmpHandler(new RtmpHandler(this)); //预览分辨率 mPublisher.setPreviewResolution(1280, 720); //推流分辨率 mPublisher.setOutputResolution(720, 1280); //传输率 mPublisher.setVideoHDMode(); //开启美颜(其他滤镜效果在MagicFilterType中查看) mPublisher.switchCameraFilter(MagicFilterType.BEAUTY); //打开摄像头,开始预览(未推流) mPublisher.startCamera(); //mPublisher.switchToSoftEncoder();//选择软编码 mPublisher.switchToHardEncoder();//选择硬编码 //开始推流 rtmpUrl(ip换成服务器的部署ip):"rtmp://192.168.31.126/android/teststream" mPublisher.startPublish(rtmpUrl);
是不是很简单呢?
阅读全文
1 0
- 基于FFmpeg的视频推流
- 基于ffmpeg的内存数据UDP直播推流
- 基于FFMPEG的RTP推流H264和AAC文件
- SRS + ffmpeg 推即时视频流
- 基于ffmpeg的视频截图
- 基于FFMPEG的视频解码
- 快速集成iOS基于RTMP的视频推流
- 快速集成iOS基于RTMP的视频推流
- 快速集成iOS基于RTMP的视频推流
- 快速集成iOS基于RTMP的视频推流
- 快速集成iOS基于RTMP的视频推流
- Qt基于ffmpeg的rtsp视频流接收播放工具
- windows下ffmpeg音视频采集并推流【较乱,懒的整理了】
- windows下ffmpeg音视频采集并推流【较乱,懒的整理了】
- FFmpeg从视频文件中抽离视频并以udp+rtp+h264推流的命令
- 基于ffmpeg的音视频解码原理
- windows下ffmpeg音视频采集并推流
- FFmpeg 命令行推流 传视频到组播①
- java高级特性之泛型
- Java应用OpenCV指南其一:在Java中安装与配置OpenCV
- 在微信公众号中如何添加【自定义菜单】,原创图文教程
- Spring配置 <context:component-scan/> <mvc:annotation-driven />
- oracle 按每天,每周,每月,每季度,每年查询统计数据
- 基于FFmpeg的视频推流
- alibaba java coding Guidelines阿里巴巴代码规范指南插件的集成方法以及些小细节
- vscode, sublime, atom的快捷设置
- 非递归实现二叉树的后序遍历、前序遍历、中序遍历
- js 正则表达式判断非法字符 常用正则表达式
- Java使用HttpsURLConnection进行Get和Post请求(绕过证书验证)
- jquery text()
- 解决php读取txt文件时的换行问题
- 2017.10.16 水管局长&&水管局长数据加强版 思考记录