我试图找出ffmpeg的问题。 我有以下安装: - DeckLink Mini Recorder卡(用于HDMI输入) - DeckLink迷你监视器卡(用于HDMI输出)
我已成功设法从Decklink卡获取HDMI输入,并使用以下命令将输出原样输出到输出卡:
ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"
我尝试添加一个复杂过滤器来添加图像的叠加层,使用以下命令,它可以工作:
ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" -i ./tools/bin/windows/2.png -y -filter_complex "[0:1][1:0]overlay=10:10" -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"
我从decklink记录器获得实时馈送,图像被添加到流中,并将其输出到输出HDMI卡。一切似乎都有效。
现在我尝试将静态图像路径更改为使用stdin(pipe:0
),并且我有一个工具可以不断地将PNG图像传输到stdout:
ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" -i pipe:0 -y -filter_complex "[0:1][1:0]overlay=10:10" -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"
我输出HDMI卡的结果是第一帧的静态图像。 ffmpeg的输出现在也改变了,看起来它卡在流的第一秒:
``` frame = 30 fps = 7.4 q = -0.0 size = N / A time = 00:00:01.00 bitrate = N / A speed = 0.247x
{frames:30, currentFps:7, currentKbps:NaN, targetSize:NaN, 时间标记:' 00:00:01.00' } ```
它只保留在00:00:01.00
上,永不改变。
我试图找到问题,并做了以下事情:
尝试流式传输Decklink Recorder - > static png file overlay - > Decklink Monitor = IS WORKS
尝试流式传输静态png文件 - > Decklink Monitor = IS WORKS
尝试流管:0(PNG文件) - > Decklink Monitor = IS WORKS
尝试流式传输Decklink Recorder - >管道:0(PNG文件覆盖) - > RAW AVI文件工作
唯一的问题是: - 试图流Decklink Recorder - > pipe:0(PNG文件)overlay - > Decklink Monitor 不工作
我怀疑Decklink输出更严格,我的pipe:0
PNG图像不稳定,两者的组合导致它冻结。
知道怎么解决吗? :(
谢谢!
答案 0 :(得分:0)
我会先试试这个
ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" \
-framerate 1/10 -i pipe:0 \
-y -filter_complex "[1]fps=5[i];[0:1][i]overlay=10:10" \
-f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"
其中10
中的1/10
表示通过管道发送的图像之间的大致持续时间(以秒为单位)。