DarkK
Понедельник, 16 Августа 2004, 21:33
После извратной переделки .wmv в .avi получился авишник, в котором в два раза больше кадров, чем в оригинале и каждый второй кадр обозначается в дубе, как [D] и повторяет предыдущий. Если подряд идут несколько keyframes, то dropped frames между ними нет. Пробовал делать decimate by 2, не помогает, дуб выкидывает каждый второй нормальный кадр и идущий за ним [D]-кадр.
Сразу в морг или можно побороть?
Yanch
Понедельник, 16 Августа 2004, 22:31
Я пытался с таким бороться, но решения не нашел. ИМХО, в морг.
starsoft
Понедельник, 16 Августа 2004, 22:46
dropped? Думаю с терминологией ошибочка - судя по описанию не dropped, а duplicated или что-то в этом духе. Судя по реакции на decimate физически этих фреймов не существует, скорее всего они только в индексе. Может быть стОит переделать индекс. Это мои догадки, наверняка не знаю - не сталкивался.
Закинь куда-нить кусочек авишки такой - интересно посмотреть.
DarkK
Понедельник, 16 Августа 2004, 23:13
В доках дуба написано, что dropped.
QUOTE |
[K] at the end -- this is the current frame type. K indicates a keyframe; nothing indicates a delta frame; [D] indicates a dropped frame |
DarkK
Среда, 18 Августа 2004, 2:11
starsoft
Среда, 18 Августа 2004, 11:20
Если исходник потом пережимать, то AVS c Decimate(cycle=2) справился с задачей без проблем. Но он убрал каждый второй кадр без разбора, то есть если шло несколько кей-фреймов подряд и не было [D], то убрал всё равно.
Надо как-то умудрится написать Sylia-скрипт для ДУБа, который бы в цикле выкидывал все [D]-фреймы и потом пресохранял файл. Вот только не знаю как в скрипте определять тип фрейма, кажется интерфейс не предусматривает такой функции. Надо читать полную документацию...
Quazar
Среда, 18 Августа 2004, 15:16
Физически этих D-frames (dropped, duplicated, dummy - название неважно) не существует, нулевой размер. Фактически плейер проигрывает на 11.988 fps. Decimate удаляет реальные кадры, зачем удалять dummy, которые и так не занимают места. Чтобы определить вид кадра (K,B,D) поток нужно декодировать, так что без перекодировки корректно исправить индекс врядли удастся.
starsoft
Среда, 18 Августа 2004, 17:14
QUOTE (Quazar @ там) |
Decimate удаляет реальные кадры |
Откуда Decimate знает какой кадр реальный, а какой [D]? После открытия исходника AviSynth-ом не существует различия на типы фреймов, нет ни ключевых ни дроп ни каких-то других - есть поток последовательных фреймов (причем откуда они декодируются физически - из своего исходного фрейма или из предыдущего - не важно), из которых выкидывается каждый N-ный в соответствии с параметром.
Quazar
Среда, 18 Августа 2004, 18:23
QUOTE |
Откуда Decimate знает какой кадр реальный |
Дубовский Decimate имеет некоторые отличия от decomba, с которым в AviSynth работает функция Decimate. Но чтобы использовать AviSynth поток нужно декодировать и тогда уже действительно всё равно, откуда взялся фрейм. Я так понял, что речь шла о возможности удаления D-frames без перекодировки.
starsoft
Среда, 18 Августа 2004, 20:28
А дубовский Decimate - это фильтр? Если да, то отличия от AviSynth-а никакого в плане перекомпресии - фильтры не работают ни в Direct Stream Copy ни даже в Fast или Normal Processing.
Quazar
Среда, 18 Августа 2004, 20:34
Получилось с помощью
Nandub.
Audio - No audio
Video - Direct stream copy
Video - Frame Rate - Change to - 47.952
Decimate by 2
Корректно удалились все D-frames из сэмпла.
Насчёт идущих подряд K-frames неизвестно, в сэмпле этого не было...
Когда-то сталкивался с похожим, когда о VirtualDubMod и слышно не было.
starsoft
Среда, 18 Августа 2004, 20:40
2 Quazar:
Спасибо, полезная инфа, никогда не обращал внимание на decimate в ДУБе.
Quazar
Среда, 18 Августа 2004, 20:55
Фильтры дуба работают в RGB24, а входящий поток в режиме Fast Recompress не обязательно в этом формате, поэтому вкладка фильтров отключена. Некоторые, не влияющие на обработку видео, можно воткнуть принудительно (например shutdown). Decimate (VD) же работает с входящим потоком независимо от его формата жёстко и по другому алгоритму, чем в AviSynth.
DarkK
Среда, 18 Августа 2004, 21:24
Спасибо. Фрейм-рейт увеличивать я пробовал, но вот decimate после этого сделать не догадался.
Только вот чего с кейфреймами, идущими подряд теперь делать? =\ Пойду пороюсь в доках по скриптингу.
DarkK
Среда, 18 Августа 2004, 21:27
А можно как-нить статистику по фреймам из файла сделать, чтоб найти места, где ки-фреймы идут подряд? Их можно было бы руками доделать...
kvappa
Среда, 18 Августа 2004, 21:54
Кстати, Дубы не всегда корректно меняют framerate - могут вылезти какие-нибудь стотысячные или миллионные в конечном результате. Лучше это дело потом проверять.
bred
Четверг, 19 Августа 2004, 14:21
Очень может быть что я ошибаюсь, это тока предположение.
dropped frame это такая гадость которая позволяет кодеру сбрасыват фреймы когда он считает нужным( битрейта не хватает, или изменения из кадра в кадр незначительны ), самое дурацкое, что почему-то в wmv это не заметно, а как только переводишь в avi начинает дергатся особенно на быстрых сценах. Такое впечатление что декодеры для avi и wmv обрабатывают dropped frame по разному. Для avi повторяет предыдущий фрейм, а wmv ... хрен его знает, что он там делает, но дерганья не видно. И как это лечить, не знаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please
click here.