我正在为Android开发视频录制和共享应用程序.该应用程序的规格如下: -
- 从应用程序内部录制10秒(最大)视频(不使用设备的相机应用程序)
- 没有进一步编辑视频
- 将视频存储在Firebase云存储(GCS)存储桶中
- 其他用户下载和播放所述视频
从研究中我做了SO和其他人的来源,我发现了以下内容(如果我错了请纠正我): -
这三个选项及其各自的特点是: -
1. Ffmpeg
- 无论如何能够实现上述目标,并在SO等网站上有广泛的答案和解释
- APK大小增加20-30mb(大型图书馆)
- 在某些64位设备上运行不正常的风险
2. MediaRecorder
- 大多数设备可靠且支持
- 将以.mp4格式存储文件(除非转换为h264)
- 更易于播放(无需解码)
- 添加mp4和3gp标头
- 根据此问题增加延迟
3. MediaCodec
- 低级
- 将需要MediaCodec,MediaMuxer和MediaExtractor
- 以h264输出(不使用MediaMuxer进行播放)
- 适合视频操作(但在我的用例中不需要)
- 4.3之前的(API 18)设备不支持
- 更难以实现和编码(我的意见 - 如果我错了,请纠正我)
- 没有广泛的信息,教程,答案或样本(Bigflake.com是唯一的例外)
花了好几天后,我仍然无法弄清楚哪种方法适合我的特定用例.请详细说明我应该为我的申请做些什么.如果有一种完全不同的方法,那么我也对此持开放态度.
我最大的标准是视频编码过程尽可能高效,并且要存储在云中的视频应该具有尽可能低的空间使用率,而不会影响视频质量.
另外,如果您可以建议在Firebase存储中保存和分发视频的相应格式,我将不胜感激,并指出我建议方法的教程或示例.
先感谢您!很抱歉长时间阅读.