我正试图将视频从火柴库加载到ExoPlayer的回收器视图中。但问题是,视频有时不播放,如果我按下播放按钮,它会给我下面的错误。
Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.MTK.VIDEO.DECODER.AVC......在将播放机设置为player视图之前,我尝试在/之前调用release()方法,但没有发生任何更改。
我已经浪费了超过5天的时间来解决这个问题,我找不到任何解决办法。
有什么ExoPlayer的替代方法可以将视频从火场加载到回收者的视野?
代码的一部分来自onBindViewHolder在我的回收Adpater:
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ExoPlayer player = new ExoPlayer.Builder(context).build();
MediaItem mediaItem = MediaItem.fromUri(postList.get(position).getImgUrl());
player.setMediaItem(mediaItem);
player.prepare();
videoViewHolder.andExoPlayerView.setPlayer(player);
}和我正在初始化视图内部的playerView,如下所示:
public VideoViewHolder(@NonNull View itemView) {
super(itemView);
andExoPlayerView = itemView.findViewById(R.id.andExoPlayerView);
........
}发布于 2022-03-27 19:27:31
当回收器视图被回收时,我不得不释放播放器。
我从这个问题中找到答案,here
@Override
public void onViewRecycled(@NonNull ViewHolder holder) {
int position = holder.getAdapterPosition();
if (mDataset.get(position) != null) {
mDataset.get(position).getPlayer().release();
}
super.onViewRecycled(holder);
}https://stackoverflow.com/questions/71300753
复制相似问题