Ru-Board.club
← Вернуться в раздел «Программы»

» VirtualDub (часть 4)

Автор: asbo
Дата сообщения: 07.07.2011 23:22
Alatena, +1. Интересно, какие практические решения порекомендуют.

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

Теоретически предполагаю, что дорогу надо демуксить, видео сконвертить до возможности стыковки с другим фрагментом. Дорогу ужать по времени (не помню чем - у какой-то проги отмечалась возможность без искажения тембра), сжать до формата, совместимого со второй. Потом собрать все вместе...
Автор: Engaged Clown
Дата сообщения: 07.07.2011 23:24
Alatena
Попробуйте эту софтину http://forum.ru-board.com/topic.cgi?forum=35&topic=23626
Автор: Alatena
Дата сообщения: 08.07.2011 00:10
Engaged Clown
Aone Ultra Video Joiner вновь пережимает видео. Да ещё с вот такими артефактами: .
Я уже попробовала вырезать первую часть из получившегося видео и снова скормить Vd. Ага, щаз. Теперь 29.97003 vs. 29.97000. Это просто лотерея какая-то.

asbo
Теоретически-то да. Но на практике надо всего-то минутку в начале добавить. И ради этой вспомогательной минутки пережимать основное видео не хочется.
Подозреваю, что для точности надо кол-во кадров как-то сделать кратным 29.97000. Но как?



Добавлено:
если брать фреймов 436-439, выходит 28.99980
если брать фреймов 440, выходит уже 29.96973
Автор: Aktaf
Дата сообщения: 08.07.2011 01:09
Alatena

Цитата:
При добавлении второй части выдается: "Cannot append segment "N:\": The video streams have different sampling rates (29.96973 vs. 29.97000)".

Склеила с помощью Easy Video Joiner, но на втором видео на несколько ms сместилась дорожка, и все переходы съехали. Так что, видимо, надо возвращаться к Vd.
Что делать?
Первую часть можно менять как душе угодно. М.б., нужно изменить кол-во фреймов?

В Вашем вопросе и содержится ответ. Нужно просто первую небольшую часть пережать с 29.97000
И все будет нормально. Именно с пятым разрядом после запятой!
Автор: asbo
Дата сообщения: 08.07.2011 01:18
Alatena
Конечно, №2 трогать не надо. Все манипуляции только с №1. Я, может, сейчас бред скажу, но не может ли быть дело в том, что №1 очень короткий. А если накопировать их штук 10, склеить и пережать уже длинную колбасу, выставив требуемый fps, а потом отрезать от нее кусочек?

Добавлено:
Aktaf

Цитата:
первую небольшую часть пережать с 29.97000 ... с пятым разрядом после запятой

Я понял так, что Alatena и пережимает с установленным fps 29.97000, а он, фактический, потом уплывает...
Автор: V0lt
Дата сообщения: 08.07.2011 05:48
Alatena

Цитата:
Проблема со склеиванием двух avi. Не совпадает fps.
N2 — музыкальное видео с подогнанной тютелька в тютельку дорожкой. fps=29.97000.
N1 — "титул", видео из картинки "ImageSource("image", end=440)", сжатое с такими же параметрами VirtualDub'ом.
При добавлении второй части выдается: "Cannot append segment "N:\": The video streams have different sampling rates (29.96973 vs. 29.97000)".

выложи, посмотрим.
Автор: Aktaf
Дата сообщения: 08.07.2011 11:21
asbo

Цитата:
Я понял так, что Alatena и пережимает с установленным fps 29.97000, а он, фактический, потом уплывает...

Нет, не так. Она не смогла склеить 2 куска в VD, потому склеивала другой программой.
Которая не ругается, не такая хорошая. Вот и в результате, естественно прога по первому куску и переделала и второй кусок. Не может же наверно с разными параметрами в одном видео клеить.
Вот и "уехал" второй большой кусок. И сам же пишет, что первый кусок можно переделывать, что тоже естественно.
Я сам уже тут наверно надоел, не раз писал, обычно сразу все куски перевожу в одинаковые, и чтобы в конце цифрики были так хх.хх000. Если пытаться подгонять иначе, то не получиться!
При том последняя цифра в проге исчезает, как будто только 4 разряда поддерживает.
Кто хочет может убедиться, в настройке поставьте в 5 ти разрядах, закройте и вновь зайдите...

И давно есть желание предложить здешнему сообществу:

Может соберём свои пожелание по улучшению VD (не конкретную версию, а как бы на совсем).
И могли бы наши АКСАКАЛ ы передать авторам программы. Было бы всем полезно.


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

Второе предложение:
Среди кнопок "управления" нужно ввести промежутки.

Поясняю (называю по своему - по функции, назначении):
Внизу программы кнопки стор, проигрывание 3 - ей даже не пользуюсь), прыжок в начало,
покадрово назад, покадрово вперёд, прыжок в конец, проигрывая назад, вперед и 2 отметки.
Обычно, чтобы найти точное место резки, щелкую назад или вперед, одновременно смотрю на кадры.
И естественно мышка потихоньку уходит с кнопки, а рядом (ладно бы только обратно покадрово), как назло прыжо вперёд или назад. Вот и приходиться начинать снова искать где это было и все повторять.
Можно бы спокойно ввести промежутки как между кнопками: 3 и 4 или между 2 и 3 ей сзади.
Там место достаточно.
Промежутки очень бы хотелось ввести между кнопками:
- первой и второй (проигрываешь и чтобы не упустить, быстро нужно остановить);
- четвертой и пятой, пятой и шестой, шестой и седьмой (самые важные - желательно побольше).
Ну и от полуслепых - можно бы кнопочки немного увеличить!

Можно и еще, но пока хватить, главное чтобы поддержали, особенно АКСАКАЛ ы.


Автор: Alatena
Дата сообщения: 08.07.2011 12:48
Спасибо всем за помощь, пока безрезультатно.
Да, я ставила frame rate в Vd(с нулями после точки), после отказа переходила на другие проги, и тогда уже съезжало аудио второго файла.

Цитата:
Я сам уже тут наверно надоел, не раз писал, обычно сразу все куски перевожу в одинаковые, и чтобы в конце цифрики были так хх.хх000. Если пытаться подгонять иначе, то не получиться!

Поставила уже в самом скрипте "fps=29.97000", выводится теперь такая ошибка:
Это уже вообще абсурд.
Может быть, дело в аудио? В первый файлик я добавляла кое-что.
В общем, если ничего не выйдет, вечером залью сами файлы, как предложил V0lt.


Автор: Unique_nickname
Дата сообщения: 08.07.2011 15:27
Alatena
тоже сталкивался с таким абсурдом когда-то. По-моему, в результате то ли плюнул и перепаковал один фрагмент из двух, то ли плюнул и вообще загнал в вегас.
Автор: Misha_hm
Дата сообщения: 08.07.2011 18:02
Alatena
тоже как-то хотел склеить "одинаковые" куски. Пробовал задавать fps через дробь, и в другой системе исчисление с помощью спец проги. После исчезновения ошибке про несовпадение частоты, появилось несовпадение в формате/кодере. В итоге:
Цитата:
плюнул

Автор: Engaged Clown
Дата сообщения: 08.07.2011 19:29
Alatena

Цитата:
Aone Ultra Video Joiner вновь пережимает видео. Да ещё с вот такими артефактами

Таки нет, я бы не стал советовать, если бы сам не пробовал(несколько раз уже склеивал видео даже с разным битрейтом и FPS, главное, чтобы разрешение было одинаковым.).
Вот что нужно было выбрать


Добавлено:
PS небольшой оффтоп: чем можно вшить субтитры в формате SRT без пережатия в контейнеры MP4 и AVI?
Автор: Alatena
Дата сообщения: 08.07.2011 20:16
Engaged Clown

Цитата:
Вот что нужно было выбрать
Так и было. Компрессия и не задавалась (склейка произошла мгновенно), а нехорошие следы остались как раз на начале нового файла. Видимо, мне просто не повезло.

У меня получилось склеить в Pal, с fps=25. Правда, для этого пришлось вновь экспортировать видео из программы и к ней перерисовать первую картинку (с другим соотношением сторон). Музыка снова чуть-чуть рассинхронизировалась, но я заменила interleaving с пофремового на посекундный, и всё наладилось.
Так что у меня для 29.97000 решения так и не нашлось. Даже когда брала оба файла без сжатия.


Добавлено:

Цитата:
PS небольшой оффтоп: чем можно вшить субтитры в формате SRT без пережатия в контейнеры MP4 и AVI?

В avi, помнится, и VirtualDub вшивает. Можно ещё AVIAddXSubs (я её не пробовала), AVI-Mux (но почему-то УМЕНЬШАЕТСЯ оригинальный файл, впрочем, у меня на ПК сабы воспроизводились корректно).
Автор: V0lt
Дата сообщения: 08.07.2011 20:28
Engaged Clown

Цитата:
чем можно вшить субтитры в формате SRT без пережатия

Что значит без пережатия? SRT - это текстовый файл.

Для mp4 есть свой формат субтитров ttxt. MP4Box кушает srt, но в каком виде он потом храниться внутри mp4, Я не в курсе.

Avi не поддерживает встроенных субтитров (что бы там не писали).
Автор: Engaged Clown
Дата сообщения: 08.07.2011 20:34
V0lt
Немного не так выразился, нужно просто чтобы субтитры показывались поверх видео.
Автор: V0lt
Дата сообщения: 08.07.2011 20:35
Alatena
Фалов не будет что-ли?

Добавлено:
Engaged Clown
Тогда внедряешь субтитры в mp4 и ищешь плеер, который умеет их показывать. Или делаешь имя как у видеофайла и кладешь рядом с avi (такое без проблем показывают все нормальные плееры).
Автор: Engaged Clown
Дата сообщения: 08.07.2011 20:49
V0lt
Мне не смотреть надо, а залить на видеохостинг и чтобы уже на нём было с сабами.
Больше интересует интеграция в Avi.
Sorry за
Автор: Unique_nickname
Дата сообщения: 08.07.2011 21:05
Engaged Clown

Цитата:
Немного не так выразился, нужно просто чтобы субтитры показывались поверх видео.

Как будто бывают субтитры под видео

Теоретически avi может содержать много чего, практически - все зависит от плееров. А плееры, насколько мне известно, текст внутри avi просто не ищут. Так же, как и 2й (3й ,4й) видеопотоки, которые (теоретически опять же) в avi можно затолкать.
Да и спецификации на синхронизацию текста и видеопотока в avi не существует, если ошибаюсь - поправьте. Можно сочинить частный плеер - но это вопрос другой.
Автор: Alatena
Дата сообщения: 08.07.2011 21:10
Engaged Clown
Так если хардсаб нужен, то это без проблем. VirtualDub легко вшивает.
V0lt

Цитата:
Фалов не будет что-ли?
Если времени не жалко — вот. Просто с fps в 25 кадров склеилось, я и успокоилась пока.
NTSC, конечно, был бы лучше (тем более, что скоро опять схожую задачу решать надо будет).

Во всяком случае, благодарна всем за помощь.

И кстати,
Цитата:
но не может ли быть дело в том, что №1 очень короткий. А если накопировать их штук 10, склеить и пережать уже длинную колбасу, выставив требуемый fps, а потом отрезать от нее кусочек?
Тоже не сработало.




Автор: Engaged Clown
Дата сообщения: 08.07.2011 21:16
Unique_nickname
Да не плеером, а чтобы был единый файл AVI, в котором уже были бы сабы(hardsub).

Добавлено:
Alatena

Цитата:
Так если хардсаб нужен, то это без проблем. VirtualDub легко вшивает.

Без пережатия?
Автор: V0lt
Дата сообщения: 08.07.2011 21:30
Engaged Clown

Цитата:
Без пережатия?

Определение хардсаба дать? Конечно же придется пережимать.
Автор: Unique_nickname
Дата сообщения: 08.07.2011 22:10
Engaged Clown
Цитата:
Да не плеером, а чтобы был единый файл AVI,

из разряда "ему про Фому, а он про Ерему"... читать до просветления.
Автор: V0lt
Дата сообщения: 08.07.2011 23:12
Alatena
Кое чего я бы сделал по другому, но покажу как работать с тем что есть.

1. Смотрим реальную длительность mp3 файла, она получилась 13s 583ms.
2. Сморим параметры второга ролика.
3. Открываем .avs с приветствием, добавляем mp3. Переходим к кадру 407 (0:00:13.580) и нажимаем кнопку "End".
4. Сохраняем кодеком Xvid. Примерные настройки берем из параметров ролика (там кроме матрицы MPEG почти все дефолтное). Самое главное чтобы FourCC был равен XVID.

Тут важный шаг 3. Если не укоротить видео, то звук будет короче примерно на 1 сек. и потом словим проблемы с синхронизацией.

Итак, имеем два ролика, которые не клеются.
5. Открываем первый файл и настраиваем
Video->Frame Rate...->Change frame rate to (fps): 29.97
другие опции в диалоге Frame Rate не трогаем.
6. Сохраняем в режиме Direct stream copy. Закрываем файл.
7. Со вторым файлом проделываем тоже самое.
8. Перезапускаем VirtualDub.
9. Открываем оба файла.
10. Сохраняем итоговый файл в режиме Direct stream copy.
Все.

Фишка тут в следующем. Нужно для каждого файла принудительно задать fps.

Теория: В AVI-файлах fps записан в виде дроби. Поэтому 29.97000 можно записать как 2997/1000 или же 1234567890/41193456. Обе дроби при округлении до пятого знака будут давать 29.97000, но сравнение идет без округления, отчего VD ругается.

PS: Кстати, при задании fps можно использовать дроби. Например так:
Change frame rate to (fps): 30000/1001

PPS: В диалоге открытия файлов есть опция "Automaticaly load linked segments". Новичкам ее лучше отключать и добавлять файлы вручную.
Автор: Alatena
Дата сообщения: 08.07.2011 23:33
V0lt
СПАСИБО БОЛЬШОЕ!!!

Цитата:
Поэтому 29.97000 можно записать как 2997/1000 или же 1234567890/41193456. Обе дроби при округлении до пятого знака будут давать 29.97000, но сравнение идет без округления, отчего VD ругается.

PS: Кстати, при задании fps можно использовать дроби. Например так:
Change frame rate to (fps): 30000/1001

Вот оно что! ИМХО, это в шапке должно быть. Такие вопросы мне встречались, но без ответов. Да и здесь, оказывается, заканчивалось тем, что
Цитата:
плюнул


Цитата:
Если не укоротить видео, то звук будет короче примерно на 1 сек
В процессе экспериментов тайминг то и дело менялся... Я лучше к дорожке тишину допишу, а то медленночитающие не успеют над латынью задуматься.

V0lt
А не подскажешь ещё, как убрать дрожание, которое проявляется, когда картинки движутся горизонтально? В программе списывали на тормоза, а дело оказалось не в этом.




Добавлено:

Цитата:
Кстати, при задании fps можно использовать дроби.

У меня в Vd не получилось.
Но наконец нашла решение. Всё просто как... ависинт:

Код: a=AVISource("video1.avi")
b=AVISource("video2.avi")
ConvertFPS (a, 29.97000)
ConvertFPS (b, 29.97000)
AlignedSplice(a,b)
Автор: Unique_nickname
Дата сообщения: 09.07.2011 05:06
Alatena

Цитата:
А не подскажешь ещё, как убрать дрожание, которое проявляется, когда картинки движутся горизонтально? В программе списывали на тормоза, а дело оказалось не в этом.  

Неправильный порядок полей. Некоторые кодеки позволяют выставить порядок (TFF - Top Field First), некоторые ставят первым нижнее полуполе, из-за чего на хардверных плеерах изображение начинает дергаться (при этом на компьютере видео играет, как правило, без проблем).

Еще одна причина - низкий битрейт (на нек-рых кодеках? встречал на h26x), но это уже неисправимо.
Автор: V0lt
Дата сообщения: 09.07.2011 06:24
Alatena

Цитата:
У меня в Vd не получилось.

Странно у меня VD 1.9.11 без проблем принимает fps в виде дробей.

Цитата:
Но наконец нашла решение. Всё просто как... ависинт:

Код: a=AVISource("video1.avi")
b=AVISource("video2.avi")
ConvertFPS (a, 29.97000)
ConvertFPS (b, 29.97000)
AlignedSplice(a,b)
И всё. Звук на месте.
Автор: chivilyov
Дата сообщения: 09.07.2011 15:42
Подскажите, кто знает, закономерность работы этой программы с таким параметром как задержка (delay) для avi-файлов? Я просто никак не могу её уловить, так как иногда после её проставления вручную, значение Delay в MediaInfo есть, а иногда его нет.
Спрашиваю, потому что мой дерьмовый медиаплеер этот Delay вообще не считывает и шпарит всё с рассинхроном...
Автор: webern
Дата сообщения: 09.07.2011 22:53
chivilyov
В целом Vdub работает с задержками правильно, во всяком случае при покадровом смешивании. Но, если я верно помню (т.к. давно не использую задержку и подгоняю аудио точно под видео), неточности могут возникать из-за того, как именно VDub сочетает связку preload+задержку. Я, кажется, замечал отклонения в 16ms и 32ms, но уже не помню подробности. Скажем, если нужно выставить задержку +16ms в сочетании с preload 500ms, а на выходе получается некий несинхрон, то в preload можно поставить 484ms. Ну и подбирать значения таким вот образом. Когда-то очень давно мне этот метод помогал.

Возможно, еще могут возникать проблемы с задержкой в файлах с очень большим кол-вом фреймов (фильмы длительностью от 02ч.30мин.), но не уверен.

В части задержек больше претензий как раз к MediaInfo, т.к. начиная с версии 0.7.34.0 она начала разнообразнейше врать по поводу задержки. Версия 0.7.33.0 - последняя, которая правильно определяет задержку, за исключением некоторых случаев: не всегда "видит" задержку в +-4-12ms, а от +-16ms "видит" более стабильно, однако очень большие задержки (ну скажем, от 10 сек.) может и не определить.

Вообще, если это приемлемо, то лучше всегда избавляться от задержек.
Автор: chivilyov
Дата сообщения: 10.07.2011 07:29
webern
в том то и дело, что когда в MediaInfo это значение Delay присутствует, то аудиопараметры остаются без изменений, а вот когда этой строчки в MediaInfo нет, то меняются аудиопараметры, а именно исчезает строчка Encoding settings, а в Writing library вместо LAME3.98r появляется LAME3.97. Это что означает? То что VDM ещё и частично кодирует аудиодорожку? Или добавляет "кусочек" своей для выравнивания результата и именно с него берётся информация в MediaInfo? Вот именно в этом случае мой медиаплеер её принимает на Ура, но вот закономерность этого "кодирования" я так и не понял...

А насчёт preload интересно, попробую...
Автор: webern
Дата сообщения: 10.07.2011 14:12
chivilyov

Цитата:
исчезает строчка Encoding settings, а в Writing library вместо LAME3.98r появляется LAME3.97. Это что означает? То что VDM ещё и частично кодирует аудиодорожку?

Ну не кодирует, конечно, а скорее редактирует стуктуру формата в рамках спецификации и заменяет теги по итогам.


Цитата:
Или добавляет "кусочек" своей для выравнивания результата и именно с него берётся информация в MediaInfo?

Не знаю как там в MP3, но в AC3 при создании задержки VDM вставляет в начало аудио-дорожки именно "кусочек" пустых фреймов. Другими словами, VDM вычисляет какое кол-во пустых аудио-фреймов определённой длительности (вероятно, каждый аудио-фрейм должен иметь длительность одного видео-фрейма, т.к. fps у дорожек одинаковый) нужно вставить в начало аудио-дорожки, чтобы получить указанную пользователем длительность в миллисекундах.

MediaInfo читает этот самый промежуток от начала файла до AC3-сигнатуры, и не всегда правильно.

Засада, возможно, в том, не всегда можно длительность задержки распределить на целое кол-во фреймов, поэтому на выходе получается что-то не то. Но, возможно, я написал бред, и вычисления производятся иначе.
Автор: chivilyov
Дата сообщения: 10.07.2011 15:47
Эх, видимо это так и останется для меня загадкой. А пока придётся обходится способом, которым я научился "обманывать" свой медиаплеер: сначала собрать со всеми задержками файл в mkvtoolnix (версия 2.2.0), а уже затем просто тупо пересобрать его в VDM. При не очень больших задержках в результате получается avi-файл, в котором никакого Delay в MediaInfo нет...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179

Предыдущая тема: Pcad и монитор


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.