代码之家  ›  专栏  ›  技术社区  ›  mic

这两个视频有什么区别?

  •  1
  • mic  · 技术社区  · 6 年前

    我正在使用 fluent-ffmpeg

    我不知道发生了什么。我有两个视频文件,一个工作,但其他没有。我一直在搜索 mediainfo 两个文件的输出,检查差异,但 filesize duration codec , format width height , frame rate

    Here's

    我一直在使用输入流将这些视频文件读入fluent ffmpeg,如下所示:

    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();
    });
    

    工作文件打印:

    started
    ... frames: 86
    ... frames: 107
    Finished processing
    

    但非工作文件似乎没有任何帧和打印:

    started
    ... frames: 0
    Finished processing
    

    你知道怎么回事吗?

    正在执行的ffmpeg命令:

    ffmpeg -i pipe:0 -y -filter:v scale=w=426:h=240 uploads/works.mp4
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   Jérôme Martinez    6 年前

    我已经搜索了这两个文件的mediainfo输出,检查是否有差异,但除了文件大小、持续时间等,没有区别

    是的,但只在全模式下。尝试 mediainfo -f 在文件上,您将看到:

    IsStreamable                             : Yes
    

    对于工作文件,以及

    IsStreamable                             : No
    

    对于非工作文件。

        2
  •  1
  •   Mattias Wadman    6 年前

    当您将文件作为流传递时,ffmpeg似乎无法探测到它。但如果你把它作为文件传递,它确实有效。可能是因为探测/解复用器可以选择使用搜索等。我试图增加探测缓冲区,但没有让它工作。

    这不起作用:

    cat doesnt_work.mp4 | ffmpeg -i pipe:0 test.mp4
    

    但这是可行的:

    ffmpeg -i doesnt_work.mp4 test.mp4
    
    推荐文章