Puo's 菜园子 学习园地 http://puo.cn
易记网址: http://wordpress.cn.com

Docker 搭建 Rss 阅读器 freshrss

enu-0" style="box-sizing: border-box; margin: 16px 0px; font-weight: 500; line-height: 1.2; font-size: 24px; position: relative; color: #343a40; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #ffffff; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">前言

阿蛮君最近接触了 ffmpeg,之前只知道它很强大,但从来没有用过。由于工作上使用 ffmpeg 录制了摄像头的视频流,但是自己没有摄像头,于是想着如何搭建自己的直播流。

后来发现开源的 rtsp 服务器 rtsp-simple-server,它可以读取和发布实时流,并且还可以代理流,以及进行流转换,同时还可以进行身份验证,并可以使用 api 查询和控制服务器。

rtsp-simple-server 现已更名为 mediamtx,项目地址为:https://github.com/bluenviron/mediamtx

下面是一些常见的用法。

一、将视频发布为rtsp流

1. 启动服务器

这里指定了 rtsp 服务器的地址为 0.0.0.0:8554,表示可以通过任何 IP 地址来访问。

<div class="pk-code-tools" style="box-sizing: border-box; white-space: normal; word-break: break-all; background-color: #0b1c2c; border-top-left-radius: var(--pk-g-box-radius); border-top-right-radius: var(--pk-g-box-radius); padding: 5px 10px 0px; display: flex; place-content: center space-between; color: #343a40; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" data-pre-id="hljs-item-0">
<td class="hljs-ln-line hljs-ln-numbers" style="box-sizing: border-box; word-break: normal !important; user-select: none; text-align: center; color: #8e8d8d; vertical-align: top; display: inline-block; margin-right: 10px; padding: 0px; border: 0px solid inherit;" data-line-number="1">
docker run -d \
–name rss \
-e RTSP_RTSPADDRESS=”0.0.0.0:8554″ \
–network host \
aler9/rtsp-simple-server

2. 发布实时流

将视频文件发布为实时流。

ffmpeg -re -stream_loop -1 -i input.mp4 -c:v libx264 -preset ultrafast -c:a aac -f rtsp rtsp://localhost:8554/mystream

th: 0px; white-space: normal; background-color: #ffffff; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">3. 查看实时流

可以通过 potplayer 等工具添加流地址:rtsp://ip:8554/mystream,替换 ip 即可。

这里说明一下,推流后,可以通过多种协议从服务器拿到数据

<div class="pk-code-tools" style="box-sizing: border-box; white-space: normal; word-break: break-all; background-color: #0b1c2c; border-top-left-radius: var(--pk-g-box-radius); border-top-right-radius: var(--pk-g-box-radius); padding: 5px 10px 0px; display: flex; place-content: center space-between; color: #343a40; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" data-pre-id="hljs-item-2">
<td class="hljs-ln-line hljs-ln-numbers" style="box-sizing: border-box; word-break: normal !important; user-select: none; text-align: center; color: #8e8d8d; vertical-align: top; display: inline-block; margin-right: 10px; padding: 0px; border: 0px solid inherit;" data-line-number="1">
# rtsp
rtsp://ip:8554/mystream
# rtmp
rtmp://ip:1935/mystream
# hls 它会去请求 http://ip:8888/mystream/stream.m3u8,即视频的索引文件
http://ip:8888/mystream/
# webrtc
# 还不清楚

6479985463140

如果能看见视频则说明流没有问题。

647998ba32294

二、身份认证

1. 启动服务器

首先创建认证相关的配置文件。

mkdir -p /home/docker/rss/ && \
cd /home/docker/rss/ && \
touch rtsp-simple-server.yml && \
cat > rtsp-simple-server.yml <<EOF
paths:
all:
publishUser: myuser
publishPass: mypass
readUser: user
readPass: userpass
EOF

启动服务器。

docker run -d \
–name rss \
-v /home/docker/rss/rtsp-simple-server.yml:/rtsp-simple-server.yml \
-e RTSP_RTSPADDRESS=”0.0.0.0:8554″ \
–network host \
aler9/rtsp-simple-server

2. 发布实时流

ffmpeg -re -stream_loop -1 -i input.mp4 -c:v libx264 -preset ultrafast -c:a aac -f rtsp rtsp://myuser:mypass@localhost:8554/mystream

enu-8" style="box-sizing: border-box; margin: 16px 0px; font-weight: 500; line-height: 1.2; font-size: 22px; position: relative; color: #343a40; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #ffffff; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">3. 查看实时流

操作和上面一样,由于这里添加的权限认证,所以填写地址:rtsp://user:userpass@ip:8554/mystream,替换 ip 即可。

三、补充

现在 rtsp-simple-server 已经更名为 mediamtx,搭建方式基本一样,但是提供了自带 ffmpeg 的版本。

<div class="pk-code-tools" style="box-sizing: border-box; white-space: normal; word-break: break-all; background-color: #0b1c2c; border-top-left-radius: var(--pk-g-box-radius); border-top-right-radius: var(--pk-g-box-radius); padding: 5px 10px 0px; display: flex; place-content: center space-between; color: #343a40; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" data-pre-id="hljs-item-6">
<td class="hljs-ln-line hljs-ln-numbers" style="box-sizing: border-box; word-break: normal !important; user-select: none; text-align: center; color: #8e8d8d; vertical-align: top; display: inline-block; margin-right: 10px; padding: 0px; border: 0px solid inherit;" data-line-number="1">
docker run -d \
–name mediamtx \
-v /home/docker/mediamtx/data:/data \
-e RTSP_RTSPADDRESS=”0.0.0.0:8554″ \
–network host \
bluenviron/mediamtx:1.8.2-ffmpeg

需要推流只需要运行如下命令即可:

docker exec -it mediamtx ffmpeg -re -stream_loop -1 -i /data/input.mp4 -c:v libx264 -preset ultrafast -c:a aac -f rtsp rtsp://localhost:8554/mystream

e="box-sizing: border-box; margin: 10px 0px !important; white-space: normal; word-break: break-all; font-size: 12px; color: var(--pk-c-sub) !important; line-height: 2; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">提醒:本文发布于398天前,文中所关联的信息可能已发生改变,请知悉!

AD:【Puo.cn 学习园地欢迎您的来访!】域名,网建,wordpress,物流!
打赏
谢谢谅解上文的粗糙,允许转载,请注明转载地址:Puo's 菜园子 » Docker 搭建 Rss 阅读器 freshrss
分享到

剑痞

白天晕乎乎,晚上睡不着的中年大叔 http://puo.cn http://wordpress.cn.com

相关推荐

评论 抢沙发

做一个好的个人学习园地

主要网建,域名、集装箱物流、生活方法论的学习及研究,整理等内容

我的原创博客-忆秋年Puo's菜园子-我的学习园地

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册