- 依赖之前编译好的aar:
implementation files('libs/extension-ffmpeg-release.aar')
- 新建FfmpegRenderersFactory,并打开这个扩展:
class FfmpegRenderersFactory extends DefaultRenderersFactory {
public FfmpegRenderersFactory(Context context) {
super(context);
setExtensionRendererMode(EXTENSION_RENDERER_MODE_PREFER);
@Override
protected void buildAudioRenderers(Context context, int extensionRendererMode, MediaCodecSelector mediaCodecSelector, boolean enableDecoderFallback, AudioSink audioSink, Handler eventHandler, AudioRendererEventListener eventListener, ArrayList<Renderer> out) {
out.add(new FfmpegAudioRenderer());
super.buildAudioRenderers(context, extensionRendererMode, mediaCodecSelector, enableDecoderFallback, audioSink, eventHandler, eventListener, out);
- 播放器实例化:
ExoPlayer.Builder(MyApp.instance.applicationContext,new FfmpegRenderersFactory())
- 播放链接:
val url = ""
val mediaItem: MediaItem = MediaItem.fromUri(url)
player.setMediaItem(mediaItem)
player.prepare()
player.play()
ExoPlayer播放器不支持MP2音频格式,在播放视频为MP2音频格式的视频时,在华为悦盒E6108C系列的盒子上没有声音,为解决问题添加ExoPlayer的扩展ffmpeg软解码库,历时4天终于完成
准备:参考ExoPlayer的github文档
git ExoPlayer到本地
windows安装cygwin 参考:https://blog.csdn.net/chunleixiahe/...
ExoPlayer是Google开源的Android平台媒体播放器。 它是Android的MediaPlayer API的替代品。
相比于IJKPlayer,EXOPlayer更易于拓展,功能更多,bug更少。ExoPlayer虽然不支持软解但是为开发者扩展软解预留了接口。
网上竟然搜不到ExoPlayer+软解的扩展实现,那就有必要来一篇了hhh。
预先准备:
1.下载NDK(要下载NDK...
ExoPlayer是一个开源的媒体播放器库,提供了丰富的功能和灵活的扩展性。其中,FFmpeg扩展是ExoPlayer中的一个重要组件。
ExoPlayer的核心功能是播放各种媒体格式的音视频文件,但是它并不直接支持所有的媒体格式。这就是为什么需要FFmpeg扩展的原因。FFmpeg是一个广泛应用于音视频处理领域的开源工具库,它提供了一套强大的功能,包括解码、编码、转码、过滤等。通过集成FFmpeg扩展,ExoPlayer可以充分利用FFmpeg提供的功能来支持更多的媒体格式。
FFmpeg扩展使得ExoPlayer能够在不同的平台上运行,并能够处理各种常见或者特殊的音视频格式。它提供了跟踪最新FFmpeg版本的机制,保证ExoPlayer始终具备对新媒体格式的支持。同时,FFmpeg扩展还提供了配置和优化的选项,开发者可以根据自己的需求进行调整。
通过ExoPlayer和FFmpeg扩展的结合,开发者可以快速实现一个功能强大、灵活可扩展的媒体播放器。无论是播放常见的MP3、MP4文件,还是处理特殊的FLAC、MKV等格式,ExoPlayer都能够应对自如。而且,由于ExoPlayer和FFmpeg扩展是开源项目,开发者可以根据自己的需求进行二次开发,定制化自己的播放器,提供更好的用户体验。
总之,ExoPlayer的FFmpeg扩展是它的一个重要组件,它为ExoPlayer提供了支持更多媒体格式的能力,使得开发者能够更加灵活地定制和扩展一个高性能的媒体播放器。