В чем разница между этими 2 видео? - PullRequest
0 голосов
/ 07 октября 2018

Я использую fluent-ffmpeg , чтобы изменить размер видео.

Хотя я не могу понять, что происходит.У меня есть 2 видео файла, один работает, а другой нет.Я просматривал mediainfo выходы обоих файлов, проверяя наличие расхождений, но кроме filesize, duration и т. Д. Разницы нет (то же самое codec, format, width / height,frame rate и т. Д.)

Вот ссылка на оба файла.

Я читал эти видеофайлы в 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 ]

0 голосов
/ 08 октября 2018

Я просматривал выходные данные mediainfo обоих файлов, проверял наличие расхождений, но кроме размера файла, продолжительности и т. Д. Разницы нет

Да, но только в полном режиме.попробуйте mediainfo -f для файлов, вы увидите:

IsStreamable                             : Yes

для рабочего файла и

IsStreamable                             : No

для нерабочего файла.

a«Нет» здесь означает, что ввод должен поддерживать поиск (заголовок находится в конце, игрок должен искать конец для синтаксического анализа заголовка, а затем вернуться к началу для анализа данных).

0 голосов
/ 07 октября 2018

Кажется, что у ffmpeg есть проблема с поиском файла, когда вы передаете его как поток.Но это работает, если вы передаете его в виде файла.Возможно, зондирование / демультиплексор может использовать поиск и т. Д. Я пытался увеличить буфер зонда, но он не работал.

Это не работает:

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

Но этоработы:

ffmpeg -i doesnt_work.mp4 test.mp4
...