我正在开发一款Android视频录制和分享应用程序。该应用程序的规格如下:
- 在应用程序内录制最长10秒的视频(不使用设备的相机应用程序)
- 视频不需要进一步编辑
- 将视频存储在Firebase Cloud Storage (GCS) bucket中
- 其他用户可以下载和播放视频
从我在 Stack Overflow 和其他来源所做的研究中,我发现了以下内容(如果我错了,请纠正我):
三种选项及其特点如下:
1. Ffmpeg
- 能够达到上述目标,并且在类似于 Stack Overflow 的网站上有广泛的答案和解释,但
- 会增加APK大小20-30MB(庞大的库)
- 存在在某些64位设备上无法正常工作的风险
2. MediaRecorder
- 可靠,受大多数设备支持
- 将文件存储为.mp4格式(除非转换为h264)
- 更容易进行回放(不需要解码)
- 添加mp4和3gp头文件
- 根据此问题增加延迟
3. MediaCodec
- 低级别
- 需要使用MediaCodec、MediaMuxer和MediaExtractor
- 输出为h264格式(无需使用MediaMuxer进行回放)
- 适用于视频操作(虽然在我的用例中不需要)
- 不支持4.3以下(API 18)的设备
- 更难实现和编码(我个人观点-如果我错了,请纠正我)
- 缺乏广泛的信息、教程、答案或样本(Bigflake.com是唯一的例外)
我已经花了几天时间,但我仍然无法确定哪种方法适合我的特定用例。请详细说明我应该为我的应用程序做些什么。如果有完全不同的方法,我也愿意尝试。
我的最大标准是视频编码过程尽可能高效,并且存储在云中的视频在不影响视频质量的情况下占用空间最小。
此外,如果您可以建议在Firebase Storage中保存和分发视频的适当格式,并指向建议方法的教程或示例,我将不胜感激。
非常感谢!对于长篇阅读,很抱歉。