ffmpeg
文章平均质量分 77
「已注销」
这个作者很懒,什么都没留下…
展开
-
记一次ffmpeg进程阻塞的问题排查过程
ffmpeg进程莫名阻塞,经过排查发现问题可能处在aac编码使用了固定码率导致,加上-qscale:a 4参数后得以解决原创 2022-02-24 22:14:52 · 3774 阅读 · 0 评论 -
EasyDarwin服务器的配置文件的使用说明
EasyDarwin是一款高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、WEB后台管理、分布式负载均衡,基于EasyDarwin构建出了一套基础的流媒体云视频平台架构!配置文件类型EasyDarwin提供了默认配置文件和指定自定义配置文件的两种方式,详细说明见下表:配置...原创 2018-12-08 15:51:27 · 7276 阅读 · 0 评论 -
EasyDarwinGo录像功能发布
EasyDarwin服务器现在使用Go版本实现了。最新的代码提交,已经支持了推流(或者拉流)的同时进行本地存储。本地存储的原理,是在推流的同时启动ffmpeg作为一路Client来做存储。ffmpeg在demux和mux的工作方面已经十分成熟,我们没必要再重复发明轮子。因此这种做法十分取巧而且简单有效,也不会侵入原来的代码架构。如下图所示:RTSP摄像机EasyDarwin本地存储推流使用f...原创 2018-11-17 15:43:47 · 53841 阅读 · 26 评论 -
EasyPlayer支持YUV数据导出功能
我们可能会遇到这样的功能,播放一个视频的同时,再把这个视频推送出去,或者对视频数据进行智能分析等处理.这样我们就迫切需要得到视频的原始数据.基于这个需求,EasyPlayer增加了获取视频YUV数据的功能. 它的原理是这样的:Created with Raphaël 2.1.2EasyPlayerClientEasyPlayerClientDecoderDecoderYUVYUV读取媒体...原创 2018-02-10 10:44:01 · 785 阅读 · 2 评论 -
使用EasyPusher SDK进行便捷开发
基于EasyPusher sdk库工程(即library module)实现一个推送客户端非常简单便捷,因为sdk端已经将各种烦人的状态维护\错误检查\权限判定\UI同步等功能都实现了,开发者仅仅只需要实现若干接口即可.让我们看看如何实现一个Pusher吧!首先我们介绍一下Pusher sdk的封装用到了哪些技术.Android Architecture ComponentsAndroid ar原创 2017-12-25 19:50:01 · 2310 阅读 · 1 评论 -
Android UVC外接摄像头推送-EasyPusher
最近EasyPusher针对UVC摄像头做了适配.我们结合了UVCCamera与EasyPusher,支持将UVC摄像头的视频推送到RTSP服务器上.在此特别感谢UVCCamera这个牛逼的项目!来看看是怎么操作UVC摄像头的吧.我们实现了一个专门检测UVC摄像头的服务:UVCCameraService类,主要代码如下:监听mUSBMonitor = new USBMonitor(this, new原创 2017-12-25 15:49:21 · 4045 阅读 · 0 评论 -
EasyRTMP 1.3.17.1014版本更新
EasyRTMP 1.3.17.1014版本更新这个版本主要更新了如下内容:关于界面调整.由于业务需求,app的关于界面需要同时起到我们产品宣传的作用,因此我们决定将关于界面内容更完善些,于是乎就改成如下这样子: 这个界面使用了ConstrantLayout进行布局.其代码如下:<?xml version="1.0" encoding="utf-8"?><layout xmlns:app="ht原创 2017-10-14 16:31:12 · 853 阅读 · 0 评论 -
EasyPlayer支持H265视频解码
之前有博客介绍了android端H265硬解码的实现,见文章:http://blog.csdn.net/jyt0551/article/details/74502627 现在我们介绍一下在EasyPlayer端如何实现H265解码. 我们的策略是,在能支持硬解码的手机上使用硬解码,但是如果手机不支持,那也可以使用软解码来实现. 我们可以通过编译ffmpeg,使能hevc解码库,从而支持265的原创 2017-10-08 08:37:57 · 8866 阅读 · 0 评论 -
EasyRTMP手机直播推流到EasyDSS进行RTMP直播过程中分辨率反复切换崩溃问题解决
前篇博客介绍了Android EasyRTMP App的一些功能以及简单实现.这篇博客介绍一下我们遇到的一个BUG,以及它的出现原因,解决方式.这个bug是在切换分辨率的时候,偶尔会出现App崩溃.我们经过不断测试发现在低分辨率切换至高分辨率的时候更容易出现,后来查看日志,发现打印的日志比较奇怪,是一些Native层的崩溃,并没有任何堆栈信息展示:--------- beginning of cra原创 2017-10-07 14:34:04 · 2060 阅读 · 0 评论 -
在EasyPlayerPro上实现一键平稳切换视频源的功能
经常会遇到这样的需求,播放器支持动态切换视频源.典型的应用就是在电视上切换频道了.市面上的播放器,在切换视频源时,可能需要将当前播放器release,再创建新的来进行加载,这样基本都存在闪一下黑屏的问题,个人感觉不是很好.那如何使得这两个视频平稳过度呢,比如在先一个视频未渲染之前,先停留在前一段视频的最后一帧画面(或许再加上个磨砂效果),会不会更好些?下面就简单介绍一下实现原理与方法.原理就是给视频原创 2017-09-16 16:37:51 · 919 阅读 · 0 评论 -
EasyPlayer支持x86和arm64 ABI
不久之前,EasyPlayer仅支持armeabi-v7a版本的abi——怎么说呢——通常可以满足需求了。因为安卓对于ABI的支持是做了兼容的,非arm架构的,可以通过某种方法兼容ARM架构的动态库。但是这样的确会损害一些性能。。本着精益求精的态度,我们打算再支持一些主流的CPU架构,典型的就是arm64和x86了。主要涉及到下面一些库的修改: - libEasyRTSPClient - lib原创 2017-08-15 23:29:20 · 913 阅读 · 0 评论 -
ffmpeg的编译选项浅析
熟悉ffmpeg的同学都知道在编译ffmpeg的时候,可以”定制”一些模块,只使能需要的模块,不使能多余的模块。比如如果我们需要一个视频编码库,可能只使能x264就足够了,用这句:–enable-libx264.如果需要解析RTSP协议,那只使能rtsp模块,用这句:–enable-demuxer=RTSP.这样一来可以提高我们的编译速度,二来编译出来的库或者可执行文件也不会很大。想必每个人初次接触原创 2017-08-10 22:49:00 · 1752 阅读 · 0 评论 -
ffmpeg probe过程总结
fffmeg 通过avformat_open_input函数来打开媒体流.在这个函数中,首先做一些初始化工作,并设置一些option(比如ffplay 里面传入的一些参数),再调用init_input进行probe.我们在这里简单介绍一些probe的过程.// Open input file and probe the format if necessary. */static int init_原创 2017-08-09 23:14:15 · 7220 阅读 · 1 评论 -
EasyPlayerPro基于FFMPEG实现播放同时进行录像的功能
之前有博客专门介绍了EasyPlayer的本地录像的功能,简单来说,EasyPlayer是一款RTSP播放器,它将RTSP流里的音视频媒体帧解析出来,并用安卓系统提供的MediaMuxer类进行录像.那EasyPlayerPro可以这样实现吗?答案是不太现实,因为Pro支持绝大多数的流媒体协议,并不单单是RTSP协议,包括hTTP\RTSP\RTMP\HLS\FILE等格式都支持.要将这些数据分别解原创 2017-07-09 15:56:37 · 1871 阅读 · 1 评论 -
EasyPlayer Android音频解码库(第一部分,ffmpeg-android的编译)
ffmpeg是一套开源的,完整的流媒体解决方案。基于它可以很轻松构建一些强大的应用程序。对于流媒体这个行业,ffmpeg就像圣经一样的存在。原创 2016-09-13 00:38:24 · 3014 阅读 · 0 评论 -
EasyPlayer Android音频解码库(第二部分,封装解码器接口)
上一节我们讲了如何基于ffmpeg-android工程编译安卓上的支持音频的ffmpeg静态库,这篇文章我们将介绍如何封装安卓的解码器。首先,为了能让我们的app调用调用,我们需要定义一套Java的native接口,解码器主要有三个接口:create 创建解码器,参数分别为: codec:音频编码格式,参考EasyTypes.h里面的EASY_SDK_AUDIO_CODEC_*宏定义;sam原创 2016-09-17 12:42:58 · 1300 阅读 · 0 评论