使用MSYS2编译Windows平台FFmpeg问题集合

1.安装了speex但找不到

2.configure 配置完以后提示找不到cmp命令

……后续继续补充

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 使用MSYS2编译Windows平台FFmpeg问题集合

适用于Raspberry Pi的RTMP直播推流器

很早前入了个Raspberry Pi 1代和一个摄像头模组,准备做直播推流设备.

尝试过第一个方案:
raspivid+ffmpeg串流rtmp直播,效果不太好.
ffmpeg对输入流分析太费时,影响直播的时效性.

第二个方案:
后来ffmpeg-3.1好像,更新了OMX实现的H.264编码器,Raspberry Pi通过插入bcm2835-v4l2内核模块,映射出/dev/video0设备,ffmpeg再使用V4L2接口直接进行取摄像头并硬件编码推流.
720分辨率也能行,30帧没有问题,CPU也占用很少,但缺点是分辨率增大后(1080),v4l2取摄像头数据的帧率实在太低,只有6帧左右.
并且不能像raspivid那样方便的设置摄像头参数,比如水平\垂直翻转,角度旋转,亮度,ISO,白平衡这些.
这个方案也被pass.

第三个方案:
参照raspivid,使用OpenMAX IL接口进行摄像头数据捕获->硬件编码->rtmp传输.这个需要进行一点编程开发,由于后来做NodeMediaClient项目,一直耽搁了.
继续阅读“适用于Raspberry Pi的RTMP直播推流器”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 适用于Raspberry Pi的RTMP直播推流器

替换Homebrew源为中科大镜像

国内homebrew使用体验很的很差,主要问题是访问github速度太慢,经常卡死在update.

国内homebrew使用体验很的很差,主要问题是访问github速度太慢,经常卡死在update.
替换为中科大镜像,立即起飞.
首先替换Git repo

然后替换Bottles

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 替换Homebrew源为中科大镜像

macOS 10.12 Sierra上开启原生NTFS写入

Mac上自动挂载的磁盘本身是不允许NTFS写入的。
本文使用osxfuse和ntfs-3g免费原生支持

Mac上自动挂载的磁盘本身是不允许NTFS写入的。
有几款商用软件,像Tuxera NTFS和Paragon NTFS,如果喜欢正版可以支持。
这里介绍一种免费的方式,ntfs-3g 继续阅读“macOS 10.12 Sierra上开启原生NTFS写入”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: macOS 10.12 Sierra上开启原生NTFS写入

RTMP流媒体服务端应用开发系列 – Nginx-Rtmp-Win32实时转码

首先,为什么需要转码?
目前,Flash作为跨平台,跨浏览器的多媒体插件,在基于浏览器的视频直播发布应用上,仍然是不可替代的.
但它输出RTMP直播流时有个致命问题,只支持Speex或NellyMoser,不支持AAC音频编码.
即使是Flash Media Live Encoder这种应用程序仍然需要购买付费差价才能支持,不知道Adobe是处于什么考虑.
支持AAC有什么好处? 那太多了.
1.转出的HLS流可以直接被iOS/Android播放,可以使用HTML5技术在绝大多数浏览器内进行播放.
2.转出的HTTP-FLV流也可以依靠flv.js在绝大多数浏览器内进行播放,并且实时性非常好.
3.保存的录像文件可以被绝大多数播放器直接播放,speex/nellymoser很可能就无声了.

Nginx-Rtmp-Win32程序怎么实时转码? 继续阅读“RTMP流媒体服务端应用开发系列 – Nginx-Rtmp-Win32实时转码”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: RTMP流媒体服务端应用开发系列 – Nginx-Rtmp-Win32实时转码

RTMP流媒体服务端应用开发系列 – Nginx-Rtmp-Win32仿星域CDN鉴权配置

Nginx-Rtmp-win32 服务器开启仿星域CDN的鉴权配置,播放防盗链,推流鉴权

之前在RTMP流媒体服务端应用开发系列 – Nginx-Rtmp鉴权设置这篇中介绍了Nginx-Rtmp服务器通过on_play和on_publish事件回调到http服务上,再用ngx_http_secure_link_module进行鉴权.

今天介绍一种原生的方式

注:只在博主编译的Nginx-Rtmp-Win32版本中有此功能
下载https://github.com/illuspas/nginx-rtmp-win32/archive/master.zip版本

首先配置nginx.conf

继续阅读“RTMP流媒体服务端应用开发系列 – Nginx-Rtmp-Win32仿星域CDN鉴权配置”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: RTMP流媒体服务端应用开发系列 – Nginx-Rtmp-Win32仿星域CDN鉴权配置

在Android端SDK实现了RTMFP协议

做直播这门也有个5年多了,RTMFP协议是梦寐以求的移动客户端实现.在今天,还是成功实现到Android上了.

注意,不是flash,不是AIR哦,而是真正原生c\c++实现.

rtmfp是个激动人心的技术,udp传输\p2p连接\NetGroup,很可能改变直播行业的现状.

欢迎尝鲜:https://github.com/NodeMedia/NodeMediaClient-Android/releases/tag/v2.0.1

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 在Android端SDK实现了RTMFP协议

SRS-win32 版更新,支持HTTP-FLV

srs-win32编译版 simple rtmp server是Linux环境下运营级流媒体服务器SRS的windows编译版,目的是方便windows平台开发者快速部署流媒体服务器开发测试环境.
同经典的Nginx-Rtmp-Win32项目一样,SRS-win32编译版提供了基本的RTMP\HLS服务.另外,还提供了目前直播app中非常流行的HTTP-FLV格式.
同样,该项目不建议做运营使用,项目是在cygwin环境下编译,默认最大打开文件数256,尽管可以在cygwin环境下修改ulimit数(2016.9.22:最新版2.0.217已默认设置最大打开文件数1024,注意:后来经过验证,即使是改了这地方,程序仍然不能开上百个连接), 但是由于没有Linux环境的epoll,无法高并发.但作为开发测试用已经足够了.
非常建议之前使用Nginx-Rtmp-Win32的开发者使用此项目.

都散了吧,博主精力有限,不会再出新版本了.
如果希望使用Windows平台开发,可以试试博主用Node.js实现的服务端:Node-Media-Server  真正跨平台,高性能谈不上,但上千路没有一点问题.流媒体服务不像HTTP,连接数还没上去,带宽已经跑满了,别太在意并发数.支持RTMP输入,RTMP/HTTP-FLV/WEBSOCKET-FLV输出,支持GOP_CACHE,推流鉴权,播放防盗链.

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: SRS-win32 版更新,支持HTTP-FLV

Eclipse开发Android-NDK项目自动生成javah头文件

博主双修Android,iOS底层库开发也有好几年了,一直盼望Android平台能有Xcode那样强大的IDE,尽管Eclipse的ADT插件也能很好的代码提示,自动补全,但每次新开类生成javah文件也是比较头疼的。

Android Studio从1.3版本开始说是加强NDK的接入,引入了『com.android.tools.build:gradle-experimental』,从功能使用上来看还是挺好的,比如能在java层自动生成对应的jni方法,并能在java和c\c++之间函数跳转,还能自动生成一些简单的env操作,比如转换String类。但是,这个gradle-experimental的写法和默认的gradle差别太大,到博主发这篇帖子是,AS2.1.2仍然还在开发这个插件。AS 2.2 preview版已经可以支持cmake和mk的编译了,而且cmake作为新建项目时勾选c++支持的默认形式了,难道要放弃gradle-experimental 🙁 。目前还不支持代码提示,跳转这些基本操作,后面的版本应该会加强吧。

另外还有一个比较严重的问题,Android Studio好慢,越来越慢了,经常导入一个项目卡半天,最后只能强制退出。项目编译起来,i7-4790都觉得用起来卡。博主到现在仍然使用最经典的Eclipse Indigo,哈哈。

废话完了,现在帖正题,Eclipse其实也是很强大的,我这里利用Ant脚本来实现自动化编译javah头文件。 继续阅读“Eclipse开发Android-NDK项目自动生成javah头文件”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Eclipse开发Android-NDK项目自动生成javah头文件

RTMP流媒体服务端应用开发系列 – Nginx-Rtmp鉴权设置

鉴权验证在自建直播流媒体服务端应用中是非常重要的。用以防止非法推流,控制收费播放盗链等场景。
目前各大直播云平台都支持url参数形式的鉴权验证法,例如rtmp://serverhost/app-name/stream-name?key=md5(secret+expires_timestemp)&time=expires_timestemp 这种既有私密key,又有时间戳过期判断的最简单形式,当然还能根据使用场景增加其他判断条件。
Nginx-Rtmp模块作为rtmp直播流媒体服务端,本身没有这种鉴权验证法,但能通过Notify 转为本地的http请求,使用Nginx内置的ngx_http_secure_link_module即能达到同样效果。

首先利用Nginx-Rtmp的on_play通知,将rtmp的播放事件通知到本地的http处理上来 继续阅读“RTMP流媒体服务端应用开发系列 – Nginx-Rtmp鉴权设置”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: RTMP流媒体服务端应用开发系列 – Nginx-Rtmp鉴权设置