实时监控、直播流、流媒体、视频网站开发方案设计简要

一、本地推送端

1、本地:采用javaCV(安卓和java平台推荐javaCV)、ffmpeg、openCV或者jmf可以很方便的获取到本地摄像头流媒体

javaCV系列文章:

javacv开发详解之1:调用本机摄像头视频

javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)

javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)

javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)

javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)

javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)

补充篇:

音视频编解码问题:javaCV如何快速进行音频预处理和解复用编解码(基于javaCV-FFMPEG)

音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例

实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)


2、监控(第三方摄像头):通过设备sdk或者rtsp直播流获取流媒体源

二、转流端

直播:通过ffmpeg(推荐),live555将接受rtsp或者码流转为flv格式发布到rtmp流媒体服务器(流媒体服务器必须先建好)
注意:rtmp只支持flv格式封装的视频流
ffmpeg服务实现方式实例请参考:
http://blog.csdn.net/eguid_1/article/details/51777716
http://blog.csdn.net/eguid_1/article/details/51787646

也可以参考javaCV的转流器实现: javaCV开发详解之4:转流器实现,实现rtsp/rtmp/本地文件转发到rtmp服务器   
java封装FFmpeg命令,支持原生ffmpeg全部命令,实现FFmpeg多进程处理与多线程输出控制(开启、关闭、查询),rtsp/rtmp推流、拉流

三、流媒体服务器

目前主流的流媒体服务器有:fms,nginx-rtmp,red5(java),flazr(java)
本地视频:直接通过流媒体服务器解码并推送视频流
直播流:通过监听rtmp端口,从ffmpeg获取推送过来的实时视频流并发布到rtmp直播流并推送(可以边直播边保存)

补充:nginx-rtmp流媒体服务器搭建实例: http://blog.csdn.net/eguid_1/article/details/51749830

nginx-rtmp配置指令详细含义和用法:http://blog.csdn.net/eguid_1/article/details/51821297

四、播放端(收流端)

直播:通过flex(flash)播放器或者第三方播放器(videoJS,ckplayer,VideoLAN 等...)调用流媒体服务器的流媒体源解码并播放,如果不需要兼容低版本IE,可以采用HTML5的webSocket播放器,videoJS是flash/html5双核播放器。

视频:通过html自带播放器、flex(flash)播放器或者第三方播放器(videoJS,ckplayer,VideoLAN 等...)进行播放
videoJS/ckplayer播放器二次开发支持rtmp直播、hls直播及普通视频播放:http://blog.csdn.net/eguid_1/article/details/51898912

一般使用videoLAN播放器作为测试工具,用于测试音视频流发布状况
补充:
1、如果是采用nginx服务器,它提供的rtmp模块可以发布rtmp直播、录播及hls,nginx可以把ffmpeg整合进去方流媒体后期处理(加水印等)。
2、java是可以调用ffmpeg的,通过jni的方式有两种方法:
2.1、javaCV1.2支持通过javacpp调用ffmpeg,javaCV目前整合了8种流媒体处理框架,是安卓和javaEE平台不可或缺的强大流媒体处理利器 
2.2、javaAV(目前最新0.7,release最新0.5)提供了对java调用ffmpeg的支持,当前已停止更新

你可能感兴趣的:(nginx,Flex,ffmpeg,RTMP,fms)