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

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地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值