摄像头采集,264编码,live555直播(1) - 萍乡安防监控培训学校

欢迎来到湖南阳光电子学校-安防监控培训专家!十年安防监控培训经验,培养5000合格人才。专业安防监控培训学校。24小时值班手机:13807313137   微信号:yp94168
我们的优势: 专业安防监控学校,顶尖技师为你量身定制 传授安防核心技术、监控核心技术 保障100%的学员能真正学会学懂 达到独立设计安装安防监控设备 承诺:包工作!
安防监控培训,安防监控培训班,安防监控培训学校,安防监控培训中心

摄像头采集,264编码,live555直播(1) - 萍乡安防监控培训学校

当前位置:主页 > 监控技术 >   更新时间:2017-11-01 00:00   已经有人围观 |  作者:网络采编  来源:网络整理

参看 有关live555 

1.首先需要修改live555,定义从 内存中直接获取source而不是从文件读取source的类。

自己实现的类命名为 H264FramedLiveSource 

 

H264FramedLiveSource.hh

/* * Filename: H264FramedLiveSource.hh * Auther: chenbin * Create date: 2013/ 1/22 */ #ifndef _H264FRAMEDLIVESOURCE_HH #define _H264FRAMEDLIVESOURCE_HH #include <FramedSource.hh> class H264FramedLiveSource : public FramedSource { public: static H264FramedLiveSource* createNew(UsageEnvironment& env, char const* fileName, unsigned preferredFrameSize = 0, unsigned playTimePerFrame = 0); protected: H264FramedLiveSource(UsageEnvironment& env, char const* fileName, unsigned preferredFrameSize, unsigned playTimePerFrame); // called only by createNew() ~H264FramedLiveSource(); private: doGetNextFrame(); int TransportData( unsigned char* to, unsigned maxSize ); protected: FILE *fp; }; #endif

H264FramedLiveSource.cpp

/* * Filename: H264FramedLiveSource.cpp * Auther: mlj * Create date: 2013/ 1/22 */ #include H264FramedLiveSource::H264FramedLiveSource( UsageEnvironment& env, char const* fileName, unsigned preferredFrameSize, unsigned playTimePerFrame ) : FramedSource(env) { fp = fopen( fileName, ); } H264FramedLiveSource* H264FramedLiveSource::createNew( UsageEnvironment& env, char const* fileName, unsigned preferredFrameSize , unsigned playTimePerFrame ) { H264FramedLiveSource* newSource = new H264FramedLiveSource(env, fileName, preferredFrameSize, playTimePerFrame); return newSource; } H264FramedLiveSource::~H264FramedLiveSource() { fclose(fp); } long filesize(FILE *stream) { long curpos, length; curpos = ftell(stream); fseek(stream, 0L, SEEK_END); length = ftell(stream); fseek(stream, curpos, SEEK_SET); return length; } void H264FramedLiveSource::doGetNextFrame() { if( filesize(fp) > fMaxSize) fFrameSize = fread(fTo,1,fMaxSize,fp); else { fFrameSize = fread(fTo,1,filesize(fp),fp); fseek(fp, 0, SEEK_SET); } //fFrameSize = fMaxSize; nextTask() = envir().taskScheduler().scheduleDelayedTask( 0, (TaskFunc*)FramedSource::afterGetting, ; }

 

在 H264FramedLiveSource::doGetNextFrame() 中,将要发送的内容复制到 fTo,最大为fMaxSize,fFrameSize指示实际发送的内容是多少字节。这里暂时还是从文件读作为测试。

 

2、定义自己的ServerMedia 

H264LiveVideoServerMediaSubssion.hh

/* * Filename: H264LiveVideoServerMediaSubssion.hh * Auther: mlj * Create date: 2013/ 1/22 */ #ifndef _H264_LIVE_VIDEO_SERVER_MEDIA_SUBSESSION_HH #define _H264_LIVE_VIDEO_SERVER_MEDIA_SUBSESSION_HH #include H264LiveVideoServerMediaSubssion: public H264VideoFileServerMediaSubsession { public: static H264LiveVideoServerMediaSubssion* createNew( UsageEnvironment& env, char const* fileName, Boolean reuseFirstSource ); protected: // we're a virtual base class H264LiveVideoServerMediaSubssion( UsageEnvironment& env, char const* fileName, Boolean reuseFirstSource ); ~H264LiveVideoServerMediaSubssion(); protected: // redefined virtual functions FramedSource* createNewStreamSource(unsigned clientSessionId, unsigned& estBitrate); public: char fFileName[100]; }; #endif

百度收录查询:摄像头采集,264编码,live555直播(1) - 萍乡安防监控培训学校
学员报名须知 您所需要了解的问题
安防监控技术学校
安防监控技术学校
安防监控技术学校
返回顶部
电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 空调维修学校 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 空调维修学校 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 空调维修学校 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 空调维修学校 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校