NodeMedia Dev Server是基于nginx-rtmp-module编译的windows版RTMP服务端完整实例。无需配置,一键运行,是您快速开发,测试,验证RTMP流的好帮手。
可以用来开发:视频直播间,音视频聊天,游戏直播,远程视频监控等。
包含以下实用工具:
- RTMP流媒体服务端
- Flash Rtmp流播放器
- Flash HLS直播流播放器
- Flash Rtmp摄像头视频发布器
- Flash 视频聊天Demo
- 批处理版的视频流循环发布器。
NodeMedia Dev Server是基于nginx-rtmp-module编译的windows版RTMP服务端完整实例。无需配置,一键运行,是您快速开发,测试,验证RTMP流的好帮手。
可以用来开发:视频直播间,音视频聊天,游戏直播,远程视频监控等。
包含以下实用工具:
实时的摄像头采集,实时编码,实时发布到流媒体服务器,进行视频直播。视频采用H.264,音频采用AAC,可根据需求发布480×360,320×240,240×180分辨率的视频。可控帧率,码率。320×240分辨率@10fps 中等质量,码率为160kbps左右,非恒定。cpu占用30%左右。
客户端使用Flash播放,跨平台兼容性好。
也可配合使用Android iOS SDK开发手机客户端。
前往下载:http://www.nodemedia.cn/zh/client/NodeMediaClient-Android/
RTMP协议的实时视频播放客户端开发库,jni开发,java接口,可配合Adobe Flash Media Live Encoder 3.2或Android iOS直播发布端SDK进行实时视频直播。
前往下载:http://www.nodemedia.cn/zh/client/NodeMediaClient-Android/
非常多的改进,比较感兴趣的是正式支持openh264作为编码器了。
openh264使用宽松的BSD许可协议,由cisco主导发布。
思科并不是第一个去创建H.264的开源实现的。GNU的libavcodec库已经包括了解码器和编码器,后者基于x264。但是思科提供的开源实现是有法律支持的 – 而这正是其它的开源实现所缺乏的。这使得思科的解码器对象Mozilla这样的公司来说就非常有用,这可以使得它们无需担心法律问题。
另外还支持了Nvidia nvenc的硬件编码器,这无疑加强了了作为云端流媒体转码的优势!
后期做个x264与openh264的性能测试。
关于Android5.0开放的Native-codec测试一文中有提到4.0通过OpenMAX AL接口实现硬解码。可以先从分析native-media这个sample开始,可以在ndk目录中找到。
其实是2个,一个基于fibjs,一个基于nodejs
两个版本大部分是一样的,只是在数据处理方面有差异。
fibjs版本:https://github.com/illuspas/NodeMediaServer
fibjs没有回调一说,同步的流程写起来相当舒服。
nodejs版:https://github.com/illuspas/Node-Media-Server
nodejs的数据是on(‘data’)回调回来的,解析rtmp包很费劲,需要根据包头一步一步分析出需要的包大小。为此写了个QueueBuffer类,请求的数据大小足够即返回,不够就回压再等待数据下次继续解析。
目前只支持了H264+AAC,支持多路发布和播放。
fibjs版目前在大并发的时候会阻塞发布端,写得有点问题,空了再改改。
没有缓冲关键帧,播放的启动时间可能会等下一个关键帧来了才开始
此项目仅为空闲时写着玩的,参照了很多别人的代码,并不会长期维护。如果你感兴趣,欢迎fork。
久了没更新NDK,今天下载了r10d,惊讶的发现多了个native-codec这个sample。
应该就是API 16那个JAVA版MediaCodec的native版
限制就是 最低 api 21 就是Android 5.0
这限制基本上近期都没戏了,先去刷个5.0的系统再来测试。
=============2015年2月10日,测试结果来了======================
下载最新x264源码 ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
下载gas-preprocessor https://github.com/libav/gas-preprocessor 并copy到 /usr/local/bin/gas-preprocessor.pl
继续阅读“转一段 Xcode6 下编译x264的脚本”
最近在做全志A20的Android系统开发,经常需要调试script.fex文件中的参数。
会经常用到sunxi-tools中的几个工具
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
fexc: `.fex` file (de)compiler Usage: ./fexc [-vq] [-I <infmt>] [-O <outfmt>] [<input> [<output>]] infmt: fex, bin (default:fex) outfmt: fex, bin (default:bin) bin2fex: compatibility shortcut to call `fexc` to decompile an script.bin blob back into `.fex` format used by allwinner's SDK to configure the boards. fex2bin: compatiblity shortcut to call `fexc` to compile a `.fex` file into the binary form used by the sun4i kernel. |
后来需要在windows下工作 切换环境很麻烦 所以用cygwin编译了sunxi-tools 并写了几个脚本文件,方便多了
阅读ffmpeg串流的手册FFmpeg Streaming Guide
当进行点对点串流时
如果视频编码为H.264时,payload type 为 96
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ ffmpeg -re -i sample1.mp4 -an -c copy -f rtp rtp://127.0.0.1:12345 Output #0, rtp, to 'rtp://127.0.0.1:12345': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf55.48.100 Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 424x240, q=2-31, 420 kb/s, 24 fps, 90k tbn, 24 tbc (default) Metadata: handler_name : VideoHandler Stream mapping: Stream #0:0 -> #0:0 (copy) SDP: v=0 o=- 0 0 IN IP4 127.0.0.1 s=No Name c=IN IP4 127.0.0.1 t=0 0 a=tool:libavformat 55.48.100 m=video 12345 RTP/AVP 96 b=AS:420 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAHpZiA2P8vCAAAAMAIAAABgHixck=,aMuMsg==; profile-level-id=42C01E |
此时会自动输出一段SDP的代码,这时候如果直接播放 继续阅读“使用ffmpeg进行rtp串流h.264时关于sdp的一些分析”