Перейти к содержимому


!!! Только у нас на форуме !!!
Спектакли от дяди Пчёлки

для просмотра необходима регистрация
Фотография
- - - - -

Программа для изменения частоты кадров


  • Please log in to reply
27 ответов в этой теме

#1 DiSel

DiSel
  • Модераторы
  • 1 267 Сообщений:

Отправлено 24 май 2007 - 15:15

Идея написания программы вытекла из дискуссии о рассинхроне.
Аналогичные программы существуют давно, каждая хороша по-своему. Суть этой программы - замена информации в заголовке AVI-файла напрямую. Для тех, кому это что-то скажет: заменяются данные в позиция- 0x20h-0x21h, 0x80h-0x87h. Из этого вытекают следующие свойства:
1) не гарантируется полная поддержка всех существующих форматов (если информация хранится по другим адресам). Если считанные значения fps выглядят нереально - лучше закрыть программу;
2) не обновляется информация о чередовании потоков, из-за чего возникает рассинхронизации при воспроизведении в софтовых проигрывателях;
3) быстрое получение конечного результата - сколько вам потребуется времени, чтобы выбрать файл и нажать две кнопки?

Описание работы:
Файл можно выбрать, либо написать его путь в поле. Кнопка "Открыть" - считывается текущая информация о fps : промежуток между кадрами (поправлюсь, не в милли, а в микросекундах), делимое и делитель частоты кадров. Поясню последнее - совсем вылетело из головы, когда проделывал эксперимент. Частота кадров не всегда бывает целым числом, поэтому её значение приводится к рациональной дроби и записываются делимое и делитель. Понятно, что считав эти два больших числа и разделив одно на другое, получим реальное значение fps.
Вернусь к описанию. После считывания, выводится текущее значение интервала между кадрами, из него вычисляется fps (как 1000000/x) и записывается в скобках. Далее выводится значение fps, полученное из информации о видеопотоке.
Программа проверена второпях на частных случаях видеофайла с одним видеопотоком, поэтому не гарантирую, будет ли она работать с чем-то экзотическим, или нет.
Ещё существенный недофункционал: не хотелось связываться с приведением вещ.числа к дроби, поэтому считать можно какой угодно fps, а записать - только целые числа. Юзатели NTSC, простите меня.
Вобщем, вот тут:Прикрепленный файл  FrameRate.zip   216,26К   61 Количество загрузок:
  • 0

#2 Dick

Dick
  • Участник
  • 9 339 Сообщений:

Отправлено 24 май 2007 - 15:45

Некоторые ленятся ходить по ссылкам, поэтому процитирую себя, дорогого, по поводу сей проги.

"После этой проги посмотрел св-ва файла - стало 25.00 кадров\сек (вместо 25.01).... положил его на тайм-лайн АП6.5...
РАССИНХРОН ПРОПАЛ !
Для окончательной проверки с помощью СРС2 конвертировал этот файл в DVD-видео на всякий случай двумя способами:
1. с тайм-лайна АП6.5 и
2. напрямую через СРС2 (без АП6.5)
(видимо, СРС2 все равно откуда хватать исходник)
Результат: в обоих случаях рассинхрона на DVD-видео НЕТ !
Вывод: найден хороший инструмент правки рассинхрона.
  • 0

#3 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 27 ноя 2014 - 12:16

Уважаемый DiSel, не могли бы Вы сделать аналогичную программу для видео в формате MP4? Та же беда, что в дискуссии о рассинхроне, только у меня видео захватывается только в MP4, смена контейнера авидемуксом делает видео не читаемым, другие найденные программы для этого только ошибки выдают.


  • 0

#4 DiSel

DiSel
  • Модераторы
  • 1 267 Сообщений:

Отправлено 27 ноя 2014 - 16:17

Сначала ответил в личку, а потом увидел публичный вопрос.

Увы, не смогу. Давненько я не брал в руки шашек, да и руки постоянно заняты чем-то другим, так что программировать под win для меня очень нерентабельно. Можно попробовать обратиться на фриланс с описанием задачи, там наверняка найдутся люди, имеющие опыт работы с видео, да и навыки программирования под современные платформы у них наверняка побольше, чем у меня за последние 7 лет.


  • 0

#5 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 27 ноя 2014 - 17:41

Ок, спасибо, уже ищу.


  • 0

#6 Зос

Зос
  • Модераторы
  • 4 090 Сообщений:

Отправлено 27 ноя 2014 - 17:46

Спасибо! У меня вечная проблема со сгоном VHS. После 40 минут звук заметно убегает. В Премьере ставлю скорость звука 99,99%, тогда нормально. Сейчас открыл такой файл твоей программулиной - получилось 25,0199к/с. Исправил. Заново открыл его же -ровно 25!  Файлик правда короткий, 20 мин. Проверить пропал ли рассинхрон  не могу. Но думаю на больших будет нормально. Еще раз спасибо!!! :2vvko:


  • 0

#7 Dick

Dick
  • Участник
  • 9 339 Сообщений:

Отправлено 27 ноя 2014 - 19:00

После 40 минут звук заметно убегает. 

 

У кого как. У меня при захвате S-VHS платой АверМедиа рассинхрон становился заметен после 1 часа. Поэтому иногда, чтобы не морочиться, использовал простой совет - кэпчурил по часу, потом клеил. Если у тебя порог 40 минут, попробуй хватать по 40.


  • 0

#8 Зос

Зос
  • Модераторы
  • 4 090 Сообщений:

Отправлено 27 ноя 2014 - 19:21

А зачем? Спасибо Диме. И чего я раньше не видел эту тему...


  • 0

#9 Dick

Dick
  • Участник
  • 9 339 Сообщений:

Отправлено 27 ноя 2014 - 20:09

Уважаемый DiSel, не могли бы Вы сделать аналогичную программу для видео в формате MP4?

 

Увы, не смогу. Давненько я не брал в руки шашек

 

Думал, у тебя такая же проблема с MP4, как и у Mask, для кот. нет программки.

Там, в его случае,  можно пробовать кэпчурить более короткими кусками (предположим, по часу), где не заметен рассинхрон, потом клеить.

 

Тогда этот совет Mask`y


  • 0

#10 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 05 дек 2014 - 15:32

Заглянул на один форум с фрилансерами по поводу заказа аналогичной проги для MP4- ууу, барыги, за полста тыщ говорят сделаем, надо спецификации изучать. Я говорю- чё я должен платить за ваше обучение чтоб вы мне потом разовую работку сделали? Да- говорят, ууу, барыги. Фигли, говорят, с твоими копейками связываться, когда можно нормальные бабки на курсачах по программированию для бестолковых студентов и на серьёзных прогах для предприятий делать. Забил. Нарезаю SolveigMM Splitter(ом) на кусочки по 5 минут и потом в премьер их, рассинхрон в таком случае не заметен. На 10 минутных кусках уже заметен- до 5-6 кадров доходит рассинхрон, плавает частота- почти во всех кусках получается разная в пределах 0,06 фпс, потому рассинхрон неравномерный. При том, что захватываю с частотой 60 в настройках, походу там на самом деле 59.94, т. к. в свойствах больше 59,94 ни на одном куске не показывает.


Сообщение отредактировано CoolMask: 05 дек 2014 - 15:56

  • 0

#11 nixa

nixa
  • Участник
  • 4 374 Сообщений:

Отправлено 05 дек 2014 - 18:57

CoolMask, бы не мог бы описать проблему, на каком этапе у тебя происходит рассинхрон

может проще не допускать рассинхрона, чем потом бороться с ним.


Сообщение отредактировано nixa: 05 дек 2014 - 19:37

  • 0

#12 Dick

Dick
  • Участник
  • 9 339 Сообщений:

Отправлено 05 дек 2014 - 19:28

--


Сообщение отредактировано Dick: 05 дек 2014 - 20:18

  • 0

#13 ILNIZ

ILNIZ
  • Участник
  • 519 Сообщений:

Отправлено 05 дек 2014 - 23:11

У меня была проблема с рассинхроном DV. Видео 3 часа LP DV через видеокамеру захватывал в монтажке EDIUS, как потом оказалось с кодеком от Canopusa, а монтировал Premier ом (6.5!) где используется кодек Microsoft DV. Убегало в конце и избавлялся нарезками и подгоном. После того случая, а произошло это 10 лет назад, придерживаюсь правила: захват видео в программе монтажа. Сейчас другие камеры и захват не нужен, но остались форматы файлов и кодеки. По моему, если заниматься видео всерьез, надо обнаружить причину этого рассинхрона, желательно как можно раньше, по моему несколько проб и проблема разрешится.

(!) для Dick а интересно заметит или нет..., но это была и моя любимая монтажка...


  • 0

#14 Dick

Dick
  • Участник
  • 9 339 Сообщений:

Отправлено 06 дек 2014 - 00:52

Дык, у очень многих наших АР6.5  был любимый. Я её еще для организации покупал по безналу за 1000$, а тогда это большие деньги были.

А начинал чуть ли не ... с пятерки (не помню уже)

 

А я думал, что все монтажки по IEE1394 хватают одинаково. (LP не LP д.б. без разницы, по-идее). 

В старых операционках всегда была встроенная монтажка МувиМейкер - ею можно было кэпчурить по IEE и без сторонних монтажек.

Почему у Эдика были проблемы с рассинхроном не совсем понятно.

 

У меня-то рассинхрон был при оцифровке S-VHS кассет, потому что там видео и аудио в недорогой плате захвата АверМедиа идут разными путями-проводами (может еще и потому, что плата любительского уровня, хотя хватала нормально по качеству, на четвёрочку)

Может были дорогие платы захвата аналога (типа ПРО) без рассинхрона, не знаю. 


Сообщение отредактировано Dick: 06 дек 2014 - 00:53

  • 0

#15 ILNIZ

ILNIZ
  • Участник
  • 519 Сообщений:

Отправлено 06 дек 2014 - 01:10

Даже если капчуришь АверМедией, но кодеком понятным, то проблем не должно быть. Именно нужно разобраться почему рассинхрон? Чтобы больше проблема не повторялось. Каждый раз править? Программу коррекции запустить? Зачем?

Определиться с видео аудио. Характеристики. MP4 в чём хватаем, смена контейнера авидемуксом делает видео не читаемым, может просто не хватает кодеков в системе. 


  • 0

#16 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 08 дек 2014 - 21:45

Дык, у очень многих наших АР6.5  был любимый. Я её еще для организации покупал по безналу за 1000$, а тогда это большие деньги были.

А начинал чуть ли не ... с пятерки (не помню уже)

 

А я думал, что все монтажки по IEE1394 хватают одинаково. (LP не LP д.б. без разницы, по-идее). 

В старых операционках всегда была встроенная монтажка МувиМейкер - ею можно было кэпчурить по IEE и без сторонних монтажек.

Почему у Эдика были проблемы с рассинхроном не совсем понятно.

 

У меня-то рассинхрон был при оцифровке S-VHS кассет, потому что там видео и аудио в недорогой плате захвата АверМедиа идут разными путями-проводами (может еще и потому, что плата любительского уровня, хотя хватала нормально по качеству, на четвёрочку)

Может были дорогие платы захвата аналога (типа ПРО) без рассинхрона, не знаю. 

Я с VHS Behold(ом) H6 хватал, собственную свадьбу оцифровывал, кстати, как оказалось,  неплохо сохранилась запись, 12 лет лежала. Хватал каким-то лосслес кодеком, не помню уже каким, AVI файл огромный получился- 3часа- 200 гигов, но с заделом на обработку и монтаж, с полями (полукадрами), в общем всё отлично и без рассинхрона (в т. ч. если в премьер кидать). С помощью премьера и энкора забацал неплохой DVD фильм.


CoolMask, бы не мог бы описать проблему, на каком этапе у тебя происходит рассинхрон

может проще не допускать рассинхрона, чем потом бороться с ним.

Проблема скорее всего железячная. Ну, я, как бы летсплеер. Хватаю игровое видео видеокартой GTX 670 Jetstream с помощью нвидиевской проги Shadowplay, есть под это дело в современных видюхах нвидии аппаратный кодер H.264 и вышеназванный софт в комплекте с дровами. Единственный способ захвата, который у меня при записи не сажает фпс в играх, почти совсем не сажает- всего на 1-2%, есть лицензии на пару других популярных прог для этого, но не пользуюсь- просадки фпс критичные, так что даже не предлагайте перейти на другой известный софт- всё перепробовал. Захват идёт в MP4 (H.264). Всё гуд, в захваченном видео, при воспроизведении в любых плеерах на винде, рассинхрона нет, кладу на таймлайн в премьере- рассинхрон, после экспорта рассинхрон, естественно,  закрепляется в конечном продукте. Остальное я уже описал.


Даже если капчуришь АверМедией, но кодеком понятным, то проблем не должно быть. Именно нужно разобраться почему рассинхрон? Чтобы больше проблема не повторялось. Каждый раз править? Программу коррекции запустить? Зачем?

Определиться с видео аудио. Характеристики. MP4 в чём хватаем, смена контейнера авидемуксом делает видео не читаемым, может просто не хватает кодеков в системе. 

Кодеков достаточно для любого случая, предполагаю что это из-за неполной совместимости AVI с H.264.

 

Открыл файл в медиаинфо, и вот что смутило: Режим частоты кадров                     : Переменный

Не в этом ли проблема? Но если в этом, то исправить не получится, да и в любом случае не получится, параметры захвата в Shadowplay не настраиваются, есть только выбор битрейта до 50 mbps с шагом в 10, и две частоты кадров-30 и 60 fps.

Если только кто нибудь не сможет влезть в код и модифицировать его.


Сообщение отредактировано CoolMask: 08 дек 2014 - 22:07

  • 0

#17 nixa

nixa
  • Участник
  • 4 374 Сообщений:

Отправлено 09 дек 2014 - 02:38

Хватаю игровое видео

 

к сожалению, здесь я - пасс

никогда не имел дел с "игрушками"


  • 0

#18 DiSel

DiSel
  • Модераторы
  • 1 267 Сообщений:

Отправлено 09 дек 2014 - 10:13

вот что смутило: Режим частоты кадров                     : Переменный

Не в этом ли проблема? 

С самого начала было такое подозрение. Для h264 это нормальное явление, и проигрыватели с этим умеют справляться. 

Premiere какой версии? Можешь выложить видео в исходном виде, с указанием, где ждать рассинхрон?


  • 0

#19 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 09 дек 2014 - 15:09

С самого начала было такое подозрение. Для h264 это нормальное явление, и проигрыватели с этим умеют справляться. 

Premiere какой версии? Можешь выложить видео в исходном виде, с указанием, где ждать рассинхрон?

Premiere Pro CC 2014, когда пользовался CS6 тоже замечал рассинхрон, но он был незначительный, когда я им пользовался, ютуб не поддерживал воспроизведение с 60 fps, и я захватывал в 30 fps, а с такой частотой рассинхрон почему-то почти не заметен, и я над этим не заморачивался. В исходном виде... вечером залью кусок на яндекс диск, весит дофига, Full HD 60 fps с 30-40 mbps всё таки. Вот политика адоба в этом плане не понятна, вроде премьер серьёзный продукт, а получается что не учитывает переменную частоту кадров исходника.


Сообщение отредактировано CoolMask: 09 дек 2014 - 15:16

  • 0

#20 jurisviii

jurisviii
  • Участник
  • 1 898 Сообщений:

Отправлено 09 дек 2014 - 15:27

Переменная частоста кадров принципиально недопустима для любого монтажа. Соответствужщий аналог в монтажных программах - Dropped frames.


Сообщение отредактировано jurisviii: 09 дек 2014 - 15:29

  • 0

#21 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 09 дек 2014 - 15:46

Переменная частоста кадров принципиально недопустима для любого монтажа. Соответствужщий аналог в монтажных программах - Dropped frames.

Слышал, но не задумывался почему. Ещё слышал, что в сони вегас не возникает рассинхрон по этой причине. Проблема распространённая, и некоторые на него перешли с премьера только поэтому, но я не хочу.


Сообщение отредактировано CoolMask: 09 дек 2014 - 15:48

  • 0

#22 jurisviii

jurisviii
  • Участник
  • 1 898 Сообщений:

Отправлено 09 дек 2014 - 16:46

Нет, вегас не панацея. В некоторых случаях может появится преимущества одной или другой программы, но переменный битрейт создан для кавитаймовского плейера и не для монтажа.


  • 0

#23 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 09 дек 2014 - 19:21

В общем я понял что Premiere Pro направлена прежде всего на профессиональных потребителей с профессиональным оборудованием и устаревшими стандартами, и пока не собирается что-то менять в этом плане, по крайней мере в отношении переменной частоты кадров. Будем надеяться что под натиском требований общественности что-то сдвинется http://forums.adobe....rt=120&tstart=0 Кстати, там пишут что афтер нормально работает с переменной частотой кадров и предложен вариант сделать проект в афтере, импортировать его в премьер и потом уже работать. Надо попробовать.


Сообщение отредактировано CoolMask: 09 дек 2014 - 19:24

  • 0

#24 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 09 дек 2014 - 23:02

Можешь выложить видео в исходном виде, с указанием, где ждать рассинхрон?

http://yadi.sk/i/a3wgaUscdGK4j Вот кусок исходника, отрезал прогой SolveigMM Video Splitter без пережатия. При просмотре в wmp на отметке 25 минут 24 секунды звук и изображение синхронны. В премьере в этом моменте звук опережает видео на 44 кадра- звук на 91089 кадре, а соответствующая ему картинка появляется на 91133 кадре.


  • 0

#25 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 06 фев 2015 - 12:48

   Теперь пользуюсь ffmpeg для преобразования переменного фреймрейта в mp4 h.264 в постоянный, на выход задаю те же параметры что и в исходнике, только ставлю нужный постоянный фреймрейт. Потерь в качестве на глаз не заметно даже после последующей обработки в премьере и заливки на ютуб. То есть- что сразу обработать исходник в премьере и залить на ютуб, что предварительно в ffmpeg перекодировать потом в премьер потом на ютуб- в итоге качество картинки на глаз не отличается. А рассинхронов как не бывало.

   Вот интересно, ffmpeg каким образом переводит переменный фреймрейт в постоянный. Моё предположение- если таймстамп кадра длиннее заданного, то вместо этого кадра добавляются его дубликаты в необходимом количестве с заданным таймстампом, и удаляются лишние кадры (допустим через один) если таймстампы рядом расположенных кадров короче заданных, а у оставленных кадров таймстампы увеличиваются до заданных. То есть- где фреймрейт выше заданного- кадры выкидываются, где ниже-дублируются, и всё это приводится к единому таймстампу (времени отображения кадра) с сохранением продолжительности воспроизведения как у исходника.

   И если это так, то возник вопрос- возможно ли создать программу, которой в mp4 h.264 можно проделать эти операции без затрагивания битрейта, то есть фактически без перекодировки в общепринятом значении этого слова, чтобы эта прога проделывала только операции, описанные в предыдущем абзаце? А то в ffmpeg всё равно надо указывать битрейт для выходного видео, а значит он перерабатывает и визуальную информацию каждого кадра, и даже если визуально изменение качества не заметно, оно всё равно падает. Ну и время на перекодировку уходит. Или может можно задать такие параметры для ffmpeg, при которых он будет выполнять только операции, описанные в предыдущем абзаце? Или может есть другие программы, умеющие именно это?

  Кто шарит в этих вопросах, тот наверное понял меня). Яснее и проще сформулировать не могу).


Сообщение отредактировано CoolMask: 06 фев 2015 - 13:46

  • 0

#26 DiSel

DiSel
  • Модераторы
  • 1 267 Сообщений:

Отправлено 08 фев 2015 - 23:14

Моё предположение- ...где фреймрейт выше заданного- кадры выкидываются, где ниже-дублируются.

Вполне разумный вариант.

И если это так, то возник вопрос- возможно ли создать программу, которой в mp4 h.264 можно проделать эти операции без затрагивания битрейта, то есть фактически без перекодировки в общепринятом значении этого слова, чтобы эта прога проделывала только операции, описанные в предыдущем абзаце? ... Или может можно задать такие параметры для ffmpeg, при которых он будет выполнять только операции, описанные в предыдущем абзаце? Или может есть другие программы, умеющие именно это?

Вот в этом сомневаюсь. Изменить только информацию о частоте кадров - это ещё возможно. Для последовательности кадров, по большому счёту, привязка ко времени не важна. Потому и существует плавающая частота кадров. Но в любом алгоритме межкадрового сжатия нельзя просто так взять и выкинуть кадр из последовательности, чтобы не потерять информацию. Ладно, если это последний кадр перед ключевым в MPEG2 или в прежнем DivX. В нынешнем h264 стандарт позволяет ссылаться на любой кадр вообще. Что, если на кадр, который ты выкидываешь, является опорным для какого-то другого кадра? Эту информацию придётся изменить, т.е. перекодировать. А чтобы добавить кадр - надо закодировать новый (пусть и с нулевыми изменениями относительно предыдущего), а для всех последующих кадров учесть увеличение номеров кадров. Да, с точки зрения уменьшения ресурсоёмкости, гораздо дешевле будет перекодировать только изменившиеся участки видео. А с точки зрения разработчика многофункционального софта - дешевле перекодировать всё видео целиком, чем мучиться с этим винегретом ради сомнительных редкоиспользуемых функций.


  • 0

#27 CoolMask

CoolMask
  • Участник
  • 13 Сообщений:

Отправлено 10 фев 2015 - 12:55

Мда, чем дальше, тем понятнее что h.264 разрабатывался только для конечного сжатия. Трудности его обработки никого не волновали. Ну и для какого чёрта напихали его аппаратные кодеры во всевозможные устройства захвата, при чём в некоторых из них это едиственно возможный выходной формат. Всем спасибо.


Сообщение отредактировано CoolMask: 10 фев 2015 - 13:03

  • 0

#28 DiSel

DiSel
  • Модераторы
  • 1 267 Сообщений:

Отправлено 10 фев 2015 - 22:15

h.264 разрабатывался только для конечного сжатия. ... напихали его аппаратные кодеры во всевозможные устройства захвата

Сравни поток, который нужен для h264 и для несжатой картинки. Увеличить полосу пропускания в аппарате порой стоит очень дорого. Аппаратная реализация - разгрузка ЦП для других нужд. Так что цели производителей вполне понятные, и забота об экономии ~1% конечных пользователей, которым потребуется сэкономить на перекодировании, в их список задач не входит. Обычная маркетинговая дилема - экономия копейки в своём кармане приводит к затратам многих рублей в другом кармане.


  • 0




0 человек читают эту тему

0 пользователей, 0 гостей, 0 скрытых пользователей

Rambler's Top100