ios - Xamarin iOS AVCaptureSession - 在 iPhone 8 上只有音频/没有视频

标签 ios xamarin xamarin.ios avcapturesession

我们有一个使用 Xamarin Forms 构建的视频录制应用程序。对于 iOS 录制,我们有一个自定义渲染器,它执行如下操作:

        NSError error;

        var CaptureSession = new AVCaptureSession();
        CaptureSession.SessionPreset = AVCaptureSession.PresetMedium;

        var videoDevices = AVCaptureDevice.DevicesWithMediaType(AVMediaType.Video);
        var cameraPosition = AVCaptureDevicePosition.Front;
        var device = videoDevices.FirstOrDefault(d => d.Position == cameraPosition);
        var input = new AVCaptureDeviceInput(device, out error);
        CaptureSession.AddInput(input);

        var audioDevice = AVCaptureDevice.GetDefaultDevice(AVMediaType.Audio);
        var audioDeviceInput = AVCaptureDeviceInput.FromDevice(audioDevice, out error);
        CaptureSession.AddInput(audioDeviceInput);

        CaptureSession.StartRunning();

        // ...
        // ...

        var MovieFileOutput = new AVCaptureMovieFileOutput();

        CaptureSession.AddOutput(MovieFileOutput);
        var basePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        var outputFilePath = Path.Combine(basePath, Path.ChangeExtension("video", "mov"));
        MovieFileOutput.StartRecordingToOutputFile(NSUrl.FromFilename(outputFilePath), this);

        // ...
        // ...

        MovieFileOutput.StopRecording();

我们过去甚至只是将 .mov 文件重命名为 .mp4,它在所有浏览器上都能正常播放 - mac/pc 和 safari 上的 chrome。我知道这不是一个好主意,但它似乎奏效了。

这在 iPhone 8 之前一直工作得很好。现在,在 iPhone 8 上录制的任何视频在 Safari 中都可以正常播放,但在 chrome for mac 或 pc 上它只能播放音频但不播放视频

我知道苹果在最近的 iOS 版本中提供了一些新的视频/照片格式,但这应该会影响 iPhone 7 Plus(运行最新的 iOS 并在相机中启用“高效”设置)。

将录制的视频直接编码为 mp4 视频有什么好的方法可以避免此类问题?

以上代码基于示例应用程序 - https://developer.xamarin.com/samples/monotouch/ios10/AVCam/

最佳答案

以下解决方案对我有用。

NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecH264, AVVideoCodecKey, nil];

[movieFileOutput setOutputSettings:outputSettings forConnection:[movieFileOutput connectionWithMediaType:AVMediaTypeVideo]];

关于ios - Xamarin iOS AVCaptureSession - 在 iPhone 8 上只有音频/没有视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49646095/

相关文章:

c# - Xamarin iOS 在 UIWebView 中加载内容

ios - 如何在导航栏上添加自定义 View

iphone - 如何从 UILocalNotification 注册 NSNotification?

Localizable.strings 文件中的 iOS 评论

c# - 使用 SummaryRow 和分组时 Syncfusion SfDataGrid 崩溃

ios - 使用通知,我可以在它发生之前检索方向更改

ios - didEndEditingRowAt 未使用自定义 tableview 单元格调用

ios - 如何使用 MKMapView.gestureRecognizers 访问特定的 UIGestureRecognizer

c# - DequeueReusableCell 仅在 iPhone 4S 上使应用程序崩溃

pdf - 使用 Xamarin 下载文件的正确方法?