Почему ffmpeg сообщает разную продолжительность?

Исходники видео: http://www.artworknotavailable.com/tmp/ffmpegtest

Quicktime Pro 7.7.1 Inspector (Win 7) сообщает следующее для файла 2398.mov

4,19 МБ
H.264
Кадр/с в видео: 23,98
Скорость передачи данных: 2,35 Мбит/с
Продолжительность 14:97

ffmpeg сообщает следующее (см. полную информацию о версии ffmpeg внизу поста)

ffmpeg -i 2398.mov

Кажется, частота кадров кодека потока 1 отличается от частоты кадров контейнера: 47952,00 (47952/ 1) -> >23,98 (2997/125)
Введите #0, mov,mp4,m4a,3gp,3g2,mj2, из '2398.mov':
Метаданные:
Major_brand: qt

minor_version: 537199360
совместимые_бренды: qt
Продолжительность: 00:00:15.97, начало: 0.-963005, битрейт: 2210 кбит/с
Поток #0.0(англ): Аудио: aac, 48000 Гц, стерео, s16, 152 кбит/с
Поток #0.1(eng): Видео: h264, yuv420p, 848x480, 2060 кбит/с, 23,98 кадр/с, 23,98 tbr, 23976 tbn, 47952 tbc

На одну секунду дольше, чем сообщает Quicktime.

В качестве эксперимента я экспортировал этот файл из Quicktime Pro, используя следующие настройки:

Частота кадров: Текущая
Ключевые кадры: каждые 24 кадра
Переупорядочивание кадров включено
Качество: Высокое
Лучшее кодирование
Скорость передачи данных: автоматическая
Оптимизировано для скачивания
Выходной файл: qtime-export-2398.mov

Quicktime Inspector сообщает:

5.62 МБ
H.264
Кадр/с в видео: 23,98
Скорость передачи данных: 3,15 Мбит/с
Продолжительность 14:97

Теперь ffmpeg сообщает:

ffmpeg -i qtime-export-2398.mov

Кажется, частота кадров кодека потока 1 отличается от частоты кадров контейнера: 1200,00 (1200/1) -> 23,98 (24000 /1001)
Введите # 0, mov, mp4, m4a, 3gp, 3g2, mj2, из 'qtime-export-2398.mov':
Метаданные:
major_brand : qt
минорная_версия : 537199360
совместимые_бренды: qt
Продолжительность: 00:00:14,96, начало: 0,000000, битрейт: 3153 кбит/с
Поток #0.0(eng): Аудио: pcm_s16le, 44100 Гц, 2 канала, s16, 1411 кбит/с
Поток #0.1(eng): Видео: h264, yuv420p, 678x384, 1738 кбит/с, 23,98 кадр/с, 23,98 tbr, 600 tbn, 1200 tbc

Отчет ffmpeg по продолжительности изменился с 15,97 до 14,96 (я могу жить с .1 )

Эта продолжительность рассчитывается из битрейта?

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

Информация о ffmpeg ниже. Я пробовал это на двух совершенно разных установках/версиях ffmpeg. Тот же результат.

FFmpeg версии 0.6.5, Copyright (c) 2000-2010 разработчики FFmpeg построен 29 января 2012 г. 23:55:02 с помощью gcc 4.1.2 20080704 (Red Hat 4.1.2-51) конфигурация: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra -cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore- amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable- x11захват либавутил 50.15. 1/50,15. 1 libavcodec 52.72. 2/52,72. 2 libavformat 52.64. 2/52,64. 2 libavdevice 52.2.0 / 52.2.0 libavфильтр 1.19. 0 / 1.19. 0 libswscale 0.11. 0 / 0,11. 0 libpostproc 51.2.0 / 51.2.0 FFmpeg 0.6.5 либавутил 50.15. 1/50,15. 1 libavcodec 52.72. 2/52,72. 2 libavformat 52.64. 2/52,64. 2 libavdevice 52.2.0 / 52.2.0 libavфильтр 1.19. 0 / 1.19. 0 libswscale 0.11. 0 / 0,11. 0 libpostproc 51.2.0 / 51.2.0

5
задан kenitech 17 May 2012 в 16:56
поделиться