Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 通过前摄像头录制视频-WP8-C_Windows Phone 8_Video_Rotation_Front Camera - Fatal编程技术网

Windows phone 8 通过前摄像头录制视频-WP8-C

Windows phone 8 通过前摄像头录制视频-WP8-C,windows-phone-8,video,rotation,front-camera,Windows Phone 8,Video,Rotation,Front Camera,我的windows phone应用程序需要从前置摄像头录制视频,并通过Web服务将其发送到服务器 在这里,当我试图从前摄像头录制视频时,我得到了镜像反转的视频。表示前摄像头记录180度旋转的视频 我认为唯一的解决办法可能是将录制的视频流向后旋转180度 问题: 在wp8中,是否有其他解决方案可以通过前置摄像头录制正确的视频? 如果没有,如何将视频流旋转180度?有什么c API可以做到这一点吗。。? 编辑: 下面是我正在使用的代码: 视频刷的XAML代码 初始化摄像机 公共异步void Init

我的windows phone应用程序需要从前置摄像头录制视频,并通过Web服务将其发送到服务器

在这里,当我试图从前摄像头录制视频时,我得到了镜像反转的视频。表示前摄像头记录180度旋转的视频

我认为唯一的解决办法可能是将录制的视频流向后旋转180度

问题:

在wp8中,是否有其他解决方案可以通过前置摄像头录制正确的视频? 如果没有,如何将视频流旋转180度?有什么c API可以做到这一点吗。。? 编辑:

下面是我正在使用的代码:

视频刷的XAML代码

初始化摄像机

公共异步void InitializeVideoRecorder { 尝试 { 如果videoCapture==null { //下面的代码行将检测前摄像头是否可用 //如果可用,则将其打开,否则将打开后摄像头 videoCapture=等待AudioVideoCaptureDevice.OpenAsync AudioVideoCaptureDevice.AvailablesSensorLocations.ContainesCamerasSensorLocation.Front?摄像机传感器位置。Front:摄像机传感器位置。Back, 新窗口.SieZ640,480; videoCapture.RecordingFailed+=videoCapture\u RecordingFailed; videoCapture.SetPropertyKnownCameraGeneralProperties.EncodeWithOrientation、videoCapture.Sensor旋转度; //如果手机上有摄像头,请初始化摄像头。 如果videoCapture!=null { videoBrush.SetSourcevideoCapture; if!AudioVideoCaptureDevice.AvailableSensorLocations.ContainesCamerasSensorLocation.Front { rt.角度=视频捕获。传感器旋转度; } 其他的 { rt.角度=-videoCapture.传感器旋转度; } } 其他的 { MessageBox.Show无法加载相机。请稍后重试。App.appName,MessageBoxButton.OK; 导航服务.GoBack; } } } 捕获异常 { 新WebServices.catchExceptionEx; 导航服务.GoBack; } } 开始视频捕获

专用异步任务StartVideoRecording { 尝试 { //获取应用程序数据文件夹 StorageFolder applicationFolder=ApplicationData.Current.LocalFolder; StorageFolder transfersFolder=等待等待应用程序文件夹。GetFolderAsyncShared.GetFolderAsyncTransfers; //创建应用程序数据文件夹中指定的文件 videoFileName=selectedQue.response.template\u id+\u+selectedQue.response.id+\u+selectedQue.response.invite\u id+.mp4; StorageFile StorageFile=Wait transfersFolder.CreateFileAsyncvideoFileName,CreationCollisionOption.ReplaceExisting; //打开文件流,准备写入视频数据 randomAccessStream=await storageFile.OpenAsyncFileAccessMode.ReadWrite; //将视频录制到指定流 等待videoCapture.StartRecordingToStreamAsyncrandomAccessStream; isRecordingStarted=true; //计时器=0:00; tbTimer.Text=0:00; dt.启动; } 捕获异常 { 新WebServices.catchExceptionEx; } }
这在过去对我很有效,它只是一个条形码扫描器应用程序,我通过编码来满足功能需求。我把变换放在屏幕上


经过24小时的努力,我终于用下面的解决方案解决了我的问题

下面是通过旋转视频导致问题的代码行

videoCapture.SetProperty(KnownCameraGeneralProperties.EncodeWithOrientation, videoCapture.SensorRotationInDegrees);
videoCapture.SetProperty(KnownCameraGeneralProperties.EncodeWithOrientation, -(videoCapture.SensorRotationInDegrees));
这里视频捕获是AudioVideoCaptureDevice的目标

当使用前置摄像头时,我们需要反转摄像头传感器的旋转

因此,我使用了上面提到的代码,在代码的videoCapture.SetProperty行中做了一个小小的修改。正确的代码行如下所示

videoCapture.SetProperty(KnownCameraGeneralProperties.EncodeWithOrientation, -(videoCapture.SensorRotationInDegrees));
我只是在视频捕获之前加了一个减号,把它颠倒过来


希望这对大家都有帮助。

这是纵向模式还是横向模式?也许您可以更新您的问题,以包含复制问题的相关代码?@RowlandShaw我已经添加了代码。事实上,我希望它处于纵向模式。谢谢你的输入。。我试过了,但没用。。!前摄像头拍摄的静止视频反转180度旋转。。!关于如何旋转任何视频流的任何其他解决方案。