如何录制(和处理?)可从 Android 流式传输的视频
How to record (and process?) a video that is streamable from Android
我公司的应用严重依赖网络视频的视频录制和播放。我使用 MediaRecorder
API 来录制视频,通过我设计的这个库:https://github.com/afollestad/material-camera。
为了播放,我使用这个库,它基本上是 Google 的 ExoPlayer 库的包装器:https://github.com/brianwernick/ExoMedia。
它在大多数情况下都适用于小视频,尤其是当我降低音频和视频的比特率时。然而,更大和更高质量的视频有很多问题。有时它们似乎永远缓冲,有时甚至无法成功开始播放等等。同样,这些视频是通过 HTTP 从 Amazon S3 流式传输的。
我已经阅读了一些关于 FFMPEG 的内容,以及它如何处理 "faststart" 的 MP4,将文件拆分为 DASH 的块等。但是,Android 的 FFMPEG 解决方案似乎有点复杂,所以...
是否可以使用 Android、MediaRecorder
、MediaCodec
或其他 API 录制 MP4,从而生成可快速流式传输的视频文件? Snapchat 解决这个问题的能力让我感到惊讶。
好吧,我最终再次尝试了股票 MediaPlayer
API。只要您使用 API 16 或更高版本,默认的硬编码缓冲区大小就不会出现重大问题。
我最终制作了一个小型库,以防其他人需要一个很好的视频播放解决方案:https://github.com/afollestad/easy-video-player
我公司的应用严重依赖网络视频的视频录制和播放。我使用 MediaRecorder
API 来录制视频,通过我设计的这个库:https://github.com/afollestad/material-camera。
为了播放,我使用这个库,它基本上是 Google 的 ExoPlayer 库的包装器:https://github.com/brianwernick/ExoMedia。
它在大多数情况下都适用于小视频,尤其是当我降低音频和视频的比特率时。然而,更大和更高质量的视频有很多问题。有时它们似乎永远缓冲,有时甚至无法成功开始播放等等。同样,这些视频是通过 HTTP 从 Amazon S3 流式传输的。
我已经阅读了一些关于 FFMPEG 的内容,以及它如何处理 "faststart" 的 MP4,将文件拆分为 DASH 的块等。但是,Android 的 FFMPEG 解决方案似乎有点复杂,所以...
是否可以使用 Android、MediaRecorder
、MediaCodec
或其他 API 录制 MP4,从而生成可快速流式传输的视频文件? Snapchat 解决这个问题的能力让我感到惊讶。
好吧,我最终再次尝试了股票 MediaPlayer
API。只要您使用 API 16 或更高版本,默认的硬编码缓冲区大小就不会出现重大问题。
我最终制作了一个小型库,以防其他人需要一个很好的视频播放解决方案:https://github.com/afollestad/easy-video-player