在 Nativescript 应用程序中将 PHAsset/AVAsset 转换为 mp4 视频

Convert PHAsset/AVAsset to mp4 video in Nativescript app

我使用文件选择器的 nativescript-imagepicker 插件。 这个returns一个PHAsset。 我必须将它复制到一个临时目录才能上传。 我是 iOS 的新人,所以我尝试了一下:

const options = PHVideoRequestOptions.new();
options.version = PHVideoRequestOptionsVersion.Current;
PHImageManager
    .defaultManager()
    .requestAVAssetForVideoOptionsResultHandler(
        phAsset
        , options
        , (avAsset, audioMix, info) => {
            try {

                const tempFilePath = path.join(tempFolderPath, `${Date.now()}.mp4`);
                const targetURL = NSURL.fileURLWithPath(tempFilePath);
                const exportSession = AVAssetExportSession.alloc(avAsset, AVAssetExportPresetPassthrough);
                exportSession.outputUrl = targetURL;
                exportSession.outputFileType = AVFileTypeMPEG4;
                exportSession.exportAsynchronouslyWithCompletionHandler(() => {
                    console.log(exportSession.status);
                });
            }
            catch (e) {
                console.log(e);
            }
        }
    );

我的代码毫无错误地崩溃了,所以我不知道从哪里开始调试。 我想要一个MP4,也可以在网络上播放。

最后我需要一个 mp4 文件的字符串(路径)来上传带有 nativescript-background-http 的 id。

你的语法好像有误

const exportSession = AVAssetExportSession.alloc().initWithAssetPresetName(avAsset, AVAssetExportPresetPassthrough);
exportSession.outputURL = targetURL;