小编gau*_*rav的帖子

将重试连接逻辑添加到ffmpeg(rtmp)

我正在尝试使用ffmpeg创建视频马赛克.我的完整命令看起来像这样 -

ffmpeg -i rtmp://localhost:1935/live/output1 -i rtmp://localhost:1935/live/output2 -i rtmp://localhost:1935/live/output3 -i rtmp://localhost:1935/live/output4 -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=0 [tmp1]; [tmp1][upperright] overlay=shortest=0:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=0:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=0:x=320:y=240"  -filter_complex amix=inputs=4:duration=longest  -c:a aac -strict -2 -ar 44100  -c:v libx264 -f flv rtmp://localhost:1935/live/myStream
Run Code Online (Sandbox Code Playgroud)

只要所有4个输入流都在运行,这种方法就可以正常工作.但是说其中一个流下降了一段时间并重新上线.输出继续显示此流被卡住(暂停).因为一旦流下降(AVERROR_EOF)ffmpeg停止尝试从输入流中获取更多数据包.我必须重新启动ffmpeg进程才能恢复所有工作.

有没有办法在这里添加重试逻辑,只要进程处于活动状态,就会告诉ffmpeg继续尝试处理所有输入源?

video ffmpeg rtmp

6
推荐指数
0
解决办法
1472
查看次数

如何列出我的墙[Screeps]

当我使用建造新墙时Creep.build(),它会创建一个有1个生命点的墙.现在我正在尝试创建一个蠕变来修复这些新建的墙壁.但我无法想出一个很好的方法来列出和迭代这些墙对象.

Game.structures不包含这些因为墙不属于玩家.我能找到的唯一方法Game.getObjectById(objectId)是从我的游戏'ui(右侧面板)中复制粘贴ID.

screeps

2
推荐指数
1
解决办法
1390
查看次数

标签 统计

ffmpeg ×1

rtmp ×1

screeps ×1

video ×1