zoukankan      html  css  js  c++  java
  • 直播

    一个简易的直播系统,大致可以由三部分组成:

    • 搭建一个rtmp媒体服务器
    • 推流端
    • 拉流端

    现在目标是快速搭建起来,所以当然是借助开源项目和一些软件:

    • rtmp媒体服务器:这里使用srs
    • 推流端:这里使用obs
    • 拉流端:这里使用播放器vlc

    rtmp媒体服务器的搭建

    这里使用srs,srs的链接为: 
    https://github.com/ossrs/srs

    首先clone到本地,进入到trunk目录:

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

    然后执行:

    ./configure --osx

    注意: Centos6.x/Ubuntu12 32/64bits用户仅需要执行./configure。

    最后执行:

    make

    执行成功后,就可以开启我们的服务了:

    ./etc/init.d/srs start

    如果是mac系统,此时会失败,原因是srs.conf中max_connections太大, 
    目录为srs/trunk/conf/srs.conf,可以修改为248(其他操作系统可能无此问题)。

    再次回到trunk目录:

    ./etc/init.d/srs start

    到此我们的srs服务器就搭建起来了。

    注: 
    Centos、Ubuntu可以参考官网搭建,比较简单。 
    如果你启动过程中还遇到了其他错误,可以查看log信息: 
    srs/trunk/objs/srs.log 
    其他指令: 
    停止 ./etc/init.d/srs stop 
    重启 ./etc/init.d/srs restart

    有了服务器之后,我们就准备开始我们的推流端。

    如果你实在搭建不成功,可以先拿116.196.121.20这个ip做测试,我在京东云上搭建的,配置较低,主要用于大家临时测试,可能不稳定,看一眼就行,后续会关掉,所以还是尽可能自己搭建成功吧。

    使用OBS推流

    下载地址:https://obsproject.com/

    选择流,串流类型选择自定义,然后url,填写:

    rtmp://你的ip/你喜欢的url
    • 1

    流名称可以按照上述自由输入。

    记住我们的url和流名称:

    rtmp://192.168.1.102/zhy/mylive
    • 1

    完成后,点击确定。

    然后点击开始推流即可。

    这样,我们的OBS推流就开启啦,软件的更多使用自行探索吧。

    最后就剩下我们的拉流了。

    使用VLC拉流

    下载地址:http://www.videolan.org/vlc/

    使用第三方推流SDK

    最简单的方式,就是可以借助于第三方的推流SDK,大多情况下第三方SDK完整方案都是收费的,不过他们的推流Android SDK倒是可以下载无需付费情况下来学习使用的。

    这里以百度云的直播SDK为例,下载地址: 
    https://cloud.baidu.com/doc/Downloadcenter/Push.html#.E7.89.88.E6.9C.AC.E6.9B.B4.E6.96.B0.E8.AF.B4.E6.98.8E

    直接点击下载Android SDK即可,下载完成后解压,然后倒入AS(这竟然是个Eclipse项目…),还好AS支持

    直接将mStreamKey修改我们的rtmp的地址即可。

    注意,需要在build.gradle中添加下v7的依赖

    compile 'com.android.support:appcompat-v7:23.0.0'



    使用开源项目推流

    使用一个开源项目:

    https://github.com/begeekmyfriend/yasea

    直接clone,导入。 
    这个比较顺利,导入后,修改下rtmp链接

    ffmpeg很火,ffmpeg很强大。 
    所以最后一种方式,就是看如何利用ffmpeg推流啦~~

    利用ffmpeg推流

    大家可以自己下载ffmepg的源码,然后按照网上的方式去编成so,简单的一点而且比较实用的,就是编出可以执行ffmpeg 命令的so,这样就能干很多事情了。

    这里,由于篇幅,我们就直接使用别人编好的项目了。

    https://github.com/WritingMinds/ffmpeg-android-java

    直接导入,该项目支持直接运行ffmpeg的命令。

    ffmpeg命令很多: 
    例如:

    将.avi转成gif动画(未压缩) 
    ffmpeg -i video_origine.avi gif_anime.gif 
    合成视频和音频  
    ffmpeg -i son.wav -i video_origine.avi video_finale.mpg 
    还有非常多的功能,可以参考: 
    http://blog.csdn.net/king1425/article/details/70348374

    其中有一个命令就是支持推流,这里将手机上的zixia.mp4作为输入:

    ffmpeg -re -i /storage/emulated/0/zixia.mp4 
        -vcodec libx264 
        -acodec aac 
        -f flv 
        -strict -2 rtmp://192.168.1.102/zhy/mylive=
  • 相关阅读:
    nohup 后台启动程序,并输出到指定日志
    linux-Centos7安装python3并与python2共存
    Notepad++中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    使用pip出现 cannot import name "main"
    Notepad++ 快捷键
    Notepad++ ssh NppFTP链接linux
    git 密钥
    查看oracle数据库锁
    Linux利用PROMPT_COMMAND实现操作记录的功能
    openstack-queens
  • 原文地址:https://www.cnblogs.com/yiweiaimeng/p/7811303.html
Copyright © 2011-2022 走看看