HLS点播php上传转码过程,转码后分发HLS部署实例 - SRS Wiki 中文文档

news/2024/7/7 20:23:51

HLS需要h.264+aac,若符合这个要求可以按照Usage: HLS部署,若不符合这个要求则需要转码。

如何知道流是否是h264+aac编码:

Usage: HLS中的Q&A说明的问题。

看编码器的参数,FMLE可以选视频编码为vp6或者h264,音频一般为mp3/NellyMoser。,所以FMLE肯定推流是不符合要求的。

看SRS的日志,若显示hls only support video h.264/avc codec. ret=601,就明显说明是编码问题。

备注:在虚拟机上测试,一路流转码为aac,需要3%CPU,在物理机上可能稍好点。转码的开销比分发要大,实际应用需要考虑这个因素。

假设服务器的IP是:192.168.1.170

第一步,获取SRS。详细参考GIT获取代码

git clone https://github.com/ossrs/srs

cd srs/trunk

或者使用git更新已有代码:

git pull

第二步,编译SRS。详细参考Build

./configure --with-nginx --with-ffmpeg && make

第三步,启动分发hls(m3u8/ts)的nginx。详细参考HLS分发

sudo ./objs/nginx/sbin/nginx

备注:为了突出HLS的配置,我们在HLS的实例中没有使用SRS内置的HTTP Server,可以配置几行就可以不用nginx。参考:Usage: HTTP

备注:请确定nginx已经启动,可以访问nginx,若能看到nginx is ok则没有问题。

第四步,编写SRS配置文件。详细参考HLS分发

将以下内容保存为文件,譬如conf/transcode2hls.audio.only.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。

# conf/transcode2hls.audio.only.conf

listen 1935;

max_connections 1000;

vhost __defaultVhost__ {

hls {

enabled on;

hls_path ./objs/nginx/html;

hls_fragment 10;

hls_window 60;

}

transcode {

enabled on;

ffmpeg ./objs/ffmpeg/bin/ffmpeg;

engine ff {

enabled on;

vcodec copy;

acodec libfdk_aac;

abitrate 45;

asample_rate 44100;

achannels 2;

aparams {

}

output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];

}

}

}

备注:这个配置使用只转码音频,因为视频是h.264符合要求,若需要全转码,参考[HLS+Transcode][HLS-And-Transcode]

第五步,启动SRS。详细参考HLS分发

./objs/srs -c conf/transcode2hls.audio.only.conf

第六步,启动推流编码器。详细参考HLS分发

使用FFMPEG命令推流:

for((;;)); do \

./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768x320.flv \

-vcodec copy -acodec copy \

-f flv -y rtmp://192.168.1.170/live/livestream; \

sleep 1; \

done

或使用FMLE推流:

FMS URL: rtmp://192.168.1.170/live

Stream: livestream

生成的流地址为:

RTMP流地址为(FMLE推流无HLS地址):rtmp://192.168.1.170/live/livestream

转码后的RTMP流地址为:rtmp://192.168.1.170/live/livestream_ff

转码后的HLS流地址为: http://192.168.1.170/live/livestream_ff.m3u8

备注:因为FMLE推上来的音频有问题,不是aac,所以srs会报错(当然啦,不然就不用转码了)。这个错误可以忽略,srs是说,rtmp流没有问题,但是无法切片为hls,因为音频编码不对。没有关系,ffmpeg会转码后重新推一路流给srs。

备注:如何只对符合要求的流切hls?可以用vhost。默认的vhost不切hls,将转码后的流推送到另外一个vhost,这个vhost切hls。

第七步,观看RTMP流。详细参考HLS分发

RTMP流地址为:rtmp://192.168.1.170/live/livestream_ff

可以使用VLC观看。

或者使用在线SRS播放器播放:srs-player-ff

备注:请将所有实例的IP地址192.168.1.170都换成部署的服务器IP地址。

第八步,观看HLS流。详细参考HLS分发

HLS流地址为: http://192.168.1.170/live/livestream_ff.m3u8

可以使用VLC观看。

或者使用在线SRS播放器播放:jwplayer-ff

备注:请将所有实例的IP地址192.168.1.170都换成部署的服务器IP地址。


http://www.niftyadmin.cn/n/2001635.html

相关文章

linux 目录s,Linux+ln+-s目录

Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7版本,默认的python被系统很多程序所依赖,比如centos下的yum就是python2写的,所以默认版本不要轻易删除,否则会有一些问题,如果需…

(转)HDFS客户端的权限错误:Permission denied

2019独角兽企业重金招聘Python工程师标准>>> 搭建了一个Hadoop的环境,Hadoop集群环境部署在几个Linux服务器上,现在想使用windows上的Java客户端来操作集群中的HDFS文件,但是在客户端运行时出现了如下的认证错误,被折磨…

linux 用户进程结束后 malloc申请的内存会自动释放吗,当程序退出后,动态申请的内存会自动释放吗...

我们知道程序在运行的过程中是需要占用一定内存的,一般程序所需要的内存由操作系统来分配,由操作系统分配的,自然需要由操作系统回收。但是在实际开发中,用户可以通过一些函数人为地申请内存,再由用户来释放&#xff0…

如何做好IT运营.

定义IT管理的重点在于业务策略与 IT 部门提供的服务之间的一致性。IT 管理可建立必要的管理机制来确保可预测的 IT 服务交付,从而确保业务流程和 IT 流程之间的联系。IT 管理传统上属于CIO、CEO和一些 IT 和业务线(line of business,LOB&…

linux 对比2个目录,linux – 比较2个目录并复制第3个目录中的差异

使用–compare-dest.从手册页:–compare-destDIR –This option instructs rsync to use DIR on the destination machine as an additional hierarchy to compare destination files against doing transfers (if the files are missing in the destination direct…

Java HashMap工作原理及实现

原文出处: Yikun 1. 概述 从本文你可以学习到: 什么时候会使用HashMap?他有什么特点?你知道HashMap的工作原理吗?你知道get和put的原理吗?equals()和hashCode()的都有什么作用?你知道hash的实现…

linux c程序设计大全 下载,The C programming Language[C程序设计语言]PDF

内容简介 Presents a complete guide to ANSI standard C language programming. Written by the developers of C, this new version helps readers keep up with the finalized ANSI standard for C while showing how to take advantage of Cs rich set of operators, …

Metro Win8风格的按钮(Filp翻转)

原地址->http://www.cnblogs.com/yk250/p/5661093.html 介绍:简约而不简单....颜色可随意调制,最好用Blend工具。 效果图如下:话说这个图会不会太大了点 0_0 外观简单,制作也十分简单&#x…