Articles of exoplayer

在ExoPlayer中使用缓存

我正在寻找在ExoPlayer中实现缓存的任何示例。 ExoPlayer在其库中有关于缓存的不同类,Google在此video中解释我们可以使用CacheDataSource类实现它,但Google不提供任何演示。 不幸的是,使用它似乎相当复杂,所以我目前正在寻找示例(在Google上没有成功)。 有没有人成功或有任何有用的信息? 谢谢。

ExoPlayer AudioTrack Stuttering

我有自己的TrackRenderer实现,用于我集成的mp3解码器。 当棒棒糖设备进入待机状态并返回时,它并不总是可重复但音频开始断断续续,直到我强制停止应用程序。 一开始,我认为这是我实现的解码器,所以我尝试将口吃轨道与正常轨道之间的文件输出进行比较。 这些文件是相同的,然后我认为它可能需要很长时间来解码,所以我增加了缓冲区大小并调用了setPlayReady false,以便数据缓冲。 它像我没有停顿一样口吃。 我目前认为问题在于我的音轨实现或操作系统错误。 该错误仅发生在Lollipop设备上。 谢谢。 我的TrackRenderer使用与AudioTrackRenderer相同的工作流程,我自己的原生实现为mp3解码器而不是opus。

Android ExoPlayer:它是否解决了Android Media Player的无缝/无缝播放问题

有没有人尝试使用ExoPlayer来实现这一目标? 我尝试在线查看但没有成功。 当我说无缝播放时,我指的是使用媒体播放器背靠背播放本地video的问题。 在完成第一个video播放后,在第二个video开始之前会有明显的1秒延迟。 希望这个问题有助于进一步理解这个问题。 如需参考,请查看以下问题: Android:MediaPlayer无间隙或无缝video播放

ExoPlayer和start / pause / seekTo命令

我试图使用ExoPlayer ,而不是MediaPlayer ,我似乎无法弄清楚… MediaPlayer有.pause() .start() / .pause()命令……我可以seekTo(1287)并自动开始播放… 如何使用ExoPlayer执行此操作? 我曾尝试过seekTo(1287)但它没有开始播放……之后我也添加了.setPlayWhenReady(true) ,但仍然没有运气…… 我能够.stop() …但是我不能让它在那之后重新开始播放,除非我.prepare()再次…但是我不认为我应该在每次停顿之间做到这一点玩。 我在ExoPlayer演示中使用自己的控件和方法与MediaController相反…我无法看到控件是如何实现的…… 有人建议吗? 编辑: 好的,我想出了停顿并开始…… .setPlayWhenReady(true) // start .setPlayWhenReady(false) // pause 但是我仍然遇到跟踪问题…… .seekTo间歇性地工作……有时它会起作用……但有时候我会收到这个错误: E/AudioTrack: AudioTrack::set : Exit (它只进入缓冲状态……并没有完全达到“准备好”……

在Android中,使用exoplayer,如何使用与设备不具有相同宽高比的video来填充表面视图?

我有一个使用ExoPlayer播放video的活动。 当我全屏时,除非设备的宽高比与video的长宽比相等,否则video的顶部和底部会出现小黑条。 这是布局的样子: <com.google.android.exoplayer.AspectRatioFrameLayout android:id="@+id/video_frame" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentBottom="true"> <SurfaceView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="fill_vertical"/> <View android:id="@+id/shutter" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black"/> </com.google.android.exoplayer.AspectRatioFrameLayout> 我希望那样 aspectRatioFrameLayout.setAspectRatio(mVideo.getAspectRatio()); 会解决问题,但我没有成功。 即使video的一部分从屏幕上切断,是否有办法用video填充屏幕?

如何使用谷歌机器人Exoplayer的广告和video单人播放器

目前在给定的exoplayer演示应用程序谷歌是使用两个exoplayers播放广告和video。 播放前期投放和中期投放广告时,我遇到了video重叠问题。 所以为了避免这种情况,我只想用一个外行人播放广告和video。 有没有人试过使用单个的外行者?

使用Exoplayerstream式video列表

我想实现stream式video列表应用程序。 我用RecyclerView来显示我的列表项。 项目types包括4种types:文章,状态,照片和video。 我们只应该关注videotypes。 这里是我的代码为RecyclerView的适配器: public class FollowedPostAdapter extends RecyclerView.Adapter implements OnFollowTagCallback, OnLikeCallback { private Context context; private List<PostItem> newsFeedList; public RecyclerView recyclerView; public LinearLayoutManager linearLayoutManager; private HashMap<Integer, DemoPlayer> playerList; private int visibleThreshold = 5; // private int previousTotal = 0; private int visibleItemCount, firstVisibleItem, totalItemCount; private boolean loading; private OnRecyclerViewLoadMoreListener loadMoreListener; private final String […]

如何玩多个(在我的情况下最多四个).m3u8videostream在Android单一活动?

自从很长时间以来,我一直在面对这些问题,而且我真的对Android的支持HLS感到失望,因为它performance得过于随机。 要求: 1)播放多个.m3u8videostream 2)应该在不同的设备和API级别上工作。 我所面临的问题和相关问题: 方法 – 1) 与本机MediaPlayer的TextureView : video播放的数量取决于设备,对于某些设备,它只播放一个video(我的设备 – 三星Galaxy Grand-quattro – api level 16),对于某些设备,它可以播放全部四个videostream。 取决于api级别,一些.m3u8 url正在jellybean上工作,但不在kitkat上面。 方法 – 2) ExoPlayer : 方法的相同问题-1 方法 – 3) 维生素 : 成功播放每个.m3u8url 没有suuport多个videoview 方法 – 4) grafika : 它不稳定,但(正如他们所提到的)。 我正在寻求的解决scheme: 1)应该播放多个videostream,与上述任何一种方法一样,我的设备可以播放单个video,但Milestone Mobile似乎能够在我的设备中播放8个videostream(如何?:O)。 2)如果本机MediaPlayer不能播放一些.m3u8url,那么如何debugging是什么确切的问题是不是有一个解码器,解码器,段,TS文件等问题? 3)如果本机MediaPlayer无法播放stream媒体,那么我应该如何制作支持大多数stream媒体URL的自定义MediaPlayer? 4)有没有可能与Vitamio一起播放多个video? 5)参考符合我要求的其他HLS客户? 就我个人而言,我想用方法1去,所以有什么我可以做的吗?

Exoplayer:如何通过耳机播放audio?

我正在使用下面的代码,当设备接近任何对象时,将audiostream切换到耳朵: @Override public void onSensorChanged(SensorEvent event) { if (mAudioManager.isWiredHeadsetOn() || !(mCurrentPlaybackStatus == STATUS_PLAYING || mCurrentPlaybackStatus == STATUS_PREPARING)) { return; } boolean isClose = event.values[0] < mSensor.getMaximumRange(); if (!mScreenDisabled && isClose) { mAudioManager.setMode(AudioManager.STREAM_MUSIC); mAudioManager.setSpeakerphoneOn(false); disableScreen(); mScreenDisabled = true; } else if (mScreenDisabled && !isClose) { mAudioManager.setSpeakerphoneOn(true); mAudioManager.setMode(mAudioManagerMode); enableScreen(); mScreenDisabled = false; } } 不幸的是,在调用.setMode(AudioManager.STREAM_MUSIC);时会有明显的延迟.setMode(AudioManager.STREAM_MUSIC); (> 500ms) […]

尝试使用ExoPlayer – 很多未知的东西

在互联网上没有提到什么在地球上是一个userAgent,我通过什么作为它的价值和用途。 没有文件,没有。 另外,我如何获得“video表示”是什么? // Build the video renderer. DataSource videoDataSource = new HttpDataSource(userAgent, HttpDataSource.REJECT_PAYWALL_TYPES, bandwidthMeter); ChunkSource videoChunkSource = new DashChunkSource(videoDataSource, new AdaptiveEvaluator(bandwidthMeter), videoRepresentations); ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl, VIDEO_BUFFER_SEGMENTS * BUFFER_SEGMENT_SIZE, true); MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(videoSampleSource, null, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 0, mainHandler, playerActivity, 50); // Build the audio renderer. DataSource audioDataSource = new HttpDataSource(userAgent, […]