这两个视频有什么区别?

时间:2018-10-07 14:55:53

标签: ffmpeg fluent-ffmpeg mediainfo

我正在使用fluent-ffmpeg调整视频大小。

虽然我不知道发生了什么。我有2个视频文件,一个有效,但另一个无效。我一直在搜寻两个文件的GET /hello输出,检查是否有差异,但除了mediainfofilesize等以外,没有区别(相同的duration,{{1} },codec / formatwidth等)

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

2 个答案:

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