使用FFMPEG更改mp4视频持续时间

使用FFMPEG更改mp4视频持续时间,ffmpeg,video-processing,Ffmpeg,Video Processing,我正在尝试使用FFMPEG更改视频持续时间。我不相信这与元数据有关,而是在视频开始时以某种方式进行编码。有人知道是否有可能改变这个值吗 Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : “test_title" encoder : Lavf55.19.104 Durati

我正在尝试使用FFMPEG更改视频持续时间。我不相信这与元数据有关,而是在视频开始时以某种方式进行编码。有人知道是否有可能改变这个值吗

 Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : “test_title"
    encoder         : Lavf55.19.104
 Duration: 00:57:51.81, start: 0.000000, bitrate: 1289 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 1157 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
 Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 126 kb/s (default)

谢谢

他们的维基上实际上有一篇帖子:

引述:

加速/减速视频

您可以使用setpts视频过滤器更改视频的速度。[……]

要加快视频速度,您可以键入:

ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
请注意,此方法将丢弃帧以达到所需的速度。您可以通过指定比输入更高的输出帧速率来避免丢弃帧,例如,从4的输入变为速度高达4倍(16 fps)的输入:

ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" -an output.mkv
要降低视频速度,必须使用大于1的倍增:

ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv

实际上,他们的维基上有一篇帖子:

引述:

加速/减速视频

您可以使用setpts视频过滤器更改视频的速度。[……]

要加快视频速度,您可以键入:

ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
请注意,此方法将丢弃帧以达到所需的速度。您可以通过指定比输入更高的输出帧速率来避免丢弃帧,例如,从4的输入变为速度高达4倍(16 fps)的输入:

ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" -an output.mkv
要降低视频速度,必须使用大于1的倍增:

ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv

在不影响实际持续时间的情况下,无法更改媒体播放器中显示的持续时间。这是因为播放机本身会计算持续时间,而不会在实际文件中进行编码。

在不影响实际持续时间的情况下,无法更改媒体播放机中显示的持续时间。这是因为玩家自己计算持续时间,而不是在实际文件中进行编码。

您好,谢谢,我应该更具体一些。我想编辑视频头文件中的视频长度值,但不改变实际的电影。持续时间是帧数*帧速率。如果要更改持续时间,则需要更改帧速率。这就是你想要的吗?不,我真的不想改变帧速率。我想不这样做是不可能的。你的意图是什么?嗨,谢谢,我应该说得更具体些。我想编辑视频头文件中的视频长度值,但不改变实际的电影。持续时间是帧数*帧速率。如果要更改持续时间,则需要更改帧速率。这就是你想要的吗?不,我真的不想改变帧速率。如果不这样做,我想这是不可能的。你的意图是什么?不,可以修改时间码元数据,但不是所有玩家都支持显示它。不,可以修改时间码元数据,但不是所有玩家都支持显示它。