我正在使用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复制”并获得所需的正确视频吗?
答案 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;
}
答案 3 :(得分:0)
只需删除 -c copy 即可获得准确的剪切。
"ffmpeg -y -ss 10 -t 5 -i test.mp4 output.mp4"