Topic: YouTube и файлы с переменной частотой кадров (VFR)
Сохранил ролик из кэша браузера по ссылке http://www.youtube.com/watch?v=NZcsNE6wCHI
Выбрал разрешение 720p, получил файл размером 118 МБ.
Переименовал: The Witcher - Intro.mp4
Решил посмотреть его в плеере с повышением частоты кадров, т.е. с плавностью. Уплавнитель SVP.
И смотрю, что-то он дергается. Давай разбираться, отрубил SVP - ролик все-равно дергается.
Решил посмотреть статистику по mkv2vfr от Haali. Для этого перегнал дорожки из mp4 в mkv при помощи gdsmux.
Запускаю и получаю
# timecode format v1
Assume 23.976
0,11588,25.0000
И ошибку: "Frame duration is 0!"
Думаю, что-то здесь не так. Достаю статистику из исходного MP4-файла при помощи mp4dump.
Вижу жуткую картину:
type mdia
type mdhd
...
...
timeScale = 25000 (0x000061a8)
duration = 11591000 (0x00b0dd58)
type minf
...
type stbl
type stts
...
sampleCount = 11591 (0x00002d47)
sampleDelta = 1000 (0x000003e8)
...
type ctts
version = 0 (0x00)
flags = 0 (0x000000)
entryCount = 1509 (0x000005e5)
sampleCount = 3 (0x00000003)
sampleOffset = 1000 (0x000003e8)
sampleCount[1] = 1 (0x00000001)
sampleOffset[1] = 3000 (0x00000bb8)
sampleCount[2] = 2 (0x00000002)
sampleOffset[2] = 0 (0x00000000)
sampleCount[3] = 1 (0x00000001)
sampleOffset[3] = 3000 (0x00000bb8)
sampleCount[4] = 2 (0x00000002)
sampleOffset[4] = 0 (0x00000000)
sampleCount[5] = 1 (0x00000001)
sampleOffset[5] = 3000 (0x00000bb8)
sampleCount[6] = 2 (0x00000002)
sampleOffset[6] = 0 (0x00000000)
sampleCount[7] = 1 (0x00000001)
sampleOffset[7] = 3000 (0x00000bb8)
sampleCount[8] = 2 (0x00000002)
sampleOffset[8] = 0 (0x00000000)
sampleCount[9] = 1 (0x00000001)
sampleOffset[9] = 3000 (0x00000bb8)
sampleCount[10] = 2 (0x00000002)
sampleOffset[10] = 0 (0x00000000)
sampleCount[11] = 1 (0x00000001)
sampleOffset[11] = 3000 (0x00000bb8)
sampleCount[12] = 2 (0x00000002)
sampleOffset[12] = 0 (0x00000000)
sampleCount[13] = 1 (0x00000001)
sampleOffset[13] = 3000 (0x00000bb8)
...
Это означает, что показываем три кадра длительностью 1000. Это нормально. Выделено в отрывке статистики зеленым. А затем все сплошь неравномерно, дергано. Выделено красным: один кадр длительностью 3000, а затем 2 кадра пропускаем (sampleOffset=0). И так почти весь файл.
ffdShow так и показывает, переменная (скачущая) частота кадров, которая то 25 fps, то 25/3 = 8,3 fps и в добавок плавает туда-сюда. Картинка при этом смотрится просто отвратительно!
Что это и как с этим бороться?