C++ rtmp ZeroC ICE

海阔天空 张翼飞翔

我的学习日记
随笔 - 77, 文章 - 2, 评论 - 126, 引用 - 0
数据加载中……

置顶随笔

[置顶]JSMpeg 低延时H5直播

     摘要: 【原创】 2019.09.05  JSMpeg项目地址:https://github.com/phoboslab/jsmpegJSMpeg 是一种采用Javascript解码音视频的技术,可用于视频直播或点播。 首先,我们为什么要用JSMpeg技术?HTTP-FLV技术在IOS系统下不被支持。WebRTC技术兼容性差。HTTP Live Streaming ...  阅读全文

posted @ 2019-09-07 18:33 ZhangEF 阅读(64) | 评论 (0)编辑 收藏

[置顶]RTMP协议发送H264 AAC音视频实例 C++实现的RTMP程序实例

(原创)
关键词:C++ RTMP协议 发送 H264 AAC  具体实现  发布直播  支持red5 fms  flash直播
我用C++实现了rtmp协议,实现了flash的publish的功能,支持red5 fms3等流媒体服务器。
1,采用x264压缩视频成H264格式,采用faac压缩音频成AAC格式。
2,音视频数据封装成RTMP包,并向FMS3发送直播流。
3,可录制,保存为MP4格式的文件存放在服务端, 可用来点播。
4,使用FlashPlayer可观看直播内容,或点播录制内容。

使用方法:
1,服务器使用FMS3.5以上。
2,将你的FlashPlayer版本升级到9.0.115以上。
3,在程序界面的Fms3 Url中将"rtmp://127.0.0.1/live/stream"修改成你实际FMS3地址。我这里Url格式是rtmp://[ServerIP]/[Application]/[StreamName]。
4.选择视频设备,如果您的计算机没有摄像头,可选择Screen,那么将捕捉您的计算机屏幕当做视频源。
5,选择音频设备,我这里选择的是 "Realtek HD Audio Input"。
4.点Encoder开始编码压缩,并开始发送直播流。如果发送成功则Encode按钮会变灰。
5.点Play可进行直播,如果成功会看到如下图像。
6.或者用其他flash播放器从fms上直播,播放用的url是rtmp://127.0.0.1/live/ ,流名是stream。

程序界面:
 


程序下载  FlashMediaEncoder
协议分析请参考http://www.cnweblog.com/fly2700/archive/2008/04/09/281431.html


posted @ 2008-04-02 23:57 ZhangEF 阅读(23538) | 评论 (44)编辑 收藏

2019年9月7日

JSMpeg 低延时H5直播

     摘要: 【原创】 2019.09.05  JSMpeg项目地址:https://github.com/phoboslab/jsmpegJSMpeg 是一种采用Javascript解码音视频的技术,可用于视频直播或点播。 首先,我们为什么要用JSMpeg技术?HTTP-FLV技术在IOS系统下不被支持。WebRTC技术兼容性差。HTTP Live Streaming ...  阅读全文

posted @ 2019-09-07 18:33 ZhangEF 阅读(64) | 评论 (0)编辑 收藏

wowza流媒体服务器部署笔记


好久没有用wowza服务器了,现在又要重新部署,时间长忘记了部署方法了。网上找资料版本都对不上。搞了半天终于搞好了,重新整理一下笔记。
wget https://www.wowza.com/downloads/WowzaStreamingEngine-4-7-7/WowzaStreamingEngine-4.7.7-linux-x64-installer.run
sudo chmod +x WowzaStreamingEngine-4.7.7-linux-x64-installer.run
sudo ./WowzaStreamingEngine-4.7.7-linux-x64-installer.run
cd /usr/local/WowzaMediaServer/bin
./startup.sh
然后不停回车,直到输入注册码. 注册码没有永久的,要么购买,要么免费申请申请一个。
官网注册账号https://www.wowza.com/pricing/trial
申请标准版license 30天试用, 注册完毕后会有个邮件把License发送到你的邮箱里面。
这里有个坑,申请开发版本("developer trial")的注册码不能用在这个版本安装包上。所以,记得要申请 "standard trial"
打开网页http://server_ip:1935/
有看到Wowza Streaming Engine 4 Trial Edition (Expires: Jun 22, 2016) 4.0.3 build10989代表啟動成功
这里有个坑,因为rtsp默认554改成了1935端口,  所以rtsp播放端口要改成1935,不然播不出来。
测试点播vod:
rtmp://server_ip/vod/mp4:sample.mp4
rtsp://server_ip:1935/vod/mp4:sample.mp4
推送直播流:
rtmp://server_ip/live/abc
播放RTSP视频直播流:
rtsp://server_ip:1935/live/abc
播放RTMP视频直播流:
rtmp://server_ip/live/abc
后台管理:
http://server_ip:8088/enginemanager/
evan
123---
 

posted @ 2019-09-07 18:24 ZhangEF 阅读(9) | 评论 (0)编辑 收藏

2017年5月9日

gdb 使用 笔记

gdb带参数: "gdb --args [app] [-param]" b 设置断点: "b src/aa.cpp:10" i 查看(断点) "i b" d 删除断点号 “d 4”; “d 2-10” dis 禁用断点号: "dis" ; "dis 4" en 启用断点号: "en"; "en 4" r 运行 l 列出代码 n 运行一行 s 单步进入 finish 跳出 c 继续 p 打印 "p buf"; "p/x buf"; "p/c buf" x 内存 "x addr"; "x/4 addr"; "x/4xb addr"; b:Byte w:4Byte h:2Byte q 退出 attach [pid] 跟进fork进程 # ./objs/srs -c ./conf/edge.conf # gdb -args ./objs/srs -v # gdb -args ./objs/srs -c ./conf/edge.conf

posted @ 2017-05-09 17:05 ZhangEF 阅读(57) | 评论 (0)编辑 收藏

2015年8月24日

基于flashplayer的视频播放优化

本文中如果无特别说明的地方,传输协议都是RTMP,服务器是FMS,播放器指的是Flashplayer。


问题:直播延大
原因1:编码参数未优化
解决1:从编码参数上可以减小视频关键帧间隔、减小带宽、将H.264编码改VP6编码或H.263编码。
原因2:服务器端缓冲数据过大
解决2:可以设置FMS参数,减小服务器端缓冲。
原因3:播放器端缓冲设置过大导致延时。
解决3:可以减小播放器缓冲到0.1秒,或设置零缓冲。
原因4:网络节点不稳定。
解决4:找ping值偏差稳定、不丢包的节点做边缘服务器。制作工具监控各个视频边缘服务器的带宽使用和连接数。

问题:直播延时越播越大,刚开始延时正常,播放一段时间后可以累积到30秒以上的延时。重连后延时又恢复正常。
原因1:网络抖动导致播放器缓冲增加,缓冲数据不能及时播放,反复累积使延时增加。
解决1:播放器设置最大播放缓冲,当缓冲过大的时候会加快播放速度5%左右。使缓冲数据快速播放完毕来减小延时。
如果加快播放速度仍然赶不上延时累积速度,可在编码中嵌入timecode,用来检查延时,当播放器端检查到延时很大,则丢弃缓冲数据,播放最新内容。
原因2:播放器端下行带宽不足。
解决2:增加客户带宽。

问题:回放播放过程中,反复加载视频
原因:视频采用的是可变码率(VBR)编码。 应该改用固定比特率模式(CBR),CBR模式可以限制最大瞬时码率,从而使视频播放更加平缓。
解决方法:编码参数限制最大码率,或更改为恒定码率。

问题:回放播放缓冲时间长,而且加载缓冲次数比较频繁。
原因:如果播放器的缓冲参数设置过大,会导致加载视频速度慢;如果设置太小会导致反复缓冲。这是2个相互矛盾的问题。而设置固定缓冲不能同时解决以上2个问题。
解决方法:利用编程来实现0.1秒缓冲立即播放,然后边播放边持续增加缓冲,缓冲大小不固定。同时解决以上2个问题。

问题:回放拖拽操作后,视频会停留很久才开始播放。
原因:拖拽后,播放器需要找到一个最近的关键帧才能开始播放。默认关键帧间隔10秒。如果刚好拖拽到一个关键帧的位置,则可以快速播放。否则会导致随机延迟1-9秒播放。
解决:减小关键帧间隔到2秒。

问题:回放往前面拖拽,重新观看,又需要重新加载视频
原因:视频数据在播放完毕后被立即清理。每次拖拽都从服务器请求数据。
解决方法:开启智能搜索。如果搜索的内容已经下载过,则不从服务器请求数据,拖拽后0.5秒即可播放。智能搜索可降低服务器负载并改进搜索速度。

问题:视频画面被拉伸,有锯齿。
原因:播放器尺寸和视频尺寸不一致导致画面锯齿。
解决方法:设置Video.Smoothvideo属性,平滑拉伸,从而提高画质。或将播放器宽高和视频尺寸设置一致。

问题:回放http视频,需要下载完毕才开始播放。
原因:metaData保存在视频文件尾部,播放器需要下载到metaData才能播放
解决方法:用 mp4box 或 qt-faststart 工具修复即可。

posted @ 2015-08-24 11:42 ZhangEF 阅读(634) | 评论 (2)编辑 收藏

2014年4月21日

PAL NTSC 制式 电视标准

     摘要: PAL NTSC 制式 电视标准  阅读全文

posted @ 2014-04-21 13:35 ZhangEF 阅读(115) | 评论 (0)编辑 收藏

2013年7月17日

Flex4 设置Flash Player版本

     摘要: 下载新版本的playerglobal.swc,放到对应的文件夹 例如如果下载的是11.5版本的,就放到 [app root]\sdks\4.0.0\frameworks\libs\player\11.5\
  阅读全文

posted @ 2013-07-17 14:08 ZhangEF 阅读(152) | 评论 (0)编辑 收藏

2013年6月10日

尼康镜头标识

     摘要: 尼康镜头标识 VR ED AF-S
  阅读全文

posted @ 2013-06-10 11:45 ZhangEF 阅读(93) | 评论 (0)编辑 收藏

2013年4月3日

一些照相机名词 CCD COMS 全画幅 APS-C画幅 1/3英寸CCD

     摘要: 一些照相机名词 CCD COMS 全画幅 APS-C画幅 1/3英寸CCD  阅读全文

posted @ 2013-04-03 10:06 ZhangEF 阅读(1665) | 评论 (0)编辑 收藏

2013年3月20日

HD-SDI YPbPr HDMI DVI 传输接口区别

     摘要: 真正意义上的高清接口包括HD-SDI、YPbPr、HDMI、DVI这几种,而从表1中可以很清晰地看到,在目前的高清数字接口中HD-SDI、 HDMI等接口各自的优势  阅读全文

posted @ 2013-03-20 17:37 ZhangEF 阅读(1500) | 评论 (0)编辑 收藏

2012年12月1日

Android权限列表

     摘要: Android权限列表  阅读全文

posted @ 2012-12-01 11:10 ZhangEF 阅读(194) | 评论 (0)编辑 收藏

2012年11月28日

TS流的解码过程-ES-PES-DTS-PTS-PCR

     摘要: 在ES层,与同步有关的主要是视频缓冲验证VBV(Video Buffer Verifier),用以防止解码器的缓冲器出现上溢或下溢;在PES层,主要是在PES头信息里出现的显示时间标签PTS(Presentation Time Stamp)和解码时间标签DTS(Decoding Time Stamp);在TS层中,TS头信息包含了节目时钟参考PCR(Program Clock Reference),用于恢复出与编码端一致的系统时序时钟STC(System Time Clock)  阅读全文

posted @ 2012-11-28 15:10 ZhangEF 阅读(1044) | 评论 (0)编辑 收藏

2012年9月24日

Android源码编译的错误处理

     摘要: Android源码编译的错误处理  阅读全文

posted @ 2012-09-24 16:32 ZhangEF 阅读(302) | 评论 (0)编辑 收藏

2012年5月4日

演示volatile 关键字作用的一段C代码

     摘要: VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化  阅读全文

posted @ 2012-05-04 10:24 ZhangEF 阅读(262) | 评论 (1)编辑 收藏

2012年4月14日

单反数码相机和普通数码相机的区别

     摘要: 单反数码相机和普通数码相机的区别  阅读全文

posted @ 2012-04-14 22:02 ZhangEF 阅读(191) | 评论 (1)编辑 收藏

2012年3月31日

ubuntu 安装samba服务器

     摘要: ubuntu 安装samba服务器  阅读全文

posted @ 2012-03-31 09:52 ZhangEF 阅读(194) | 评论 (0)编辑 收藏

Ubuntu 手动安装jdk 配置jdk路径

     摘要: Ubuntu 手动安装jdk 配置jdk路径  阅读全文

posted @ 2012-03-31 09:22 ZhangEF 阅读(396) | 评论 (0)编辑 收藏

给 ubuntu添加新硬盘 格式化和挂载

     摘要: ubuntu添加新硬盘 格式化和挂载  阅读全文

posted @ 2012-03-31 00:12 ZhangEF 阅读(5718) | 评论 (0)编辑 收藏

2012年3月27日

android系列问题汇总

     摘要: android系列问题汇总  阅读全文

posted @ 2012-03-27 09:15 ZhangEF 阅读(420) | 评论 (0)编辑 收藏

2012年3月21日

android ndk 给结构体赋值的方法

     摘要: android ndk 给结构体赋值的方法  阅读全文

posted @ 2012-03-21 16:53 ZhangEF 阅读(1222) | 评论 (0)编辑 收藏

编译ndk可执行程序 直接用cygwin编译 不用eclipse

     摘要: 编译ndk可执行程序 直接用cygwin交叉编译android ndk的c++可执行程序 不用eclipse 版本:android sdk15和 ndk7  阅读全文

posted @ 2012-03-21 11:41 ZhangEF 阅读(1884) | 评论 (0)编辑 收藏