3

这里声明我可以使用录制视频,AudioVideoCaptureDevice但没有提供示例或帮助。

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

如何做到这一点?有样品吗?我找不到他们。请帮我。

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

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

更新
- 计算录制视频的大小并显示它。它不工作。Stream.Size 给出随机值。

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

4

3 回答 3

3

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

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

于 2013-07-29T20:00:15.577 回答
1

此处介绍了使用 Windows Phone 8 摄像头的基础知识...

适用于 Windows Phone 8 的高级照片捕捉

如何在 Windows Phone 8 的相机胶卷中保存使用新相机 API 拍摄的照片

如何在 Windows Phone 8 中设置视频录制分辨率

如何在 WP8 中设置视频录制的高级属性

注意:在某些 Lumia 设备上获取支持的前置摄像头分辨率时会出现问题

于 2013-07-27T15:11:10.343 回答
0

我通过以下方式解决了镜像倒置视频录制的问题Front-Camera

解决我的问题的一行是:

//here videoCapture is AudioVideoCaptureDevice object

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

完整代码:

XAML 代码

    <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>

后端 C# 代码

    // in any specific method or event handler write
    // the below code while initializing the Front camera

    private AudioVideoCaptureDevice videoCapture = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Front, new Windows.Foundation.Size(640, 480));
    videoCapture.SetProperty(KnownCameraGeneralProperties.EncodeWithOrientation, -90);
    rt.Angle = -90;
    videoBrush.SetSource(videoCapture);

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

于 2015-05-02T07:29:46.327 回答