我尝试使用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跳过部分视频吗?非常感谢
答案 0 :(得分:1)
音频帧编号!= 视频帧编号。由FFmpeg编码器生成的AAC音频是每帧1024个采样,因此48kHz流每秒具有48000/1024 = 46.875个音频帧。其他编解码器可能有不同的速率。
使用 try:
if module.parent is not None:
if module.parent.path is not None:
path = os.pathsep.join([origPath] + module.parent.path)
os.environ["PATH"] = path
self._CopyFile(module.file, target, copyDependentFiles)
else:
path = os.pathsep.join([origPath, os.path.dirname(module.parent.file)])
os.environ["PATH"] = path
print '========================================================'
finally:
os.environ["PATH"] = origPath
代替t
,并生成一系列连续的时间戳。
n
我假设视频帧速率为25 fps。相应修改。