Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video ffmpeg开始时间为负_Video_Terminal_Ffmpeg - Fatal编程技术网

Video ffmpeg开始时间为负

Video ffmpeg开始时间为负,video,terminal,ffmpeg,Video,Terminal,Ffmpeg,我正在使用ffmpeg按开始/结束时间分割视频。例如,我有一组时间[[0,2]、[2,4]、[4,6]],我会在这里调用ffmpeg 3次,以在时间0、2和4创建三个2秒的视频 我的问题是这些时间(正确的)没有正确分割视频。当我用ffprobe-I test.mov-show_format检查视频的统计数据时,我注意到start_time=-0.381044。我还知道,这似乎是由于在QuickTime中剪辑视频以制作此视频造成的。为了纠正这一点,我必须在代码中的某个地方添加(start+0.38

我正在使用ffmpeg按开始/结束时间分割视频。例如,我有一组时间[[0,2]、[2,4]、[4,6]],我会在这里调用ffmpeg 3次,以在时间0、2和4创建三个2秒的视频

我的问题是这些时间(正确的)没有正确分割视频。当我用
ffprobe-I test.mov-show_format
检查视频的统计数据时,我注意到
start_time=-0.381044
。我还知道,这似乎是由于在QuickTime中剪辑视频以制作此视频造成的。为了纠正这一点,我必须在代码中的某个地方添加(start+0.381044),并且输出良好


那么,为什么quicktime修剪会将开始时间设置为负值?如何设置start_time=0,使我的代码可以在没有+0.381044的情况下工作?

视频流通常是互编码的,即大多数帧依赖于要解码的其他帧。因此,当这样的流被修剪时,在没有转码的情况下,那些参考帧,即使不在修剪的时间范围内,也必须被包括在输出中,以便视频能够被播放。现在,微调s/w可以通过两种方式处理这些参考帧的时间戳:为它们分配一个负PTS,以便它们可用于解码,但不显示。或者从零(或任何正值)开始所有时间戳,以便也显示它们。在这种情况下,视频剪辑不精确,并且包含额外的帧


如果使用FFmpeg对主视频进行了修剪,则可以通过在修剪命令中添加
-avoid_negative_ts make_zero
来强制执行第二种行为。但不知道如何使用QT设置。视频流通常是互编码的,即大多数帧依赖于其他帧进行解码。因此,当这样的流被修剪时,在没有转码的情况下,那些参考帧,即使不在修剪的时间范围内,也必须被包括在输出中,以便视频能够被播放。现在,微调s/w可以通过两种方式处理这些参考帧的时间戳:为它们分配一个负PTS,以便它们可用于解码,但不显示。或者从零(或任何正值)开始所有时间戳,以便也显示它们。在这种情况下,视频剪辑不精确,并且包含额外的帧


如果使用FFmpeg对主视频进行了修剪,则可以通过在修剪命令中添加
-avoid_negative_ts make_zero
来强制执行第二种行为。但我不知道如何使用QT设置它。

很有趣。所以基本上如果我有帧1-15和12-15是参考帧,那么输出视频可能从-3开始?另外,当使用ffmpeg命令ffmpeg-i longerTest.mp4-ss 0-t10test2.mov-avoid_negative_ts make_zero选项放置问题时,我的修剪器的开始时间仍然是负的。输出文件名应该在末尾。我现在有命令ffmpeg-I longerTest.mp4-ss 0-t10-avoid\u negative\u ts make\u zero test2.mov。但是,开始时间为0.042993。我尝试将这些选项添加到命令的前面,这导致启动时间为0,但似乎也损坏了视频。
avoid..
选项仅在您使用ffmpeg代替QT来修剪原始视频时可用。为什么不在原始视频上使用
ffmpeg-ss START-t TIME-i orig.mov-c copy-avoid\u negative\u ts make\u zero trimmed.mov
,运行剪辑呢。如果删除
-c copy
,也可以删除
避免..
。在您告诉我之后,我切换到了ffmpeg。但是命令[[[ffmpeg-ss 0-t10-i longerTest.mp4-c copy-avoid_negative_ts make_zero test2.mov]]会导致0.32993的开始时间。所以基本上如果我有帧1-15和12-15是参考帧,那么输出视频可能从-3开始?另外,当使用ffmpeg命令ffmpeg-i longerTest.mp4-ss 0-t10test2.mov-avoid_negative_ts make_zero选项放置问题时,我的修剪器的开始时间仍然是负的。输出文件名应该在末尾。我现在有命令ffmpeg-I longerTest.mp4-ss 0-t10-avoid\u negative\u ts make\u zero test2.mov。但是,开始时间为0.042993。我尝试将这些选项添加到命令的前面,这导致启动时间为0,但似乎也损坏了视频。
avoid..
选项仅在您使用ffmpeg代替QT来修剪原始视频时可用。为什么不在原始视频上使用
ffmpeg-ss START-t TIME-i orig.mov-c copy-avoid\u negative\u ts make\u zero trimmed.mov
,运行剪辑呢。如果删除
-c copy
,也可以删除
避免..
。在您告诉我之后,我切换到了ffmpeg。但是命令[[[ffmpeg-ss 0-t10-i longerTest.mp4-c copy-avoid_negative_ts make_zero test2.mov]]的启动时间为0.32993。