Почему FFMPEG сообщает неправильную продолжительность? - PullRequest
5 голосов
/ 17 июня 2009

У меня есть старая версия FFmpeg, которую я не могу легко изменить.

Мы используем FFmpeg, чтобы найти продолжительность видео и звуковых файлов. Пока это работает чудесно.

Недавно в загруженном файле FFmpeg сообщил, что 30-секундный файл имеет продолжительность 5 минут 30 секунд.

Может быть, что-то не так с файлом, а не с FFmpeg?

Если я использую FFmpeg для преобразования в другой файл, продолжительность восстанавливается.

Если это имеет значение, ffmpeg -i 'path to the file' выдает:

    FFmpeg version Sherpya-r15618, Copyright (c) 2000-2008 Fabrice Bellard, et al.
      libavutil     49.11. 0 / 49.11. 0
      libavcodec    52. 0. 0 / 52. 0. 0
      libavformat   52.22. 1 / 52.22. 1
      libavdevice   52. 1. 0 / 52. 1. 0
      libswscale     0. 6. 1 /  0. 6. 1
      libpostproc   51. 2. 0 / 51. 2. 0
      built on Oct 14 2008 23:43:47, gcc: 4.2.5 20080919 (prerelease) [Sherpya]
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'H:\path\to\file.mov':
      Duration: 00:05:35.00, start: 0.000000, bitrate: 1223 kb/s
        Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, s16
        Stream #0.1(eng): Video: h264, yuv420p, 720x576, 25.00 tb(r)
    Must supply at least one output file

Именно эту команду я использую для извлечения продолжительности с помощью RegEx.

У кого-нибудь есть хорошее приложение, которое может делать то, что я пытаюсь описать выше, но делать это правильно в 100% случаев?

Ответы [ 4 ]

2 голосов
/ 17 июня 2009

Проверьте это с более новой версией ffmpeg (вам не нужно заменять свою сборку), и если она дает ту же продолжительность, вы можете возможно обвинить файл.

2 голосов
/ 17 июня 2009

Я предполагаю, что это проблема с файлом. Длина, вероятно, написана в заголовке неправильно. К сожалению, нет такой вещи, как валидатор (например, для веб-стандартов), поэтому вы не можете точно знать, является ли файл правильным.

2 голосов
/ 17 июня 2009

Вы можете попробовать tcprobe, часть transcode pack.

0 голосов
/ 07 июня 2018

Убедитесь, что вы определяете канал и частоту, известную для файла. Также убедитесь, что вы определяете формат с помощью -f. Отметьте ffmpeg -formats, чтобы просмотреть все доступные.

Используйте -ac для определения канала. Используйте -ar для определения скорости звука. Если он по умолчанию использует битрейт или частоту, то продолжительность будет отличаться от фактической.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...