使用 ffmpeg 来“重新计时”RTSP 流?

问题描述

我最近在我的花园里设置了一个鸟箱,并且一直在使用我购买的廉价相机以及树莓派上的 ffmpeg 从相机流式传输到 YouTube。

但是 YouTube 一直告诉我我发送数据的速度太快了 - 每秒几秒的视频,此时流似乎停顿了,我只是在 YouTube 上获得了一个缓冲微调器,必须重新启动 ffmpeg 才能恢复流.

这种情况发生得非常频繁,事实上现在比我最初出于某种原因启动并运行所有内容时更频繁……以至于我不得不设置 ffmpeg 作为服务运行,并每小时重新启动一次通过 cron。但即使这还不够,现在看来它可以在重新启动后的 10-15 分钟内变得疯狂 - 几乎就像我越频繁地重新启动它一样......

我不知道问题出在哪里,也不知道如何找到它(ffmpeg 是否只是简单地重新播放相机提供的“逐字逐句”?),但我想知道是否有可能让 ffmpeg 重新对流进行计时,以便我只向 YouTube 发送它满意的 25fps(即丢弃超过这个的任何帧)?

我在相机上将关键帧设置为 1 秒。

谢谢!


这是我的服务文件,其中包含我用来启动 ffmpeg 的命令:

[Unit]
Description=BirbCam 1 streaming service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
# Uncomment one ExecStart line below,then run `sudo systemctl daemon-reload` before restart
# With audio
ExecStart=/usr/local/bin/ffmpeg -rtsp_transport tcp -i rtsp://172.25.144.35:554/user=admin&password=&channel=1&stream=0.sdp?real_stream -tune zerolatency -vcodec libx264 -pix_fmt + -c:v copy -c:a aac -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxx

# Without audio
# ExecStart=/usr/local/bin/ffmpeg -f lavfi -i anullsrc -rtsp_transport tcp -i rtsp://172.25.144.35:554/user=admin&password=&channel=1&stream=0.sdp?real_stream -tune zerolatency -vcodec libx264 -pix_fmt + -c:v copy -c:a aac -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxx

[Install]
WantedBy=multi-user.target

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)