Android 保存视频文件或流式传输到服务器之间的性能差异

Android Performance difference between saving video files or streaming to server

我打算构建一个 Android 应用程序来记录视频源并对视频中捕获的每个帧执行操作。当前的应用程序结构如下:

录制 45 秒的视频后,外部存储中的视频文件将通过网络连接发送到服务器。视频将以 1080p、30 FPS 录制。

我想知道将每个帧流式传输到外部服务器而不是在设备上创建视频文件进行存储是否会产生显着的性能成本。我感兴趣的是流式传输每一帧是否会比保存每一帧有更大的性能成本。如果是这样,为什么会这样?提前致谢!

您应该先保存在本地,然后再进行流式传输。如果在流式传输期间网络连接失败(很可能在移动设备上 in/out 接收 wifi/cell),那么您将丢失所有数据。如果您先将它保存到一个临时文件,那么您可以上传它并在删除临时文件之前检查上传是否成功。

一方面,您将在数据大小方面有开销,因为我的预期是压缩视频将比数千个源帧少约 100 倍。

另一方面,从帧构建视频将具有非常高的 CPU 占用空间,因此会耗尽电池电量。

您可以使用 Android Profiler 来检查哪种方法效果更快并且对移动设备本身的影响最小。

从移动设备的角度来看(节省 CPU 和带宽)最好的选择是将视频流直接从摄像头保存到后端服务器并在那里执行处理。然而,在这种情况下,您需要仔细衡量服务器的性能,以确保它能够支持预期数量的移动用户同时上传视频文件。请参阅 Load Testing Mobile Apps Made Easy 文章以了解有关移动设备后端性能测试的总体思路。