ffmpeg:剪切视频但长度错误

时间:2018-10-15 05:31:04

标签: ffmpeg

我正在使用ffmpeg剪辑视频。 这是输入信息:

for (let i = 0; i < products.length; i++) {
    console.log(products[i]);
    Product.findOne({title: products[i].title}) //products[i].title 
    .then(results => { //update products with results
      console.log(results)
        if (!results) {
        products[i].save();
        } 
    }); 
}
});

这是我使用的命令:

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 5113 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)

但是输出持续时间约为9.66秒。

当我删除了'-c copy'选项或输入的内容不包含'tv,bt709'标签时,它起作用了。但这比较慢。

我想知道如何使用“ -c复制”并获得所需的正确视频吗?

4 个答案:

答案 0 :(得分:1)

就我而言,我不使用 -c copy 但仍然得到错误的持续时间。 经过调查,我发现是“视频章节”引起的。因此通过 -map_chapters -1 禁用章节将输出正确的持续时间。

ffmpeg -ss 04:20 -to 04:41 -i "$input_file" -c:a aac -c:v h264_videotoolbox -b:v 29445k -map_chapters -1 "output.mp4"
-ss 04:20              : From
-to 04:41              : To
-i "$input_file"       : Input file
-c:a aac               : Set AAC codec for audio output
-c:v h264_videotoolbox : h264 hw encoder on Mac
-b:v 29445k            : Output video bitrate
-map_chapters -1       : Disable video chapters
"output.mp4"           : Output file

答案 1 :(得分:0)

来自ffmpeg文档:

  

-t持续时间(输入/输出)用作输入选项时(在-i之前),限制从输入文件读取数据的持续时间。

     

用作输出选项时(在输出网址之前),请停止编写   持续时间达到持续时间后输出。

     

持续时间必须是持续时间规范,请参阅(ffmpeg-utils)   ffmpeg-utils(1)手册中的“持续时间”部分。

鉴于此,如果您想要5秒的视频流,请尝试指定要从输入文件中读取的持续时间(在-i标记之前)以及从最终输出文件中想要的持续时间(在输出URL之前)。

答案 2 :(得分:0)

第一个命令将使用更快的搜索从00:01:00剪切到00:03:00(原始命令)。

第二个命令将使用较慢的搜索从预期的时间从00:01:00减少到00:02:00。

第三个命令将使用更快的查找按预期从00:01:00减少到00:02:00。

Future<Size> _calculateImageDimension() {
  Completer<Size> completer = Completer();
  Image image = Image.network("https://i.stack.imgur.com/lkd0a.png");
  image.image.resolve(ImageConfiguration()).addListener(
    ImageStreamListener(
      (ImageInfo image, bool synchronousCall) {
        var myImage = image.image;
        Size size = Size(myImage.width.toDouble(), myImage.height.toDouble());
        completer.complete(size);
      },
    ),
  );
  return completer.future;
}

完整文档enter link description here

答案 3 :(得分:0)

只需删除 -c copy 即可获得准确的剪切。

"ffmpeg -y -ss 10 -t 5 -i test.mp4 output.mp4"