我们新建FLASH视频平台带宽消耗及增长比较厉害,看完下面这篇文章,感觉可以再次适当地优化这个流媒体播放平台,以减少对带宽的占用(文章中的建议也很好,10M以下使用HTTP协议,10M以上视频使用RTMP协议)。大家可以探讨一下在平台上同时支持使用HTTP协议与RTMP协议来进行流媒体播放是否可行性?
----------------
基于开源Flash Server:Red5构建RTMP流媒体播放平台
[文章作者:张宴 本文版本:v1.0 最后修改:2009.04.13 原文链接:http://blog.s135.com/post/409/]
上周五,我们基于开源Flash Server:Red5(http://osflash.org/red5)的Flash流媒体服务平台上线,内容涉及视频上传、视频分发、调用接口、Flash播放器等。
一、Flash RTMP流媒体播放演示(播放时进度条可以自由拖动):
(略)
二、安装步骤简要说明:
①、安装JDK
打开http://java.sun.com/javase/downloads/,下载最新的Java SE Development Kit (JDK),安装在/usr/local/jdk/下。
chmod +x jdk-6u13-linux-i586.bin
./jdk-6u13-linux-i586.bin
②、安装Red5
打开http://osflash.org/red5/070final,下载red5-0.7.0.tar.gz,解压缩后执行./red5.sh,然后访问http://yourdomain:5080/,有演示。
三、服务器带宽消耗比较:
①、客户端 1.5M ADSL 环境,HTTP 方式播放单个视频,服务器所消耗的带宽:
[root@localhost ~]# ./net.sh eth0 1
IN: 3318 Byte/s OUT: 259984 Byte/s
IN: 3486 Byte/s OUT: 249470 Byte/s
IN: 3332 Byte/s OUT: 259984 Byte/s
IN: 3090 Byte/s OUT: 252528 Byte/s
IN: 3000 Byte/s OUT: 252474 Byte/s
IN: 3000 Byte/s OUT: 253976 Byte/s
IN: 2940 Byte/s OUT: 255478 Byte/s
IN: 3004 Byte/s OUT: 252474 Byte/s
IN: 3452 Byte/s OUT: 252528 Byte/s
IN: 3270 Byte/s OUT: 260038 Byte/s
IN: 3586 Byte/s OUT: 252474 Byte/s
②、客户端 1.5M ADSL 环境,RTMP 流媒体方式播放单个视频,服务器所消耗的带宽:
[root@localhost ~]# ./net.sh eth0 1
IN: 3900 Byte/s OUT: 27878 Byte/s
IN: 4200 Byte/s OUT: 30868 Byte/s
IN: 4380 Byte/s OUT: 27801 Byte/s
IN: 4080 Byte/s OUT: 29965 Byte/s
IN: 4080 Byte/s OUT: 26450 Byte/s
IN: 3960 Byte/s OUT: 27143 Byte/s
IN: 3000 Byte/s OUT: 10061 Byte/s
IN: 3960 Byte/s OUT: 16166 Byte/s
IN: 3660 Byte/s OUT: 26480 Byte/s
IN: 4020 Byte/s OUT: 23127 Byte/s
HTTP 方式播放,如果服务器端不限速,客户端的带宽越大,服务器消耗的带宽也越大,但限速又会影响用户体验;
RTMP 流媒体方式播放,只要客户端达到最低带宽要求,不管客户端的带宽如何,服务器消耗的带宽都一样。
如果播放10M以内大小的视频,HTTP 能够在较短的时间内下载完视频,能够降低并发观看用户数;
如果播放10M以上大小的视频,RTMP 要比 HTTP 方式节省不少带宽。
RTMP 播放时进度条可以自由拖动,虽然Lighttpd和Nginx目前也可以使用somevideo.flv?start=xxx的方式从指定位置下载视频,但还是不如 RTMP 灵活。
四、带宽测试Shell脚本(net.sh):
#!/bin/bash
# test network width
function usage
{
echo "Usage: $0 "
echo " e.g. $0 eth0 2"
exit 65
}
if [ $# -lt 2 ];then
usage
fi
typeset in in_old dif_in
typeset out out_old dif_out
typeset timer
typeset eth
eth=$1
timer=$2
in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }' )
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $9 }' )
while true
do
sleep ${timer}
in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }' )
out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $9 }' )
dif_in=$(((in-in_old)/timer))
dif_out=$(((out-out_old)/timer))
echo "IN: ${dif_in} Byte/s OUT: ${dif_out} Byte/s"
in_old=${in}
out_old=${out}
done
exit 0
分享到:
相关推荐
本文档记录了利用ffmpeg将摄像机采集的rtsp视频流转换为rtmp视频流,并推送到rtmp服务器red5的详细步骤。最终可以供VLC、web页面访问并展示rtmp视频。
Red5 是一个采用 Java 开发的开源免费 Flash 流媒体服务器。Red5 基于 Java 和一些功能强大的开源框架,为企业级应用奠定了标准。它使用 RTMP,RTMPT,RTMPS 和 RTMPE 流媒体协议, 支持:将音频(MP3)和视频(FLV,...
NULL 博文链接:https://snv.iteye.com/blog/2036602
运用Qt框架+FFmpeg音视频解码库实现RTMP流媒体播放器,通过实时拉流视频流传到界面进行视频显示
1.首先通过obs进行推流,服务器是:rtmp://192.168.0.221/live,串流密钥:1234, 然后就发现网上的教程里面都没有说道这个串流密钥要写在哪里,如果不写的话,是直播不成功的。 后面试了很久发现就是直接拼接在...
这是QT+FFMPEG设计的流媒体播放器完整源码 1. 支持RTMP流播放 2. 支持RTSP流播放 3. 支持音频播放 4. 支持视频播放 编译器: MinGW 32位 QT版本: 5.12.6
测试rtmp流或者Adobe Media Server,red5等流媒体服务器是否部署成功
Red5的主要功能是,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、...
本工程包含如下基于Flash技术的流媒体的例子: simplest_as3_rtmp_player:最简单的RTMP播放器(基于ActionScript) simplest_as3_rtmp_streamer:最简单的RTMP推流器(基于ActionScript) rtmp_sample_player_adobe:...
Nginx搭建rtmp流媒体服务器详解与实例
rtmp视频流播放-前端直播技术,video.js播放视频流源文件,下载可用
支持rtmp格式的直播流,基于VLC开发的.
rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流...
H5网页播放rtmp实时视频流,网页直播 解决延迟问题,心跳监测播放过程中error自重启 直接放入页面运行
1、开启浏览器的flash支持。 2、不支持本地运行,建议搭建nodejs本地服务器运行测试html/js https://blog.csdn.net/u011456337/article/details/50704331
只要要用c#写个rtmp播放器,苦苦找不到资源,c#播放 RTMP,RTSP流媒体等源代码,特此分享,希望能帮助大家
h5实现rtmp协议视频播放,里面包含实现样例源码,少积分下载!
基于ffmpeg实现了解析rtsp视频为cv::Mat格式,此时可以对cv::Mat进行处理,然后再将cv::Mat数据推送到rtmp流媒体服务。处理、转码一条龙。另外,工程中关于OpenCV、ffmpeg的库和头文件的路径需要自己根据实际路径...
纯C++代码,读取H264文件到内存推流到RTMP流媒体服务器,关键使用libRTMP库封装成RTMP协议格式!方便初学者
压缩包里包含了: Linux下通Nginx搭建RTMP流媒体服务器需要的一系列源码包。 搭建方法可以参考博文: https://blog.csdn.net/xiaolong1126626497/article/details/105378894