Ubuntu 安装SRT

  • SRT
  • 安装操作
    • 下载ffmpeg4.1,并覆盖文件
    • 安装ffmpeg与srt依赖包
      • libx264
      • libx265
      • libfdk_aac
      • libsrt
      • ffmpeg
    • 安装SRS服务器
      • 下载SRS服务器
      • 编译
      • 编写一个配置文件
    • 启动SRS并进行测试

SRT

SRT Encoder基于srt自适应bitrate的直播编码器。
SRT_ENCODER

安装操作

下载ffmpeg4.1,并覆盖文件

编码器是基于ffmpeg4.1开发的,只需要把SRT_ENCODER中的ffmpeg-4.1/fftools目录下的ffmpeg.c和srt_header.h拷贝替换到对应ffmpeg4.1版本对应的目录下。 ffmpeg4.1的官方打包源码地址: ffmpeg-4.1.tar.xz
覆盖后搁置,等待之后编译安装

安装ffmpeg与srt依赖包

libx264

wget https://johnvansickle.com/ffmpeg/release-source/libx264-git.tar.xz
xz -d libx264-git.tar.xz
tar -xvf libx264-git.tar
cd ./libx264-git
./configure --disable-asm
make -j 2
make install

libx265

sudo apt-get install cmake
wget https://johnvansickle.com/ffmpeg/release-source/libx265-git.tar.xz
xz -d libx265-git.tar.xz
tar -xvf libx265-git.tar
cd libx265-git/source/
mkdir build
cd build/
cmake …
make -j 2
make install

如果报错,就直接跳过libx265吧,等下编译ffmpeg的时候把它的依赖给删除

libfdk_aac

wget https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz
tar -xzvf fdk-aac-2.0.1.tar.gz
cd fdk-aac-2.0.1
./configure
make -j 2
make install

libsrt

sudo apt-get install git
git clone https://github.com/Haivision/srt.git
cd srt
./configure
make && make install

ffmpeg

回到上面修改完成之后的ffmpeg中进行编译

如果上面libx265编译失败,则在这里把--enable-libx265删除.

如果需要ffplay,则安装sudo apt install libsdl2-dev,打开ffmpeg-4.1/ffbuild/config.mak,找到!CONFIG_FFPLAY=yes,将感叹号删除后保存退出.之后将下面指令中的ffplay修改为enable.

(写给自己的:特么的为什么官网的教程给这么多disable…折腾人)

cd ffmpeg-4.1
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure --target-os=linux --arch=x86_64 --enable-cross-compile --enable-avdevice --enable-doc --disable-ffplay --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-libsrt --enable-nonfree --disable-asm --enable-gpl --pkgconfigdir=/usr/local/lib/pkgconfig --enable-shared
make -j 2
make install
sudo sh -c “echo ‘/usr/local/ffmpeg/lib’ >> /etc/ld.so.conf”
sudo ldconfig

在sudo make这里,如果报错SRTO_SMOOTHER相关的错误,就进入libavformat/libsrt.c文件,修改宏定义名称,摘于ffmpeg交叉编译问题及对策:

SRTO_SMOOTHER -> SRTO_CONGESTION
SRTO_STRICTENC -> SRTO_ENFORCEDENCRYPTION
SRTO_TSBPDDELAY -> SRTO_LATENCY

安装SRS服务器

可参考:
【网络通信 – 直播】SRS 实战记录 – SRS 部署与直播效果测试
v4_CN_SRTWiki

下载SRS服务器

git clone https://gitee.com/winlinvip/srs.oschina.git srs &&
cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git pull
# webrtc需要srs的最低版本:SRS4.0.14,所以我们部署的srs的时候版本需要大于SRS4.0.14
# 查看分支
git branch -v
# 若是不是 *4.0release ,需要切换分支
git checkout 4.0release
#再次查看当前所处分支
git branch -v

编译

./configure --srt=on  --with-hls --with-ssl --with-http-server --with-http-callback --with-http-api --with-ingest --with-stream-caster
sudo make

编写一个配置文件

cd ./conf
vim my_realtime.conf

my_realtime.conf:

# the config for srs to delivery realtime RTMP stream
# @see https://github.com/ossrs/srs/wiki/v2_CN_SampleRealtime
# @see full.conf for detail config.listen              1935;
max_connections     1000;
srs_log_tank        console;
srs_log_file        ./objs/srs.log;
daemon              on;http_server {enabled         on;listen          8080;dir             ./objs/nginx/html;https {enabled on;listen 8088;key ~/cert/server.key;cert ~/cert/server.crt;}
}
http_api {enabled         on;listen          1985;
}
rtc_server {enabled on;# Listen at udp://8000listen 8000;## The $CANDIDATE means fetch from env, if not configed, use * as default.## The * means retrieving server IP automatically, from all network interfaces,# @see https://github.com/ossrs/srs/wiki/v4_CN_RTCWiki#config-candidatecandidate $CANDIDATE;
}
srt_server {enabled on;listen 10080;
}
vhost __defaultVhost__ {tcp_nodelay     on;min_latency     on;play {gop_cache       off;queue_length    10;mw_latency      100;}# 开启 flv 播放http_remux {enabled     on;mount       [vhost]/[app]/[stream].flv;}# 开启 m3u8 播放hls {enabled         on;hls_path        ./objs/nginx/html;hls_fragment    10;hls_window      60;}publish {mr off;}#vhost打开启用rtcrtc {enabled     on;bframe      discard;}
}

启动SRS并进行测试

cd ~/srs/trunk
sudo ./objs/srs -c conf/my_realtime.conf

另开一个终端,在srs/trunk/doc中有测试用的source.flv,进入到该目录下:

ffmpeg -re -i source.flv -c:v libx264 -s 640x360 -b:v 700k -c:a libfdk_aac -ab 64k -ar 44100 -ac 2 -f mpegts 'srt://127.0.0.1:10080?streamid=#!::h=live/livestream,m=publish'

推流后,进入浏览器输入127.0.0.1:8080,可去检查推流情况

Ubuntu 安装SRT相关推荐

  1. Ubuntu安装MongoDB

    https://jingyan.baidu.com/article/e5c39bf5f5ddd539d76033a9.html Ubuntu安装MongoDB4.0: https://www.jian ...

  2. ubuntu安装OpenCV详细教程(建议收藏)

    记录一篇"如何安装ubuntu下C++接口的opencv"的文章.由于转载格式有问题,直接贴个链接:ubuntu安装opencv的正确方法 注意:本人根据此博客安装遇到的问题:2. ...

  3. Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/redis-server.

    此文首发于我的个人博客:Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/r ...

  4. debian,ubuntu 安装mongodb 允许外网访问,修改端口,设置用户和密码

    使用apt安装mongodb: apt update && apt install mongodb 查看运行状态: systemctl status mongodb.service 结 ...

  5. ubuntu安装KVM

    ubuntu安装KVM 现在官网下载ubuntu镜像,桌面版或者服务端都可,这里以桌面端为例. 安装之前确保磁盘有足够大的空间(这很重要) 安装KVM sudo apt install qemu-kv ...

  6. 解决Ubuntu安装依赖问题

    解决Ubuntu安装依赖问题 解决Ubuntu安装依赖问题 最主要问题,修改的国内镜像源可能不是对应的ubuntu版本,大部人直接找了个镜像源就复制到source.list里面了,其实需要对应版本的, ...

  7. Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客

    Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客

  8. ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装

    ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装

  9. Ubuntu安装、使用postgresql数据库

    Ubuntu安装.使用postgresql数据库 $ sudo apt-get install postgresql  (端口为5432) $ sudo apt-get install postgre ...

最新文章

  1. 述说C#中的值类型和引用类型的千丝万缕
  2. 观点|重磅出炉!29页《业内观点:机器人行业的未来》
  3. Angular Universal 官网翻译
  4. 记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)
  5. 文字识别:关键信息提取的3种探索方法
  6. Android studio修改Logcat颜色
  7. opencv4快速入门pdf_云复工提升工作效率之九 福昕PDF阅读器
  8. 区块链 女巫攻击是什么 Sybil Attack 为什么POW可以抵御女巫攻击 一文看懂
  9. java反射(测试下用onenote把笔记发送到oschina上,文章来源网络)
  10. 如何在30天内拿下软考初级程序员?
  11. 软件项目的项目经理不懂技术,能做好项目经理么?
  12. HTML5——meta标签总结
  13. Java 中status意思_java web开发中 varStatues=quot;statusquot; 中参数status是啥作用和意思呢?这个参数的设置有啥要求呢?...
  14. Human Pose Estimation姿态估计调研
  15. iOS 打开AppStore指定app下载页
  16. 什么叫工业4.0,这篇接地气的文章终于讲懂了
  17. 【舆情监测平台】舆情危机处置的四大原则。
  18. Java中如何打印出一个数组中所有元素呢?
  19. persona chat
  20. 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇

热门文章

  1. MySQL取别名(应该取有意义的别名)
  2. HEX,S19互相转换
  3. Arduinojson官网反序列化示例教程
  4. oracle导入和导出dmp,Oracle 导入、导出DMP(备份)文件
  5. 如何用 FinalCutPro剪辑HDR视频
  6. 洛谷P1209 [USACO1.3]修理牛棚 Barn Repair----解题报告
  7. 云计算行业到了最危险的时刻
  8. 【第二季】Arcgis地图制图基础|(五)活用智能标注
  9. JAVA实现读取文件时,从文件的最后一行往上一行行读出来。
  10. Android8.0 蓝牙低功耗扫描锁屏停止问题