【问题标题】:How to disable video compression - UIImagePickerController, Xamarin.IOS, C#如何禁用视频压缩 - UIImagePickerController、Xamarin.IOS、C#
【发布时间】:2018-07-25 11:09:13
【问题描述】:

计划: 我目前正在使用 UIImagePickerController 让用户在他们的设备上选择一个视频。然后它检索视频的 URL 并存储它。

问题: 当用户选择视频时,它会压缩视频。 如何禁用压缩部分?因为我只对url感兴趣,如果视频很大,需要很长时间。

我找到了这个答案 - https://stackoverflow.com/a/48643954/9764182

但是,对我来说,“VideoExportPreset”属性需要一个字符串。

代码:我认为我的代码不会有帮助,我确实有一个函数订阅了拾取器的完成拾取事件。但是,压缩发生在该事件触发之前。

MediaPicker = new UIImagePickerController();
MediaPicker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary;
MediaPicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.PhotoLibrary);
MediaPicker.ImageExportPreset = UIImagePickerControllerImageUrlExportPreset.Current;
MediaPicker.VideoQuality = UIImagePickerControllerQualityType.High;
MediaPicker.FinishedPickingMedia += Handle_FinishedPickingMedia;
MediaPicker.Canceled += Handle_Canceled;

【问题讨论】:

    标签: c# xamarin xamarin.forms xamarin.ios uiimagepickercontroller


    【解决方案1】:

    AVAssetExportSessionPreset 提供了一个方便的枚举,您可以使用它来获取 NSString,然后您可以将其转换为 C# string

    示例:

    var MediaPicker = new UIImagePickerController
    {
        ~~~~
        VideoExportPreset = AVAssetExportSessionPreset.Passthrough.GetConstant().ToString(),
        ~~~~
    };
    

    【讨论】:

    • 您好,感谢您的回答和解释,大大减少了压缩时间!你知道是否有办法一起禁用它吗?
    • @t3ch3 Passthrough 是最快的,如果它仍在编码某些内容,请确保您没有设置可能导致 iOS 对文件执行某些操作的 other 属性。
    • 它确实减少了压缩进度条的时间,但是,在 iOS 12.1 上 > 文件似乎更改了编解码器。我有 3 台 ios 设备,其中一台运行 iOS 11.3。视频仍然可以在 Windows 或 Android 上播放,但是,在 Windows 10 或 Android 上播放视频时,将 VideoExportPreset 设置为 Passthrough 不起作用。我希望我可以通过将导出设置为直通来深入了解苹果文档的某个地方,了解幕后究竟发生了什么。
    • @gcadmes 你检查容器格式了吗,我“假设”你现在得到一个基于hvc1的mpeg文件。
    • @SushiHangover 我没有检查容器格式。有那个API吗?我该如何检查?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多