如何在WP8中使用AudioVideoCptureDevice录制视频

时间:2013-07-27 14:17:55

标签: windows-phone-8 stream video-recording front-camera

Here它表示我可以使用AudioVideoCaptureDevice录制视频,但没有提供示例或帮助。

我需要做以下事情:
- 将视频录制为流完成
- 显示录制的视频缩略图(可以是视频录制时捕获的帧)完成
- 重播录制的视频完成
- 更改分辨率和相机类型(前/后)完成

如何实现这一目标?有样品吗?我无法找到它们。请帮帮我。

完成
- 将视频录制成流
- 重播录制的视频
- 更改分辨率和相机类型(前/后)
- 显示录制的视频缩略图(可以是视频录制时捕获的帧)

新问题
- 前置摄像头视频镜像倒置。我可以在使用变换录制时更改此设置,但实际视频仍然是镜像的。

更新
- 计算录制视频的大小并显示它。它不起作用。 Stream.Size提供随机值。

有关解决这些问题的任何想法吗?

3 个答案:

答案 0 :(得分:3)

对于显示视频录制缩略图的问题... AudioVideoCaptureDevice上有一个名为PreviewFrameAvailable的事件。我想如果您设置此事件处理程序,它将告诉您何时可以获得视频的预览(图像/缩略图)数据。

还有3种方法可以获取预览图像的字节数组(GetPreviewBufferARGB,GetPreviewBufferY,GetPreviewBufferYCbCr)。所有这三种方法都以相应的格式返回图像像素数据的byte [](例如:GetPreviewBufferARGB应返回ARGB格式的原始位图的原始字节)。获取预览数据的字节数组后,您应该能够将其编码为PNG或JPEG或您喜欢的任何压缩图像格式。祝你好运。

答案 1 :(得分:1)

答案 2 :(得分:0)

我通过Item.joins(:player).order(created_at :desc).pluck('players.id', 'players.name').uniq.first(5) 解决了镜像倒置视频录制的问题:

解决我问题的一行是:

Front-Camera

完整代码:

XAML代码

//here videoCapture is AudioVideoCaptureDevice object

videoCapture.SetProperty(KnownCameraGeneralProperties.EncodeWithOrientation, -90);

BackEnd C#代码

    <Canvas x:Name="CanvasLayoutRoot" RenderTransformOrigin="0.5 0.5"
            Width="{Binding ActualHeight, ElementName=LayoutRoot}"
            Height="{Binding ActualWidth, ElementName=LayoutRoot}"
            Margin="-160 0 0 0">

        <Canvas.RenderTransform>
            <RotateTransform x:Name="rt" />
        </Canvas.RenderTransform>

        <Canvas.Background>
            <VideoBrush x:Name="videoBrush" />
        </Canvas.Background>
    </Canvas>

这段代码经过数十次努力帮助了我......!