微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。