Silverlight не поддерживает кодирование видео, и, скорее всего, это не будет реализовано, по крайней мере, Microsoft.Для передачи видео по сети некоторые люди используют кодек «псевдо-MJPEG», сжимая отдельные кадры в виде обычных изображений JPEG.Некоторые люди даже улучшили эту идею, разделив кадры на фиксированные блоки (скажем, 8x8), и передают только измененные блоки (со сравнением с потерями).
Если вы опытный программист и любите кодировать, вот еще одно слегка улучшенноеверсия идеи "psuedo-MJPEG":
- Разделить текущий кадр на фиксированный блок 8x8
- Применить преобразование цветового пространства RGB -> YCbCr для каждого блока
- Пример внизПлоскость Cb и Cr наполовину
- Применить DCT к YCbCr
- Квантовать коэффициенты DCT с помощью матрицы квантования
- Сравнить эти коэффициенты DCT с блоком предыдущего кадра.Таким образом, вы проводите сравнение «с потерями восприятия» для каждого последовательного кадра.
- Используйте побитовый кодер диапазона и кодируете флаг для неизмененных блоков
- Для измененных блоков передайте коэффициент DCT путем моделированияих (вы можете использовать стандартный зигзагообразный шаблон JPEG и модель нулевого цикла) и кодировать их с помощью кодера диапазона.
На самом деле это более или менее стандартный алгоритм JPEG.Но фактические преимущества по сравнению со стандартным JPEG:
- Сравнение воспринимаемых потерь для блоков
- Более сильное сжатие из-за малых накладных расходов и более сильного энтропийного кодера (кодер диапазона)
Другим вариантом может быть оплата за стороннее программное обеспечение (извините, я не знаю свободного программного обеспечения).Я считаю, что продукт .Я не использовал это вообще.Но я считаю, что это может быть полезно для вас.