Android RTMP Live Player SDK

RTMP协议的实时视频播放客户端开发库,jni开发,java接口,可配合Adobe Flash Media Live Encoder 3.2或Android iOS直播发布端SDK进行实时视频直播。

  • 音频解码器:AAC,mp3,nellymoser,speex
  • 视频解码器: H.264,flv
  • 协议:RTMP,RTMPT
  • ARMV7-A Neon加速
  • 极速精简内核,so库仅1.4M

前往下载:http://www.nodemedia.cn/zh/client/NodeMediaClient-Android/

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

本文链接地址: Android RTMP Live Player SDK

FFmpeg 2.6 发布

非常多的改进,比较感兴趣的是正式支持openh264作为编码器了。
openh264使用宽松的BSD许可协议,由cisco主导发布。

思科并不是第一个去创建H.264的开源实现的。GNU的libavcodec库已经包括了解码器和编码器,后者基于x264。但是思科提供的开源实现是有法律支持的 – 而这正是其它的开源实现所缺乏的。这使得思科的解码器对象Mozilla这样的公司来说就非常有用,这可以使得它们无需担心法律问题。

另外还支持了Nvidia nvenc的硬件编码器,这无疑加强了了作为云端流媒体转码的优势!
后期做个x264与openh264的性能测试。

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

本文链接地址: FFmpeg 2.6 发布

Android 4.0以上系统硬件解码RTMP流的一种方式

关于Android5.0开放的Native-codec测试一文中有提到4.0通过OpenMAX AL接口实现硬解码。可以先从分析native-media这个sample开始,可以在ndk目录中找到。

  1. 首先调用Java_com_example_nativemedia_NativeMedia_createEngine ?创建引擎和output mix 对象。
  2. Java_com_example_nativemedia_NativeMedia_setSurface 将java层的Surface对象转为NativeWindow对象用于视频显示
  3. Java_com_example_nativemedia_NativeMedia_createStreamingMediaPlayer ?初始化data source、?audio sink、image video sink、media player等对象 ,注册AndroidBufferQueueCallback?StreamChangeCallback两个回调,调用enqueueInitialBuffers预填充部分初始数据。
  4. enqueueInitialBuffers中通过读取ts文件获取足够量的buffer用于初始化
  5. AndroidBufferQueueCallback 的注释:?register the callback from which OpenMAX AL can retrieve the data to play,程序回调这里说明可以读buffer开始播放了

继续阅读“Android 4.0以上系统硬件解码RTMP流的一种方式”

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

本文链接地址: Android 4.0以上系统硬件解码RTMP流的一种方式

开源一个基于js的RTMP服务端

其实是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。

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

本文链接地址: 开源一个基于js的RTMP服务端

来晚了的 NativeCodec

久了没更新NDK,今天下载了r10d,惊讶的发现多了个native-codec这个sample。
应该就是API 16那个JAVA版MediaCodec的native版
限制就是 最低 api 21 就是Android 5.0
这限制基本上近期都没戏了,先去刷个5.0的系统再来测试。

=============2015年2月10日,测试结果来了======================


继续阅读“来晚了的 NativeCodec”

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

本文链接地址: 来晚了的 NativeCodec

转一段 Xcode6 下编译x264的脚本

下载最新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的脚本”

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

本文链接地址: 转一段 Xcode6 下编译x264的脚本

windows下全志 A20 Android script.fex 调试工具

最近在做全志A20的Android系统开发,经常需要调试script.fex文件中的参数。
会经常用到sunxi-tools中的几个工具

后来需要在windows下工作 切换环境很麻烦 所以用cygwin编译了sunxi-tools 并写了几个脚本文件,方便多了

步骤: 继续阅读“windows下全志 A20 Android script.fex 调试工具”

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

本文链接地址: windows下全志 A20 Android script.fex 调试工具

使用ffmpeg进行rtp串流h.264时关于sdp的一些分析

阅读ffmpeg串流的手册FFmpeg Streaming Guide
当进行点对点串流
如果视频编码为H.264时,payload type 为 96

此时会自动输出一段SDP的代码,这时候如果直接播放 继续阅读“使用ffmpeg进行rtp串流h.264时关于sdp的一些分析”

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

本文链接地址: 使用ffmpeg进行rtp串流h.264时关于sdp的一些分析

使用 NDK 编译 libyuv

官方源码:http://code.google.com/p/libyuv/
简介:

YUV层的缩放,色彩空间转换(nv21/nv12 to i420,i420 to rgb565/rgb888),针对ARMv7使用NEON指令集优化.实际项目使用中测试,缩放/转换性能秒杀ffmpeg的libswscale
按官方的编译方法太麻烦,需要装depot tools,ninja
这里直接用android make 方便的多.
继续阅读“使用 NDK 编译 libyuv”

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

本文链接地址: 使用 NDK 编译 libyuv