我正在使用fluent-ffmpeg调整视频大小。
虽然我不知道发生了什么。我有2个视频文件,一个有效,但另一个无效。我一直在搜寻两个文件的GET /hello
输出,检查是否有差异,但除了mediainfo
,filesize
等以外,没有区别(相同的duration
,{{1} },codec
/ format
,width
等)
Here's到两个文件的链接。
我一直在使用输入流将这些视频文件读入fluent-ffmpeg,
height
工作文件打印:
frame rate
但是无效文件似乎没有任何框架,并且可以打印:
await new Promise((resolve, reject) => {
ffmpeg(file.stream)
.output(path)
.size('426x240')
.on('start', function() {
console.log('started');
})
.on('error', function(err) {
console.log('An error occurred: ' + err.message);
})
.on('progress', function(progress) {
console.log('... frames: ' + progress.frames);
})
.on('end', function() {
console.log('Finished processing');
resolve();
})
.run();
});
有什么主意吗?
正在执行的ffmpeg命令:
started
... frames: 86
... frames: 107
Finished processing
答案 0 :(得分:3)
我一直在搜索两个文件的mediainfo输出,检查是否有差异,但除了文件大小,持续时间等以外,没有区别
可以,但是仅在完全模式下。在文件上尝试mediainfo -f
,您会看到:
IsStreamable : Yes
用于工作文件,
IsStreamable : No
用于非工作文件。
这里的“否”表示输入需要支持搜索(报头位于末尾,播放器需要搜索末尾以解析标头,然后搜索回到起点以解析数据)。
答案 1 :(得分:1)
当您将文件作为流传递时,ffmpeg似乎在探查文件时遇到问题。但是,如果您将其作为文件传递,它确实可以工作。可能是因为探测/多路分解器可以选择使用seeks等。我试图增加探测缓冲区,但没有使其正常工作。
这不起作用:
cat doesnt_work.mp4 | ffmpeg -i pipe:0 test.mp4
但这可行:
ffmpeg -i doesnt_work.mp4 test.mp4