Как вы сжимаете захваченное видео в Silverlight? - PullRequest
1 голос
/ 21 августа 2011

Одна из самых важных сделок в Silverlight v4 - захват аудио / видео ... но я пока не нашел пример, который бы делал то, что я хочу. Итак:

Как захватить аудио / видео с помощью Silverlight (с веб-камеры), а затем сохранить его в сжатом формате (WMV или MP4)? Идея здесь состоит в том, чтобы загрузить его после сжатия.

Уже просматривали эту запись в блоге для получения фрагмента захвата, но нужно найти способ сжатия аудио / видео для загрузки.

1 Ответ

2 голосов
/ 25 декабря 2011

Silverlight не поддерживает кодирование видео, и, скорее всего, это не будет реализовано, по крайней мере, Microsoft.Для передачи видео по сети некоторые люди используют кодек «псевдо-MJPEG», сжимая отдельные кадры в виде обычных изображений JPEG.Некоторые люди даже улучшили эту идею, разделив кадры на фиксированные блоки (скажем, 8x8), и передают только измененные блоки (со сравнением с потерями).

Если вы опытный программист и любите кодировать, вот еще одно слегка улучшенноеверсия идеи "psuedo-MJPEG":

  1. Разделить текущий кадр на фиксированный блок 8x8
  2. Применить преобразование цветового пространства RGB -> YCbCr для каждого блока
  3. Пример внизПлоскость Cb и Cr наполовину
  4. Применить DCT к YCbCr
  5. Квантовать коэффициенты DCT с помощью матрицы квантования
  6. Сравнить эти коэффициенты DCT с блоком предыдущего кадра.Таким образом, вы проводите сравнение «с потерями восприятия» для каждого последовательного кадра.
  7. Используйте побитовый кодер диапазона и кодируете флаг для неизмененных блоков
  8. Для измененных блоков передайте коэффициент DCT путем моделированияих (вы можете использовать стандартный зигзагообразный шаблон JPEG и модель нулевого цикла) и кодировать их с помощью кодера диапазона.

На самом деле это более или менее стандартный алгоритм JPEG.Но фактические преимущества по сравнению со стандартным JPEG:

  1. Сравнение воспринимаемых потерь для блоков
  2. Более сильное сжатие из-за малых накладных расходов и более сильного энтропийного кодера (кодер диапазона)

Другим вариантом может быть оплата за стороннее программное обеспечение (извините, я не знаю свободного программного обеспечения).Я считаю, что продукт .Я не использовал это вообще.Но я считаю, что это может быть полезно для вас.

...