当前位置: 首页 > 知识库问答 >
问题:

在执行-c:v复制时用ffmpeg拆分精确的。ts片段

谷梁宏恺
2023-03-14

目标是从mkv生成与HLS兼容的MPEGTS片段,用-c:v copy复制视频,但转码音频。

但是,由于在输入查找(-ss)ffmpeg查找关键帧(对我来说,这似乎是最近的前一个关键帧),所以从关键帧开始,在大多数片段之前,我得到了N秒没有音频的视频。

可能的解决办法有:

>

  • 定义段偏移量/持续时间,以便它实际上与关键帧匹配;问题是我不知道如何快速提取关键帧及其偏移量列表

    强制ffmpeg以某种方式搜索到适当的时间,并在那里生成一个关键帧来启动段;编辑:我认为这是不可能的,因为生成一个关键帧会更改之后的所有帧,这在-c:v copy中是不可能的

    请不要建议现有的HLS解决方案,除非它们在源代码中演示了该问题的解决方案。必须使用ffmpeg,按需生成每个段。

  • 共有1个答案

    斜高翰
    2023-03-14

    对于您的解决方案1。可以使用ffprobe-show_frames获取帧。关键帧信息是输出的一部分。选项-print_format json易于解析。

     类似资料:
    • 如何拆分列表并并行执行 我的场景-- 我从webservices获得了1000辆使用下面列表的车辆。 我想在每个列表中分割100辆车并并行执行所有列表。 谢谢

    • 我这里有一段ffmpeg命令,第一张图片是gif,设置时长是4.29秒,我的音频文件是4.29秒,然后设置了动画,帧数是129帧,因为我后面设置帧率是30,30乘以4.29=129。但是最后生成的视频,第一个gif时间超过了1分钟,应该怎么改这个命令。 我的gif是2秒,一秒8帧的gif。

    • 我正在编写一个代码,希望在计时时有一定的精度。我使用机器人做一些动作,然后使用,以便在操作之间运行。但我并没有得到最好的结果,因为当我搜索它时,睡眠不准确。实现这一目标的最佳方式是什么?我的意思是模拟线程。用其他方法睡眠。

    • 我正在编写一个脚本,将MKV或AVI等视频文件转换成MP4,然后从web流媒体中准备它们。我希望我的输出使用H.264和AAC编解码器。 到目前为止,我的命令如下所示: 然而,当编解码器已经是H.264时,它仍然对其进行多路复用,它表示:(H264->libx264)。 如果我将'-vcodec h264'替换为'-vcodec copy',当编解码器是H.264时,它的速度会快得多,但如果输入文

    • 对于伸缩/故障转移,mongodb使用“副本集”,其中有一个主服务器和一个或多个辅助服务器。Primary用于写操作。中学用于阅读。这几乎是SQL编程中使用的主从模式。如果主节点下降,则次节点集群中的次节点将取代它的位置。因此,水平伸缩和故障转移的问题得到了解决。然而,这似乎不是一个允许分叉的解决方案。一个真正的碎片只保存整个数据的一部分,所以如果副本集中的次要碎片是碎片,当它没有服务请求所需的所

    • 我已经在一台具有三个不同端口(例如27018[master]、27019、27020)的机器中进行了复制。我还在一台机器上用两个不同的端口(比如27021、27022)进行了分片。 现在我必须为分片的计算机端口实现复制。我需要为27021和27022实现复制。我怎么能这么做?请帮我解决这个问题。 null