Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46

Качественный вывод видео

12.05.2015, 21:30. Показов 3210. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну, типа сделал с помощью добрых людей этой конфы вывод нестандартного видео, приходящего по USB.
Для локальных целей годится, но всё-таки хочется узнать....
Как лучше отображать кадры, чтобы они были синхронизованы с монитором?
Иначе при быстрых движениях бывает видно, что часть кадра сменилась, а часть ещё нет.
Поясняю, что директшоу или что-то подобное у меня не используется, просто кадры отображаются по мере их поступления функцией BitBlt().
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2015, 21:30
Ответы с готовыми решениями:

как выбрать качественный ноутбук для работы с видео, фото?
нужен очень качественный ноутбук для работы с видео, фото. Чтобы служил как можно дольше. Что посоветуете???

Вывод видео в разделе каталога через код видео youtub
Здравствуйте! Существует каталога, в нем разделы, в разделах элементы. В описании раздела есть текстслева и картинки в правой колонке....

У меня выбивает ошибку при запуске видео: "вывод видео недоступен не найдена программа распаковки 'vids:div3'
программа "видео плеер" Кто знает подскажите, и если нужен код проги то я вышлю,

25
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2015, 08:38
Вызывай перерисовку чаще + накопи фреймы, если ничего не пришло прорисовывай по таймеру последний кадр
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
13.05.2015, 12:36
Это называется VSync (вертикальная синхронизаци). С помощью BitBlt стандартными способами её не достич, на сколько я знаю.
0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
13.05.2015, 13:03  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вызывай перерисовку чаще
Это ничего не даст, хоть 1000 раз в секунду выводить... В любом случае 25 раз в секунду картинка новая, и если смена произошла во время скана монитора, будет косячок.

Цитата Сообщение от castaway Посмотреть сообщение
С помощью BitBlt стандартными способами её не достичь
Но ведь как-то делают?
И вообще, мой вопрос шире:
можно ведь использовать директшоу, просто я не знаю как это сделать в моём случае.
Можно ли кормить фильтр Renderer прямо из моего приложения?
Или надо делать свой фильтр?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
13.05.2015, 13:54
Делают через DirectX, OpenGL и DShow. Как это делается через DShow я не знаю.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2015, 20:10
Цитата Сообщение от провинцыалекс Посмотреть сообщение
Это ничего не даст, хоть 1000 раз в секунду выводить... В любом случае 25 раз в секунду картинка новая, и если смена произошла во время скана монитора, будет косячок.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вызывай перерисовку чаще + накопи фреймы, если ничего не пришло прорисовывай по таймеру последний кадр
- прочти ещё раз и вдумайся в написанное
0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
13.05.2015, 20:25  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
прочти ещё раз и вдумайся в написанное
Задача решается ТОЛЬКО синхронизацией, это очевидно.
С этим косяком я хорошо знаком много лет, поскольку занимаюсь видео давно на аппаратном уровне.
(Это только в программировании под ПК я относительный ламер, просто информирую.)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2015, 20:37
провинцыалекс, ну раз ты не ламер тогда возьми из 25 фреймов сделай 50(пусть из них 25 будут дублями предыдущеих) и выводи их за тот же интервал времени.

Добавлено через 1 минуту

Не по теме:

ЗЫ: А если ты профи можешь ещё битмапы фреймов проитерполировать чтобы дубли были с плавным переходом

0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
13.05.2015, 20:44  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
возьми из 25 фреймов сделай 50
Вам не приходит в голову, что все бы так делали, и не морочились бы синхронизацией с видеокарточкой?
Вот специально для вас статья от Интел, и даже на русском.
https://software.intel.com/ru-... ronization

По-вашему, передаём кадры так: 1 1 2 2 3 3 4 4 и так далее? Я верно понял?
Или даже так: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 ?
И чего мы добились? В ЛЮБОМ СЛУЧАЕ переход между кадрами будет происходить 25 раз в секунду.
И если именно во время перерисовки кадра виндой видеокарточке придёт время вышвырнуть его на монитор, будет небольшой косяк. Небольшой, но для качественного видео неприемлемый.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2015, 20:50
провинцыалекс, во первых я попрошу мне не язвить, во вторых мультипликация фреймов будет приводить к нежелательным последствиям, поэтому лучше дублировать 5-6 внутренних вреймов, желательно с инетрполированием. Это очевидные вещи - человеческий глаз замечает обновление 50 Гц, я понял что у нас где то 25 фреймов, а лучше бы было 30-ть и разрывы в кадрах будут не так бросаться в глаза.
Интерполяция даст смазывание движения, что благоприятно отразится на восприятии глазом видеоряда нежели разрывы(собтсвенно все мошин кодеки так и делают берут находят направляющие векторы и смазывают)
0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
13.05.2015, 20:57  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
лучше дублировать 5-6 внутренних вреймов, желательно с инетрполированием. Это очевидные вещи
Интерполирование это совершенно другая задача, которая к моему вопросу вообще не имеет отношения.
И самое главное, что без синхронизации это решительно ничего не даст.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2015, 21:01
Цитата Сообщение от провинцыалекс Посмотреть сообщение
Интерполирование это совершенно другая задача, которая к моему вопросу вообще не имеет отношения.
И самое главное, что без синхронизации это решительно ничего не даст.
ладно сиди мучайся, только время трачу, я интерполировал и всё было хорошо, причём интерполировать можно вообще по центру спектральной светимости (короче по 1-му пикселу), взял смещение центров у смежных фреймов, апроксимнул и родил по полученной f(r) промежуточный фрейм. И самое главное - как не подсовывай монику 25 кадров мигать оно будет, т.к глаз это успевает замечать.
0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
13.05.2015, 21:04  [ТС]
Вряд ли я буду этим заниматься. Просто свалю на программистов, которые в итоге всё сделают через директшоу и будут совершено правы.
А мне просто железо собственного изготовления надо было по-быстрому проверить.
0
13.05.2015, 21:10

Не по теме:

Цитата Сообщение от провинцыалекс Посмотреть сообщение
через директшоу и будут совершено правы.
и что они через него сделают?Всё теже 25 кадров, здесь кастомно подходить надо а не влоб.

0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
13.05.2015, 21:30  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и что они через него сделают?Всё теже 25 кадров
Они получат ровно то что надо и ровно то же, что вы имеете когда смотрите на компе скачанный с рутрекера форсаж-7: 25-30 кадров и никакой интерполяции.

Кстати я начинал-то с записи своего видео в файл (mjpeg) и просматривал виндовым медиаплеером (обычный граф директшоу), и естественно всё отлично было. Потому что Renderer с видеокартой синхронизован.

Добавлено через 6 минут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
И самое главное - как не подсовывай монику 25 кадров мигать оно будет, т.к глаз это успевает замечать.
Вы каждый день смотрите 25 к/с и ничего не мигает. Монитор, понятное дело, отображает старый кадр до прихода нового. А цель синхронизации в том, чтобы кадр пришёл ВЕСЬ, а не половина сейчас и половина через 16.666 миллисекунд.
То есть никакого моргания 25 Гц нет. А вот для восприятия движения как плавного достаточно 24 к/с, что ещё кажется лет 100 назад установили...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.05.2015, 18:53
[quote="провинцыалекс;7610429"]
А вот для восприятия движения как плавного достаточно 24 к/с, что ещё кажется лет 100 назад установили...
- бред, снимают да с 24 кадрами, показывают число кадров большее
Минимальная кадровая частота для создания ощущения плавности движения составляет ~12—18 кадров в секунду. Эта цифра установлена экспериментально на заре кинематографа. Эдисон считал необходимой частоту в 30—40 кадров в секунду, однако эта цифра исходила из заметности мельканий при кинопроекции и оказалась завышенной[1].

Тем не менее, полное устранение «дробления» изображения при быстрых движениях возможно только при использовании частоты съёмки, превышающей критическую частоту заметности мельканий[16]. При частотах, превышающих 48 Гц, изображение становится заметно более плавным и правдоподобным[17]. Это заметно при сравнении на экране телевизора видеозаписи, снятой с большей временно́й дискретностью, и кинофильма. При просмотре видеозаписи (или передачи с телевизионной камеры) зритель видит 50 (или 60) изображений в секунду, каждое из которых отображает отдельную фазу движения, вследствие считывания камерой отдельных полукадров в разные моменты времени. Совсем другая картина наблюдается при просмотре кинофильма, снятого с частотой 24 кадра в секунду. Телевизор, также обладающий чересстрочной разверткой, все равно показывает в секунду только 25 изображений за счет того, что каждый кадрик кинофильма передается дважды: сначала чётным полем, затем нечётным[П 1]. При этом, в отличие от видеозаписи, в которой каждое поле передает отдельную фазу движения, временная дискретность кинофильма вдвое ниже. Поэтому в кинофильмах движение выглядит более обобщенным, чем в видеозаписи. В некоторых профессиональных видеокамерах существует специальный «кинематографический» режим, обеспечивающий понижение временной дискретности изображения, путем одновременного запоминания матрицей четного и нечетного полей изображения с сохранением разрешающей способности, основанной на полном количестве строк в кадре. В результате, оба поля отображают одну и ту же фазу движения, приближая эффект от восприятия изображения к кинематографическому.
- То что жирным называется мультипликацией фрейма, более продвинутая цифровая обработка даёт возможность кроме мультипликации ввести интерполяцию. Собственно об этом и писалось в после #2.

Добавлено через 3 минуты
И вообще провинцыалекс, тебя хз как понимать у тебя
Цитата Сообщение от провинцыалекс Посмотреть сообщение
функцией BitBlt().
и если ею вывести 20-24 кадара идущие в медиафайле, то не то что мигать будет а будет изощрённая пытка для глаза. Теперь плетёшь сюда директ шоу о котором я уверен даже понятия не имеешь, кроме того что с его помощью написан какой то плеер.

Добавлено через 7 минут

Не по теме:

Собственно подведу итог - мигает, потому что выводится 25 кадров в секунду, т.е частота фреймов составляет 25 Гц, чтобы этого не было нужна мультипликация, тут собственно даже и говорить не о чем простые вещи от "кэпа очевидность". Как всегда со мной спорят лишь бы спорить, мне как бы фиолетово, можешь сидеть и дальше долбаться над воспроизведением и искать "свящнный грааль" синхронизации

0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
14.05.2015, 21:39  [ТС]
Спасибо что полностью подтвердил мою правоту своими цитатами.
Ничего про интерполяцию в твоих цитатах НЕТ.
А насчёт чересстрочной развёртки (которую ты выделил жирным) ты меня просто убил :-))))))))
https://ru.wikipedia.org/wiki/... 0%BA%D0%B0
Ну да ладно, программисту простительно не знать вещей, известных любому инженеру.
Объясняю.
Для создания эффекта непрерывности движения достаточно 25 к/с.
Но ведь ЭЛТ не может тупо хранить предыдущий кадр до прихода нового, экран очень быстро тухнет (а если сделать длительное время послесвечения, то получится размазня).
Поэтому при таком раскладе юзер будет видеть мерцание с частотой 25 Гц.
В то же время, мерцание 50 Гц было бы более-менее приемлемо (хотя и заметно).
Подчёркиваю, что речь идёт о двух совершенно разных эффектах: непрерывность движения (25) и заметность мерцания (50).
Сегодня задача решалась бы просто: записали кадр в память, и выдаём его на ЭЛТ по 2 раза с частотой 50 Гц.
Но что делать инженеру 30-х годов? У него нет никакой памяти.
А передавать честных 50 к/с непозволительная роскошь.
Нашли выход: передавать 50 полукадров в секунду, сначала все нечётные строки, потом все чётные.
Сегодня же от этой технологии только головная боль: приходится делать деинтерлейсинг.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
не то что мигать будет а будет изощрённая пытка для глаза
У меня 25 к/с и никакой пытки, всё хорошо за исключением косячка из-за отсутствия синхронизации.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
плетёшь сюда директ шоу о котором я уверен даже понятия не имеешь, кроме того что с его помощью написан какой то плеер.
Мне по барабану, в чём ты уверен. Однако смешно, что похоже ты сам понятия не имеешь о директшоу, судя по фразе "написан какой-то плеер" :-)))))))))
Получить через COM интерфейсы фильтров и составить граф директшоу просто. Странно что тот кто "со знанием дела" рассуждает о видео этого не умеет. А можно составить в редакторе графов.
Через директшоу работают наверное большинство плееров, виндовый медиаплеер уж точно, медиаплеер классик тоже умеет.

Добавлено через 6 минут
Узнать кол-во кадров можно в свойствах при открытии его плеером. Все видео от 24 до 30, и никакой интерполяции система не производит. А если производит, то должен быть указан СПЕЦИАЛЬНЫЙ фильтр директшоу, имеющий ЯВНУЮ настройку, чего там надо "интерполировать".

Добавлено через 4 минуты
Ставил когда-нибудь кодек-пак типа Коллайд и т.п?
Информирую, что при этом ты делал не что иное, как добавлял фильтры директшоу в систему, и именно ими потом смотрел киношки.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.05.2015, 22:03
Я не хочу продолжать общение с очередным де...илом, который даже толком код не показал и размышляет о чём то.
Твой больной мозг даже не понял что шлёпать 25 кадров в сек нельзя, хотя мне по... хоть ус...сь, я больше не скажу не слова, д@..н. DirectShow это такой же API интерфейс как и DirrectSound отличие состоит в том что один работает со звуковой картой другой и тем и с другим, ты хоть wav-чик разложи да залей в саунд буффер програмно, куда там тебе до видео кодеков, пишет он мне "ты меня убил"...
Касательно развёртки - в аналогом видео мультипликация достигается так как описано в вики, в цифровом посредством увеличения фреймов.
Да блин ну вас всех в баню идиотов, помогать пытаешся а на тебя ещё гавно льют.
0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
14.05.2015, 22:05  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Твой больной мозг даже не понял что шлёпать 25 кадров в сек нельзя
:-)))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))))))))))))) ))))))))))
0
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
03.06.2015, 00:36  [ТС]
Если кому интересно, понаблюдал за работой программы на Вин7, так вот там обсуждаемого артефакта не смог заметить.
Видео ничем не отличается от воспроизводимого любым плейером.
Правда, задержка чуть увеличилась (у меня риалтайм).
Люди говорят что проблема начиная с Висты решена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2015, 00:36
Помогаю со студенческими работами здесь

Вывод видео
С внешнего устройства по USB покадрово вычитываю оцифрованное видеоизображение форматом 384х288 с частотой 50 к/сек. Необходимо вывести его...

Вывод видео из бд на сайт
Всем привет! Такой вопрос, создаю сайт, мне нужно вывести на странице сайта несколько видео, как это правильно сделать? Я хотел ссылку на...

Вывод видео файла с БД
Здравствуйте, подскажите как вывести видео файл с БД ?

Вывод видео и трейлер
Всем привет подскажите с таким вот кодом Скажите пожалуйста что нужно вставить в # Хочу что-бы в новой новости был просмотр онлайн...

Вывод видео на форму
Здравствуйте хочу вывести на winForm видео с ip камеры, где можно почитать, посмотреть примеы, подскажите пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru