android - Android使mp4视频文件更小
问题描述
有没有办法快速实现 mp4 视频文件的大小缩减?比如说,我在设备摄像头上录制了一个全高清视频,我需要通过网络传输它,所以我需要使视频尺寸更小。
我已经阅读了一堆关于MediaCodec
, MediaExtractor
,MediaMuxer
等的文档,但是所有的例子都像几百行代码!我不敢相信没有高级 API 可以做到这一点。
这是一个如何在 iOS 中完成的示例:
let urlAsset = AVURLAsset(url: inputURL, options: nil)
exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetMediumQuality)
exportSession.outputURL = outputURL
exportSession.outputFileType = AVFileType.mp4
exportSession.shouldOptimizeForNetworkUse = true
exportSession.exportAsynchronously { // DONE! }
就是这样,6行代码!Android中是否有类似的东西?
解决方案
此时,您想要在 AOSP 中实现的目标没有更高的抽象级别。如果您不想尝试MediaCodec
等,则可以使用一些库。
例如, Transcoder看起来是一个很有前途的项目。它使用我自己使用的策略。就像让编解码器失败而不是事先假设会发生什么。它还提供了许多非标准操作。
我不隶属于该项目,我自己也没有使用它
推荐阅读
- c# - C#如何产生返回SelectMany?
- json - 错误:{"obj.overallCount":[{"msg":["error.path.missing"],"args":[]}]}
- javascript - ng-repeat 用于多个``元素AngularJS
- c++ - winAPI FindResource 仅在 DLL 内返回 NULL
- python - 使 SQLAlchemy 在连接中使用所需的表
- ios - react-native iOS原生模块:异步激活网络指示器的调用方法
- python - 构建模块目录的正确方法是什么,以便 Sphinx 扩展 autodoc 可以访问使用 sphinx-apidoc 找到的所有文件?
- javascript - 赛普拉斯 - 在页面导航之前测试点击事件
- javascript - jQuery插件验证的远程方法问题
- android - 如何防止 HorizontalScrollView 的滚动/翻转焦点更改?