我正在尝试使用-ss
的时间-to
和HH:MM:SS:MS
剪切视频。
我使用的是-to
而不是-t
,因为我希望剪切在“时间范围内”而不是“在”时间范围内。
我还必须使用-to
,因为我正在使用的另一个程序的时间输入文本框需要它。在这种情况下,我将无法使用-t
。
示例:
https://superuser.com/a/670590
-ss 00:01:00:00 -to 00:02:00:00
的剪切从第1分钟开始,在第2分钟结束。
-ss 00:01:00:00 -t 00:02:00:00
剪切从第1分钟开始,在第3分钟结束。
https://trac.ffmpeg.org/wiki/Seeking#Cuttingsmallsections
我无法在-ss
之前使用-i
,在-to
之后使用-ss
。
在-to
之后,我只能使用慢速搜索-i
和00:01:00
。
无效
这比时间快了一分钟。
使用00:03:00
搜索从faster
到ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
进行剪切。
00:01:00
工程
我正在尝试快速搜索。
使用00:02:00
搜索从slower
到ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4
进行剪切。
-copyts
工作正常(有问题)
00:01:00
破坏了播放器中的视频时间条。
使用00:02:00
搜索从faster
到ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
进行剪切。
let fsReadDir = Util.promisify(Fs.readdir);
let fsStat = Util.promisify(Fs.stat);
let picturePromises = [];
let directories = await fsReadDir(rootFolder);
for (let dirIndex = 0; dirIndex < directories.length; dirIndex++) {
let file = directories[dirIndex];
let stat = await fsStat(path[pathIndex] + '/' + file);
if (stat.isDirectory()) {
let pictures = await fsReadDir(path.join(rootFolder, dirName));
for (let picIndex = 0; picIndex < pictures.length; picIndex++) {
let stat = await fsStat(path.join(rootFolder, dirName, pictures[picIndex]));
if (stat.isFile()) {
if (picture.startsWith("norm")) {
let pTensor = fileToTensor(path.join(rootFolder, dirName, pictures[picIndex])).then((img) => {
buffer.push(img);
}).catch((error) => { console.log(error) });
picturePromises.push(pTensor);
}
}
}
}
}
Promise.all(picturePromises);
console.log(buffer);
async function fileToTensor(path) {
return await sharp(path)
.removeAlpha()
.raw()
.toBuffer({ resolveWithObject: true });
}
答案 0 :(得分:1)
重新混合方法3的结果
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
&&
ffmpeg -i cut.mp4 -c copy recut.mp4
或使用最新版本的ffmpeg,
ffmpeg -ss 00:01:00 -to 00:02:00 -i video.mp4 -c copy cut.mp4