gpt4 book ai didi

ffmpeg - 使用 ffmpeg 对多个网络输入进行视频叠加

转载 作者:行者123 更新时间:2023-12-04 22:55:31 24 4
gpt4 key购买 nike

我正在使用 FFMPEG 编写我的第一个程序图书馆,不幸的是,这不是一个简单的图书馆。

我需要的是:

  • 捕获几个网络输入(udp)。
  • 解复用输入。
  • 覆盖视频流。
  • 混合音频(或其他一些逻辑)。
  • 对结果流进行编码。
  • 重新混合流并将结果写入文件。

  • 现在我正在玩 ffmpeg.exe尝试实现此功能的工具。我的命令如下所示:
    .\ffmpeg.exe -threads auto -y -i input0 -i input1 \
    -filter_complex "[0:v]scale=1920x1080[v0];[1:v]scale=480x270[v1];[v0][v1]overlay=1440:810[v2]" \
    -map [v2] -map 0:a -c:v libx264 -preset ultrafast -c:a copy output.mp4

    input0input1是文件,结果输出是正确的,另一方面,当输入是 udp 流时,结果输出不正确,视频大部分时间都会卡住。

    使用以下命令从 udp 流生成文件输入:
    .\ffmpeg.exe -threads auto -y -i "udp://@ip:port" -c copy -f mpegts input1.mpg
    Question 1 .
    为什么上面的命令没有为 udp 流产生好的输出? ffmpeg.exe 的原始流和该流的转储之间有什么区别? .
    Question 2 .
    是否有一些参数可以修复命令?
    Question 3 .
    正确覆盖两个网络流需要什么样的逻辑/算法。

    最佳答案

    可能 ffmpeg 正在丢弃一些数据,因为您没有足够的缓冲区。

    我认为您需要放置这两个标志(将其应用于输入)以实现您的目标:

    -thread_queue_size 512 -rtbufsize 50M

    IE(使用您输入的命令):
        .\ffmpeg.exe -threads auto -y -i input0 -i input1 \
    -thread_queue_size 512 -rtbufsize 50M \
    -filter_complex "[0:v]scale=1920x1080[v0];[1:v]scale=480x270[v1];[v0][v1]overlay=1440:810[v2]" \
    -map [v2] -map 0:a -c:v libx264 -preset ultrafast -c:a copy output.mp4

    它对我有用。

    关于ffmpeg - 使用 ffmpeg 对多个网络输入进行视频叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002460/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com