gpt4 book ai didi

select - ffplay 使用选择过滤器时保持视频/音频同步

转载 作者:行者123 更新时间:2023-12-03 00:37:36 28 4
gpt4 key购买 nike

我正在尝试使用 ffplay 播放/跳过一些视频剪辑。我跳过第 100 到 400 帧的第一种方法是:

ffplay -vf "select='lte(n\,100)+gte(n\,400)'" -i INPUT

这会跳过所需的帧,但它也会在跳过的帧期间卡住视频。我尝试通过使用 setpts 选项修改视频演示时间戳 (PTS) 来解决此问题:
ffplay -vf "select='lte(n\,100)+gte(n\,400)',setpts='PREV_OUTPTS'" -i INPUT

这似乎有效(仍然卡住一点,猜测是因为缓冲),但现在音频不同步。我尝试过应用选择过滤器并修改音频上的 PTS
ffplay -vf "select='lte(n\,100)+gte(n\,400)',setpts='PREV_OUTPTS'" -af "aselect='lte(n\,100)+gte(n\,400)',asetpts='PREV_OUTPTS'" -i INPUT

这会跳过一些音频帧,但仍然不同步。我尝试使用 aresample=async=10000 选项,结果相似。将部分/所有过滤器移动到输出(将它们放在 -i INPUT 之后)也不起作用。

有人知道如何使用 ffplay 跳过部分视频吗?非常感谢

最佳答案

音频帧数 != 视频帧数。 FFmpeg 的编码器生成的 AAC 音频是每帧 1024 个样本,因此 48kHz 流每秒有 48000/1024 = 46.875 个音频帧。其他编解码器可能有不同的速率。

使用t而不是 n ,并生成一系列连续的时间戳。

ffplay
-vf "select='lte(t\,4)+gte(t\,16)',setpts=N/FRAME_RATE/TB"
-af "aselect='lte(t\,4)+gte(t\,16)',asetpts=N/SR/TB"
-i INPUT

我假设视频帧速率为 25 fps。相应地修改。

关于select - ffplay 使用选择过滤器时保持视频/音频同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122287/

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