Посмотрев на это и попробовав, я обнаружил, что на самом деле не разрешено запускать несколько экземпляров jquery за раз. После поиска я обнаружил, что это просто трюк и было намного меньше кода.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script>var $j = jQuery.noConflict(true);</script>
<script>
$(document).ready(function(){
console.log($().jquery); // This prints v1.4.2
console.log($j().jquery); // This prints v1.9.1
});
</script>
Итак, добавление «j» после «$» было всем, что мне нужно было сделать.
$j(function () {
$j('.button-pro').on('click', function () {
var el = $('#cnt' + this.id.replace('btn', ''));
$j('#contentnew > div').not(el).animate({
height: "toggle",
opacity: "toggle"
}, 100).hide();
el.toggle();
});
});
Большинство потребительских кодеров H.264 подбирают информацию о цвете до 4: 2: 0. (RGB в YUV) Это означает, что до того, как процесс кодирования даже запустит ваше растровое изображение RGB, теряет 75% информации о цвете. H.264 был больше разработан для естественного контента, а не для захвата экрана. Но есть кодеки, которые специально разработаны для обеспечения хорошего сжатия содержимого экрана. Например: https://docs.microsoft.com/en-us/windows/desktop/medfound/usingthewindowsmediavideo9screencodec Даже если вы увеличиваете битрейт вашего кодера H.264 - вы работаете только с 25% исходной информации о цвете для начала.
Итак, ваши изменения формата выглядят так:
Вы начинаете с 1920x1080 красных, зеленых и синих пикселей. Вы превращаетесь в YUV. Теперь у вас есть 1920x1080 люма, Cb и Cr. где Cb и Cr являются компонентами разности цветов. Это просто другой способ представления цветов. Теперь вы масштабируете плоскости Cb и Cr до 1/4 их первоначального размера. Таким образом, ваши результирующие каналы Cb и Cr составляют около 960x540, а ваша плоскость яркости по-прежнему составляет 1920x1080. Масштабируя информацию о цвете с 1920x1080 до 960x540, вы уменьшаете размер до 25% от исходного размера. Затем в кодер передаются полноразмерные плоскости яркости и 25% цветоразностных каналов. Этот уровень уменьшения информации о цвете называется подвыборкой до 4: 2: 0. Вход субсэмплирования требуется кодером и выполняется автоматически мультимедийной структурой. Вы ничего не можете сделать, чтобы избежать этого - выбрать другой формат.
R = red
G = green
B = blue
Y = luminescence
U = blue difference (Cb)
V = red difference (Cr)
YUV используется для выделения сигнала яркости (Y), который может быть сохранен с высоким разрешением или передан с высокой пропускной способностью, и двух компонентов цветности (U и V), которые могут быть уменьшены по ширине полосы, подвергнуты дискретизации и сжаты или иным образом обрабатывается отдельно для повышения эффективности системы. (Википедия)
Original format
RGB (4:4:4) 3 bytes per pixel
R R R R R R R R R R R R R R R R
G G G G G G G G G G G G G G G G
B B B B B B B B B B B B B B B B
Encoder input format - before H.264 compression
YUV (4:2:0) 1.5 bytes per pixel (6 bytes per 4 pixel)
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
UV UV UV UV
Я пытаюсь понять вашу проблему.
Моя программа ScreenCaptureEncode использует стандартные настройки кодировщика Microsoft:
Исходя из моих результатов, я считаю, что качество хорошее / приемлемое.
Вы можете изменить профиль / уровень / битрейт с помощью MF_MT_MPEG2_PROFILE / MF_MT_MPEG2_LEVEL / MF_MT_AVG_BITRATE. Для CODECAPI_AVEncCommonQuality кажется, что вы пытаетесь использовать локально зарегистрированный кодер, потому что вы на Win7, чтобы установить это значение на 100, я думаю.
Но я не думаю, что это сильно изменит ситуацию.
Зв
здесь 3 скриншота с экраном печати клавиатуры:
Два последних изображения из одного и того же видео кодированного файла. Видеоплеер вводит псевдонимы, когда не воспроизводится в полноэкранном режиме. Тот же кодированный файл, воспроизводимый в полноэкранном режиме, не так плох, как по сравнению с исходным экраном, так и с настройками кодера по умолчанию. Вы должны попробовать это. Я думаю, что мы должны смотреть на это более внимательно.
Я думаю, что псевдоним исходит от вашего видеоплеера, и потому что не играет в полноэкранном режиме.
PS: я использую видеоплеер MPC-HC.
PS2: мою программу нужно улучшить:
РЕДАКТИРОВАТЬ
Вы читали это:
Режим с низкой задержкой полезен для связи в реальном времени или захвата в реальном времени, когда задержка должна быть минимизирована. Однако режим с низкой задержкой может также снизить качество декодирования или кодирования .
blockquote>О том, почему моя программа использует MFVideoFormat_RGB32, а ваша - MFVideoFormat_YUY2. По умолчанию в SinkWriter включены конвертеры. SinkWriter преобразует MFVideoFormat_RGB32 в совместимый формат кодера h264. Для кодировщика Microsoft прочитайте это: Видеокодер H.264
Формат ввода:
- MFVideoFormat_I420
- MFVideoFormat_IYUV
- MFVideoFormat_NV12
- MFVideoFormat_YUY2
- MFVideoFormat_YV12
Таким образом, MFVideoFormat_RGB32 отсутствует. Я думаю, что SinkWriter выполняет преобразование с использованием DSP Color Converter.
Так что определенно проблема не в преобразовании rgb в yuv до кодирования.
PS (последний)
, как сказал Маркус Шуман,
H.264 больше предназначен для естественного контента, а не для захвата экрана.
blockquote>Он должен был упомянуть, что проблема особенно связана с захватом текста.
Вы только что нашли ограничение кодера. Я просто думаю, что ни один кодировщик не подходит для кодирования текста с приемлемым растяжением, как я упоминал при рендеринге видеоплеера.
Вы видите псевдоним при окончательном захвате видео, потому что это фиксированная информация внутри фильма. Воспроизведение этого фильма в полноэкранном режиме (так же, как захват) - это нормально.
В Windows текст рассчитывается в соответствии с разрешением экрана. Так что дисплей всегда хорош.
это мой последний вывод.