需求:与女朋友一起实时观看自己在硬盘里收藏的BD动画资源。

用此贴简单记录操作过程、遇到的问题以及解决方案。

〇. 在Bilibili、斗鱼等平台创建直播间

问题:被版权警告,直播间被封。

1.png

解决方案:自己搭建私人直播服务器。

一. 搭建SRS直播服务器

1.下载源码

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

2.进入srs/trunk目录并编译

cd srs/trunk
./configure
make

3.启动SRS服务器

./objs/srs -c conf/srs.conf

4.检查运行状态

./etc/init.d/srs status

2.png
如图,此时SRS正常运行中。

二.使用OBS推流

默认推流 rtmp://[服务器地址]:1935/live (可以改成任意路径,只要能访问得到就好)(可以改成任意端口,只要防火墙开放相应端口且与拉流时保持一致就好)
默认密钥 livestream (可以使用任意密钥,只要与拉流时保持一致就好)

3.png

三.使用VLC Media Player拉流

默认rtmp流 rtmp://[服务器地址]:1935/live/livestream
VLC media player → 媒体 → 打开网络串流,输入上述地址即可观看直播。

4.png
5.png
6.png

问题:VLC对移动端的支持很差,女朋友不喜欢。

解决方案:移动端有一个叫KMPlyaer的应用,可以流畅拉取rtmp流。
KMPlayer.jpg

问题:这种手动拉流的方法太麻烦,女朋友不喜欢。

解决方案:尝试在网页前端建立播放界面。

四.建立前端播放页面

1.使用video.js播放rtmp流

<link href="https://cdn.bootcdn.net/ajax/libs/video.js/7.15.0/alt/video-js-cdn.css" rel="stylesheet">
<script src="https://cdn.bootcdn.net/ajax/libs/video.js/7.15.0/alt/video.core.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/videojs-flash/2.2.1/videojs-flash.min.js"></script>

<video id='myvideo' width=640 height=360 class='video-js' controls>
    <source src="rtmp://[服务器地址]:1935/live/livestream">
</video>

<script>
    var player = videojs('myvideo')
    player.play();
</script>

7.png

问题:在前端直接播放rtmp流将不可避免地用到Flash,而Flash已经死亡。虽然可以通过一些操作允许浏览器加载Flash,但女朋友不喜欢。

8.png

解决方案:使用其它流媒体传输协议。

2.使用hls流

问题:hls流的固有问题是直播延迟过高,女朋友不喜欢。

解决方案:使用其它流媒体传输协议。

3.使用http-flv流

Bilibili的一位天才程序员创造了flv.js这一伟大的发明,可以实现不依赖FLash播放flv。(屑站居然把这样的高手给逼走了)

<script src="https://cdn.bootcdn.net/ajax/libs/flv.js/1.6.1/flv.min.js"></script>

<video id="myvideo" controls></video>

<script>
        var myvideo = document.getElementById('myvideo');
        var flvPlayer = flvjs.createPlayer({
            type: 'flv',
            url: 'http://[服务器地址]:8080/live/livestream.flv'
        });
        flvPlayer.attachMediaElement(myvideo);
        flvPlayer.load();
        flvPlayer.play();
</script>

问题:提示Mixed Content错误。由于网页进行了https加密,而视频流并未加密,所以浏览器不予加载。

9.png
解决方案:查阅文档知,SRS支持https-flv流。

4.配置https-flv流

参考官方文档,修改位于srs/trunk/conf的配置文件并拷贝证书后,重载SRS。

./etc/init.d/srs reload

在前端修改拉流地址后,即可顺利播放。

10.png

问题:我的服务器的线路太烂,夜间上传卡顿,导致直播不畅,女朋友不喜欢。

解决方案:走ipv6网络进行推流,避免拥堵。

5.使用ipv6网络推流

查阅Github知,SRS支持对ipv6的监听。
在配置文件中,将listen 1935;修改为listen 1935 [::]:1935;即可。

走ipv4网络推流
ipv4.png

走ipv6网络推流
ipv6.png

问题:即使我这边推流推得动,女朋友那边也不一定能拉得动。

问题:女朋友与我分手了。:(

五. 参考资料

  1. SRS中文文档
    (https://github.com/ossrs/srs/wiki/v4_CN_Home)
  2. 快速搭建自己的直播服务器,完成属于你的直播服务
    (https://blog.csdn.net/wjwj1203/article/details/82664981)
  3. SRS环境搭建
    (https://www.jianshu.com/p/a7196df3914a)
  4. Getting Started with Video.js
    (https://videojs.com/getting-started/)
  5. flv.js
    (https://github.com/bilibili/flv.js)
  6. 使用flv.js实现HTML5播放FLV视频文件
    (https://www.bysb.net/2943.html)
  7. SRS中文文档_Delivery HTTP FLV Stream
    (https://github.com/ossrs/srs/wiki/v4_CN_DeliveryHttpStream#https-flv-live-stream)
  8. 修复rtmp不能监听ipv6的问题,增加了ipv6端口验证代码
    (https://github.com/ossrs/srs/pull/2157)

已有 5 条评论

  1. 好悲伤的结局啊……
    我也因为想从YouTube转播到b站研究过直播的事情(我博客里有记录,虽然成功了但是最后还是因为花太多时间了感觉不值)。对于博主这种情况,我的建议还是b站投屏,管理来警告的话就切屏假装写报告比较省事且能达成目的,巡查也不会很频繁……

    1. 超管直接关停直播间,动作很快。T T

      1. 可能是分区的问题。b站上很多画手都会在直播画画的时候同时开小窗看剧,这就没事。我就看过一个up直播网球比赛(同样没有版权),超管一来不会直接关掉而是给警告,这时关掉声音拿个HMR谱图挡屏幕好几分钟,然后接着播。一般播完两三小时的比赛是没问题的

        当然仅作为一种思路,可行性我也不知道(

  2. 吾王G

    有个社交网站叫蔷薇花园,可以点播视频或者音乐,并且支持实时对话,本地的文件好像也可以,用外链的话也可以,之前一直和朋友在这个里面一起看番和听歌,UI界面也做得超好看,里面的人说话又好听,哦哊我超喜欢里面的

添加新评论