问题标签 [exoplayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
366 浏览

android - 我应该选择什么表示来配置 ExoPlayer

我正在尝试使用 ExoPlayer 播放具有多种品质的 DASH 视频。

据我所知,DASH 允许我定义几个周期,以及每个周期的几个质量,因此它可以在下一个周期开始时根据网络速度切换质量。

http://developer.android.com/guide/topics/media/exoplayer.html上的教程建议我得到audioRepresentationsvideoRepresentations传递它们。可以使用MediaPresentationDescriptionParser类从 MPD 文件中解析它们。

我的问题是:在 N 个周期和 2 个质量的情况下……我应该只传递两个表示(取自第一个周期,作为样本),还是应该传递所有周期的所有表示的列表?

0 投票
1 回答
2628 浏览

android - Android ExoPlayer 在Android 4.2 版本上播放速度非常快

看起来在 Android 4.2(果冻豆)上使用 ExoPlayer 库有问题。当用于音频目的以流式传输现场音乐时,播放以双倍的速度播放。

我在 Github 上为 ExoPlayer 提出了一个问题,但到目前为止还没有肯定的答复。

任何有任何建议的人都将受到高度赞赏。

谢谢

0 投票
4 回答
7980 浏览

android - ExoPlayer 缓存

我正在准备使用 ExoPlayer 通过 http 播放视频。我想在视频加载后保存视频并从缓存中播放。如何从缓存中实现缓存和回放?可以给我任何样品。

0 投票
1 回答
1252 浏览

h.264 - H.264/MP2T over HTTP ExoPlayer

我正在使用此代码在 ExoPlayer 上使用 HLS 播放简单的 MPEG-TS:

使用这种其他方法:

它不起作用。我得到:

我认为使用单个 MPEG2TS 文件,我可以使用此代码创建单个媒体播放列表,它会起作用,但我不知道该怎么做。

谢谢

0 投票
2 回答
4325 浏览

android - ExoPlayer 不在使用 FFMPEG 的设备上播放音频

我已经设置 ExoPlayer 流式传输音频,它在我拥有的某些设备(例如,我的 Nexus 5)上运行良好,但在其他设备上它根本不播放任何东西。

为了消除我的应用程序的任何问题,我修改了演示应用程序,将“Dizzy”视频更改为我坐在服务器上的随机 MP3。在 DefaultRendererBuilder 中,我还返回了一个空视频轨道渲染器,并且只尝试播放音频。

显然,每个设备都有自己的一组编解码器,所以我怀疑可能是错误的设备正在加载和破坏。我在 ExoPlayer 源代码中看到了几个点,其中解码器是根据 MIME 类型确定的,我认为我已经将其缩小到方法FrameworkSampleSource中的一行prepare

一旦setDataSource被调用,在我正在使用的华为 Mate 7 设备上,一切都崩溃了。看起来MediaExtractor使用 FFMPEG 来提取数据,这似乎不兼容。我测试过的其他设备似乎没有这样做。这是来自 LogCat 的转储

如您所见,它似乎无法正确检测 MIME 类型。如果我传入 EXACT SAME 文件,它是磁盘上的本地版本,它会播放得很好,只是如果它在服务器上就不行。FFMPEG 似乎并不理解 MIME 是什么,而是使用它自己的混蛋“音频/ffmeg”mime。它似乎获得了持续时间等,但无法播放文件。

如果我在 ExoPlayer 上设置一个侦听器,我可以看到它在每个状态中移动——准备、缓冲,但从未准备好。它将从“缓冲”变为“结束”。

虽然我不确定这是 ExoPlayer 特有的问题,但肯定有人遇到过类似的事情吗?这是一个非常基本的用例 - 只需使用线条播放 MP3 -

那里没什么太令人兴奋的。我究竟做错了什么?我能做些什么来解决它?我什至将 "Content-Type": "audio/mpeg" 作为标题传入,但它什么也没做。

0 投票
1 回答
2283 浏览

android - Exoplayer 无法使用 .m3u8 流式传输某些 AAC 编码的音频

我正在将一个音频播放器项目从 Vitamio 移植到 ExoPlayer。我已经能够让它工作,除了我有两个无法播放的音频源。它们与其他可以完美播放的样本之间没有明显的区别。问题不在于样本长度,因为运行时间很长的样本也会播放。以下是示例文件的链接:

http://s3.amazonaws.com/instarad_audio/20/208888/index.m3u8 http://s3.amazonaws.com/instarad_audio/20/208237/index.m3u8

这是错误-->

java.lang.IllegalStateException 在 com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:720) 在 com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer) 的 android.media.MediaCodec.dequeueOutputBuffer(Native Method) .java:420) 在 com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:398) 在 com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:203) 在 android.os.Handler。 dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:157) at android.os.HandlerThread.run(HandlerThread.java:61) at com.google.android.exoplayer.util.PriorityHandlerThread .run(PriorityHandlerThread.java:40)

11-27 17:50:05.423 28529-28571/com.google.android.exoplayer.demo E/OMXNodeInstance﹕缓冲区 h 的 OMX_FreeBuffer

我将这些样本创建为 TYPE_HLS_MEDIA,使用 AUDIO_AAC 编码或 VIDEO_H264。

我最好的猜测是这些样本是以不寻常的采样率记录的,或者它们以某种方式损坏。

所有样本都将通过 .m3u8 格式编码为 AAC 流。还有其他我应该查看的渲染器/编码器吗?

谢谢你,大卫

0 投票
11 回答
33950 浏览

android - 如何实现 oncompletionlistener 来检测 Exoplayer 中媒体文件的结尾

我正在尝试一个接一个地以播放列表的形式播放视频。我正在使用 android Exoplayer 播放我的文件,但 mediaplayer 中没有侦听器来收听媒体文件的结尾。有没有办法使用 exoplayer 收听媒体文件的结尾。

0 投票
8 回答
21352 浏览

android - ExoPlayer 静音

我正在使用名为 ExoPlayer 的 Google 新 MediaPlayer,但找不到静音的方法

有没有一种简单的方法可以在 Google ExoPlayer 上静音音轨?还是改变音量?

0 投票
1 回答
1513 浏览

java - 为什么 MediaExtractor 卡在 setDataSource 上?

我正在尝试使用 ExoPlayer 播放 AAC 流。我在使用内置的 MediaPlayer 时遇到了同样的问题:在 KitCat 上启动需要 15 到 20 秒(可能在其他版本上也会发生同样的情况,但现在没有任何要测试的东西)。

在 ExoPlayer 上,我能够获得一些关于后台发生的事情的信息。

流程卡住MediaExtractor.getDataSource()FrameworkSampleDataSource方法prepare

日志中提到了有关readAt方法超时的内容

我想这可能与缓冲有关,因为 MediaPlayer 有类似的问题。这只发生在真实设备上,模拟器会立即启动。

0 投票
2 回答
2654 浏览

android - 使用 ExoPlayer 的 Android MediaPlayer 持久缓存

我想在我的应用程序中为流式音频数据实现持久缓存。

我搜索了互联网并查看了一些现有的解决方案,其中大多数都需要您创建一个本地代理,它将数据写入缓存并将其提供给 Android 的内置 MediaPlayer。

我终于遇到了 Google 的 ExoPlayer,它似乎完全符合我的要求!我相信为了创建缓存我需要使用 CacheDataSource,但是我不知道如何使用它!

我浏览过 Google 文档和演示应用程序,但它们根本没有提供太多关于缓存的信息。

有人可以帮助我并提供一个例子吗?