与快速搜索-ss -to和HH:MM:SS:MS一起使用Cut

时间:2019-04-01 10:33:39

标签: ffmpeg

我正在尝试使用-ss的时间-toHH: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之后,我只能使用慢速搜索-i00:01:00


1。快速

无效

这比时间快了一分钟。

使用00:03:00搜索从fasterffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4 进行剪切。

00:01:00

2。慢

工程

我正在尝试快速搜索。

使用00:02:00搜索从slowerffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4 进行剪切。

-copyts

3。快速

工作正常(有问题)

00:01:00破坏了播放器中的视频时间条。

使用00:02:00搜索从fasterffmpeg -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 });
}

1 个答案:

答案 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