如何在Silverlight中压缩捕获的视频?

时间:2011-08-20 20:39:40

标签: silverlight compression media video-capture

Silverlight v4中的一项重大交易是音频/视频捕捉......但我还没有找到一个能够做我想做的事情的例子。所以:

如何使用Silverlight(从网络摄像头)捕获音频/视频,然后将其另存为压缩格式(WMV或MP4)?这里的想法是在压缩后上传它。

已经查看了this blog post的捕获片段,但需要找到压缩音频/视频以便上传的方法。

1 个答案:

答案 0 :(得分:2)

Silverlight不支持视频编码,更有可能这至少不会由Microsoft实现。为了通过网络传输视频,一些人通过将各个帧压缩为常规JPEG图像来使用“伪MJPEG”编解码器。有些人甚至通过将帧划分为固定块(例如8x8)来改进这种想法,并且仅传输更改的块(具有有损的比较)。

如果您是资深程序员并喜欢编码,那么这是“psuedo-MJPEG”理念的另一个略微改进的版本:

  1. 将当前帧划分为固定的8x8块
  2. 应用RGB - >每个块的YCbCr颜色空间转换
  3. 将样品Cb和Cr平面下降一半
  4. 将DCT应用于YCbCr
  5. 用量化矩阵量化DCT系数
  6. 将此DCT系数与前一帧的块进行比较。这样,您就可以对每个连续的帧进行“感知上有损”的比较。
  7. 使用逐位范围编码器并为未更改的块编码标志
  8. 对于更改的块,通过建模来传输DCT系数(您可以使用JPEG的标准Z字形模式和零运行模型)并使用范围编码器对其进行编码。
  9. 这或多或少是一种标准的JPEG算法。但是,与标准JPEG相比的实际优势是:

    1. 块的感知有损比较
    2. 由于小开销和更强的熵编码器(范围编码器)而导致更强的压缩
    3. 另一种选择可能是支付第三方软件(抱歉,我不知道任何免费软件)。我发现product。我根本没用过它。但是,我相信它对你有用。