android - 将视频转码以降低比特率并流式传输

标签 android android-mediacodec

我有一个工作应用程序可以将视频流式传输到 Chromecast(使用 nannoHttpd)并且一切正常。现在我的问题是:使用新设备录制的视频太大而无法流式传输,因此我想将视频重新编码为较低的比特率。

我尝试了 ffmpeg,但结果并不令人满意,它会使 apk 大小增加 14 MB。

现在我正在尝试 MediaCodec api。它比 ffmpeg 快,但它获取输入文件并将其写入输出文件,我想重新编码 nannohttpd 提供的字节数据。

现在我想到了一个解决方案,那就是对视频进行转码并流式传输输出文件,但它有两个缺点;

  1. 如果文件太大而用户看不到整个视频怎么办?大量 CPU、电池资源被浪费。
  2. 如果用户将长视频快进到尚未重新编码的时间怎么办?

最佳答案

1 MediaCodec 只做一件事解码编码!您将获得新编码数据的原始字节。因此,由程序员选择使用多路复用器将其转储到容器(.mp4 文件)中。所以这里不需要将所有内容重写回文件。

2 寻找合适的数据 block 并重启 MediaCodec。

关于android - 将视频转码以降低比特率并流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811005/

相关文章:

Android Viewpager 如何保存页面状态?

android - AudioTrack 的内存泄漏

android - 更改 MediaFormat 中的旋转

android - 使用 MediaCodec 在 Android 上使用 H264 数据解码 RTP 流

android - 部分信任环境中的异步 CTP

android - MediaCodec 从 RTSP 解码 AAC 音频 block 并播放

android - MediaCodec解码时间计算

Android MediaCodec 不工作

javascript - WebView中的js函数window.innerHeight只返回0?

android - 如何将 XP 点数添加到 Google Play 游戏?