在将视频上传到服务器之前,我一直在使用“cordova-plugin-video-editor”插件来减小视频的大小/质量。
该插件在大多数 Android 手机上都能正常工作,在 iOS 上不用担心。
但在最近的安卓手机上,它碰巧崩溃了。 我用 Android 9 下的小米 RedMi Note 7 重现了这个错误。
我有这个错误:
net.ypresto.androidtranscoder.engine.InvalidOutputFormatException:
Android 操作系统不支持非基线 AVC 视频配置文件,实际
profile_idc:100
以下是视频的特点:
H264 - MPEG-4 AVC (part10)(avc1)
1920x1080
Planar 4:2:0 YUV
ITU-R BT.601 (50 Hz)
MPEG AAC Audio (mp4a)
48000Hz
32bits
经过几次搜索我找不到解决方案,但仍然有一些线索,例如:
今天,除了必须创建自己的插件以使用另一个与新视频格式兼容的 Android 库之外,我无法得出任何其他结论。
我必须承认我不太喜欢这个解决方案,这就是我呼吁社区的原因。接下来我可以尝试什么?
确实是插件依赖不兼容新编解码器
所以我在我的GitHub上fork了这个插件,然后修改了转码视频的代码部分。现在我用这个库代替旧库:https://github.com/tangpeng/VideoCompressor
你可以看到这个 repo 的提交的变化: https://github.com/Eblancho/cordova-plugin-video-editor
我不建议您将它用于您的项目,因为它没有经过 100% 测试/与所有手机兼容,它是最近才发生的变化。
除此之外,与允许选择高度/宽度、比特率和其他内容的先前版本不同,我的版本计算:
newHeight = videoHeight / 2;
newWidth = videoWidth / 2;
bitrates = (newHeight / 2) * (newWidth / 2) * 10;
这个新问题不是我修改的副作用,因为它也出现在旧版本上,我只是认为它也与转码有关。
现在,当我打开相机录制我的视频时,只要我想关闭返回 Cordova mainActivity 的意图,应用程序就会重新启动。
我不认为这真的是讨论的话题,所以我打算创建一个新问题来更好地分离我的问题。