流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

参照网址:【1】http://blog.csdn.net/redstarofsleep/article/details/45092147【2】HLS介绍:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html上面这两个流的地址分别是:第一个就是推送的地址:RTMP推流地址:rtmp://serverIp:1935/myapp/test1第二个是HTTP地址: HLS推流地址:http://serverIp:8080/hls/test2.m3u8HTTPLiveStreaming(HLS)是苹果公司(AppleInc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播:     HTTPLiveStreaming(HLS)是苹果公司(AppleInc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完...

流媒体技术学习笔记之(十六)H264编码profile & level控制

H.264有四种画质级别,分别是baseline,extended,main,high:1、BaselineProfile:基本画质。支持I/P帧,只支持无交错(Progressive)和CAVLC;2、Extendedprofile:进阶画质。支持I/P/B/SP/SI帧,只支持无交错(Progressive)和CAVLC;(用的少)3、Mainprofile:主流画质。提供I/P/B帧,支持无交错(Progressive)和交错(Interlaced),也支持CAVLC和CABAC的支持;4、Highprofile:高级画质。在mainProfile的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV格式;  H.264Baselineprofile、Extendedprofile和Mainprofile都是针对8位样本数据、4:2:0格式(YUV)的视频序列。在相同配置情况下,Highprofile(HP)可以比Mainprofile(MP)降低10%的码率。根据应用领域的不同,Baselineprofile多应用于实时通信领域,Mainprofile多应用于流媒...

流媒体技术学习笔记之(十五)FFmpeg编码遇到的错误、警告、Debug记录

WhenencodingH.264usingffmpegIgetthefollowingtypeofwarningsenmasse: Pastduration0.606377toolarge?FFMpeg版本在2015年1月15日后经常显示此警告。它已被添加以警告可能的速率控制失真,否则不会造成任何危害。   real-timebuffer98%full!framedropped?ffmpeg-re-rtbufsize1000M-fdshow-ivideo="LenovoEasyCamera":audio="麦克风(RealtekHighDefinitionAudio)"-vcodeclibx264-b:v1000k-acodeclibvo_aacenc-frtsprtsp://231131/tinywan123.sdp  ffmpegRTP:missed12packets?  ffmpeg-rtsp_transporttcp-re-i"rtsp://192.168.18.240:554/onvif/liv...

流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务

ffmpeg-list_devicestrue-fdshow-idummy红色标记表示视频设备和麦克风设备ffmpeg-fdshow-ivideo="LenovoEasyCamera":audio="麦克风(RealtekHighDefinitionAudio)"-vcodeclibx264-acodeccopy-preset:vultrafast-tune:vzerolatency-fflv"rtmp://aitech.com/live/tinywan123" ffmpeg-fdshow-ivideo="LenovoEasyCamera":audio="麦克风(RealtekHighDefinitionAudio)"-vcodeclibx264-acodeclibvo_aacenc-preset:vultrafast-tune:vzerolatency-frtsprtsp://13313.3123/tinywan123.sdp 设置帧率为25fps,注意这个要设置在推流地址前面摄像头后面ffmpeg-fdshow-ivideo="LenovoEasyCamera"...

流媒体技术学习笔记之(十三)Windows安装FFmpeg

网址:https://ffmpeg.org/选择Windows版本:https://ffmpeg.org/download.html#build-windows下载并解压FFmpeg文件夹,它会生成一个类似名为“ffmpeg-20150504-git-eb9fb50-win32-static”的新文件夹: 打开你想安装的任意磁盘,例如:d盘。新建一个名为“ffmpeg”的文件夹,将第二步解压生成的文件夹中的内容全部拷贝到“ffmpeg”文件夹中:  1.       点击“开始菜单”,再点击“控制面板”,再点击“系统与安全”,再点击“系统”,然后点击“高级系统设置”,跳出“系统属性”窗口后,最后点击“环境变量”按钮:   2. &n...

流媒体技术学习笔记之(十二)Linux(Ubuntu)环境运行EasyDarwin

 Debug问题???./easydarwin-c./easydarwin.xml&//这样的话是80端口./easydarwin-c./easydarwin.xml-d//8088端口 以上出现的问题:在调试模式下加载配置文件是可以的,但是在后台模式下配置文件是加载不了的,列如:在配置文件配置后台管理端口为8088,当时在后台模式下,却是80端口,同时点播文件夹路径和日志文件夹路径也加载的不适root@iZ2363u41cdZ:/home/Tinywan/EasyDarwin#./easydarwin-c/home/Tinywan/EasyDarwin/easydarwin.xml&再次由调试模式切换成后台模式的时候,加载配置文件正确查看Ubuntu的版本号:sudolsb_release-agcc版本查看:gcc-vubuntu14.04自带的是4.8版本,而最新的4.9.2对c++11的支持更好一些。可惜直接sudoapt-getinstallgcc-4.9不好用,所以可以这样安装更新:sudoadd-apt-repositoryppa:ubu...

流媒体技术学习笔记之(十一)Windows环境运行EasyDarwin

 流媒体平台框架下载安装  下载地址:https://github.com/EasyDarwin/EasyDarwin/releases  选择Windows安装平台的安装包(下载解压) 把解压生成的文件夹重命名放在本地磁盘,我这里测试放在E盘: start.bat  Windows调试运行(这个批处理文件是用来做测试Debug服务的,下载安装包的时候已经自带好了)server.bat   Windows服务方式运行(这个是我自己新建的)脚本代码:cd./setcurPath="%cd%"echoservicepath:%curPath%sccreateEasyDarwinbinPath="%curPath%EasyDarwin.exe-c%curPath%easydarwin.xml"start=autoscfailureEasyDarwinreset=0actions=restart/0netstartEasyDarwinpause运行EasyDarwin    格式:RTSP://[ip]:[rtsp_port]/EasyRelayModu...

流媒体技术学习笔记之(十)HLS协议直播延时优化(35s到10S)

1、首先要了解HLS延时的机制,也就是为什么会延时,延时主要发生在什么地方。  HTTPLiveStreaming并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的时间延时。在客户端,至少在一个分段媒体文件被完全下载后才能够开始播放,而通常要求下载完两个媒体文件之后才开始播放以保证不同分段音视频之间的无缝连接。此外,在客户端开始下载之前,必须等待服务器端的编码器和流分割器至少生成一个TS文件,这也会带来潜在的时延。服务器软件将接收到的流每缓存一定时间后包装为一个新的TS文件,然后更新m3u8文件。m3u8文件中只保留最新的几个片段的索引,以保证观众任何时候连接进来都会看到较新的内容,实现近似直播的效果。这种方式的理论最小延时为一个ts文件的时长,一般为2-3个ts文件的时长。所以,hls的延时主要由以下三个部分组成:(1)服务器端的编码器和流分割器生成TS文件的时间(2)客户端下载TS文件的时间,而通常要求下载完两个TS媒体文件(3)客户端解码并播放时间这三个方面里面,前两个方面我们是可以控制调节的,对于第三个方面只能取决于客户端的性能。2、具体优化方法...

流媒体技术学习笔记之(九)减少VLC 延迟的方法

  之前写过一篇关于在Linux平台上编译Android平台上VLC播放器源代码的文章,vlc这款播放器非常优秀而且是开源的,它的核心是开源视频编解码库ffmpeg。而且这款播放器还支持RTSP协议,这个主要是用开源的live555来实现的,live555这个库以后还需要认真研习。  前几天用PC平台上的VLC播放RTSP流媒体时延迟时间较长,存在1s左右的延迟,效果不是很好,后来查了资料,发现这个延迟时间是可以修改的。  找到工具->首选项,然后参数设置左下角选择“全部”,左边选择 “输入编解码”->“网络缓存”选项,可以根据具体需要加以修改,具体见下图不过这个值不要太小,否则缓存太小,播放视频的过程中会很卡如果网络环境较好,300ms以内效果很好,实时性较好。二:PC端(Linux平台)VLC播放RTSP视频延迟问题解决  这里我的测试平台是ubuntu,linux平台上的vlc可以以命令行的方式来运行,而命令行是可以带参数的,我们只需要在参数里面指定这个延迟时间就可以了,下面是具体的命令...

流媒体技术学习笔记之(八)海康、大华IpCamera RTSP地址和格式

rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username:用户名。例如admin。password:密码。例如12345。ip:为设备IP。例如192.0.0.64。port:端口号默认为554,若为默认可不填写。codec:有h264、MPEG-4、mpeg4这几种。channel:通道号,起始为1。例如通道1,则为ch1。subtype:码流类型,主码流为main,辅码流为sub。例如,请求海康摄像机通道1的主码流,Url如下主码流:rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_streamrtsp://admin:12345@192.0.0.64:554/MPEG-4/ch1/main/av_stream子码流:rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_streamrtsp://admin:12345@192.0.0.64/h264/ch1/sub/av...

流媒体技术学习笔记之(七)进阶教程OBS参数与清晰度流畅度的关系

    很多主播问过OBS的参数到底什么影响画质,到底什么影响流畅度,那么本篇教程尽量用通俗的语言解释下一些重要参数到底是干什么的,自己一定要理解为主,每个主播的电脑、所在的平台、当天的网络状态(注意网络就和马路一样,每天的情况都是不一样的)、平台的当天的状态、不同的游戏不一样,合适的参数都不一样。不要羡慕大主播高清流畅的画质,他们也是自己耐心(或者背后有技术团队)调整出来的。码率码率在OBS中叫最大比特率 为什么叫最大比特率不叫比特率?  比如你现在采集了5000码率的东西,但是画面变化不大,上一个画面和现在的画面可能仅仅改变了500码率的部分,那么OBS就会优化,只传输500码率就行了(测试【1】幻灯片),观众看起来却得到了5000码率的画面,可是观众只用了很少的下载速度,你也用了很少的上传速度。所以经常有主播问,为什么我设置了很高的码率,右下角的数字在变,还很小?是不是出错了?看到这里应该明白了,没有出错,反而是正确的,那里显示的是优化后实际传输的数字。   但是如果画面变化的很剧烈(比如效果特别强的电影,测试【2】所示),比如守...

流媒体技术学习笔记之(六)FFmpeg官方文档先进音频编码(AAC)

 先进音频编码(AAC)的后继格式到MP3,和以MPEG-4部分3(ISO/IEC14496-3)被定义。它通常用于MP4容器格式; 对于音乐,通常使用.m4a扩展名。第二最常见的用途是在MKV(Matroska)文件内,因为它比MP4更好地支持嵌入式基于文本的软字幕。本指南中的示例将使用扩展MP4和M4A。FFmpeg的可支持两个AAC-LC编码器(AAC&libfdk_aac)和一个HE-AAC(V1/2)编码器(libfdk_aac)。的许可证libfdk_aac不与GPL兼容,因此GPL不允许含有不兼容的代码的二进制文件的分发时也被包含GPL许可的代码。因此,此编码器已被指定为“非自由”,您不能下载支持它的预构建的ffmpeg。这可以通过解决编译FFmpeg的自己。FraunhoferFDKAAC编解码器库。这是目前使用ffmpeg的最高质量的AAC编码器。ffmpeg的要求要与配置--enable-libfdk-AAC(另外--enable-nonfree的,如果您还使用--enable-GPL)。但要注意,它默认为约14kHz的(...

流媒体技术学习笔记之(五)码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念

码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念 480P格式:720x480 720P格式:1280x720 【表现体育节目、快速运动的视频时,720P更明显】1080P格式:1920x1080 【适合普通电视节目、电影等慢速运动的视频时,1080P更明显】    码流(DataRate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。  当然,码流越大,文件体积也越大,其计算公式是文件体积=时间X码率/8。例如,网络上常见的一部90分钟1Mbps码流的720PRMVB文件,其体积就=5400秒×1Mb/8=675MB。  通常来说,一个视频文件包括了画面及...

流媒体技术学习笔记之(四)解决问题video.js 播放m3u8格式的文件,根据官方的文档添加videojs-contrib-hls也不行的原因解决了

源码地址:https://github.com/Tinywan/PHP_Experience  测试环境:本测试全部来自阿里云直播和OSS存储点播以及本地服务器直播和点播  播放器:VideoJs1、阿里云直播,需要CDN设置HTTP头  2、本地直播需要设置直播访问服务器的头部信息(本地为Nginx)add_header'Access-Control-Allow-Origin''*'always;add_header'Access-Control-Allow-Credentials''true';add_header'Access-Control-Expose-Headers''Content-Length,Content-Range';add_header'Access-Control-Allow-Headers''Range'; 1、阿里云点播通过OSS存储   2、本地点播,需要添加的头部信息:add_header'Access-Control-Allow-Origin''*'always;add_header'Access-Control-Allow-Cr...

流媒体技术学习笔记之(三)Nginx-Rtmp-Module统计某频道在线观看流的客户数

 获得订阅者人数,可以方便地显示观看流的客户数。查看已经安装好的模块/usr/local/nginx/sbin/nginx-V安装从源编译Nginx和Nginx-RTMP所需的工具sudoapt-getinstallbuild-essentiallibpcre3libpcre3-devlibssl-dev下载Nginx和Nginx-RTMP源码wgethttp://nginx.org/download/nginx-1.7.5.tar.gzwgethttps://github.com/arut/nginx-rtmp-module/archive/master.zip提取Nginx和Nginx-RTMP源tar-zxvfnginx-1.7.5.tar.gzunzipmaster.zip切换到Nginx目录cdnginx-1.7.5添加Nginx将编译的模块,包括Nginx-RTMP./configure--prefix=/usr/local/nginx--user=www--group=www--with-http_ssl_module--with-http_xslt_modul...
首页上一页...5051525354...下一页尾页