在开发中使用的是 饺子播放器(JiaoZiVideoPlayer) ,原来的节操播放器,不得不说确实很多坑在里面,因为项目中使用的是rtmmp格式的播放流,饺子播放器对此支持的不是太好,又因为项目中使用到全局小窗口播放视频,导致每次切换到小窗口的时候都会造成卡顿,黑屏的现象。
以后等有时间,还是会把JiaoZiVideoPlayer 饺子播放器给换掉,用阿里云免费的播放器,或者使用 基于饺子播放器改了又改,改了不认tm的GSYVideoPlayer 这个播放器,确实饺子播放器坑太多了。
下面说正事:
关于JiaoZiVideoPlayer 播放器在播放普通mp4视频的时候会出现本竖着的视频横着播放了,一开始以为视频源就是这样的,没想到好几个都是这样的,在网上搜了下:
写一个类继承JzvdStd,然后重写onInfo方法,
public class JZplayer extends JzvdStd {
public JZplayer(Context context) {
super(context);
}
public JZplayer(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void init(Context context) {
super.init(context);
backButton.setVisibility(GONE);
}
@Override
public void onInfo(int what, int extra) {
super.onInfo(what, extra);
if(what==IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED){
//这里返回了视频的旋转角度,根据角度旋转视频到正确角度
JZMediaManager.textureView.setRotation(extra);
}
}
}
不过我用的是饺子播放器demo里面的JZMediaIjkplayer
这个播放器,故我投机的在这个播放器里的OnInfo方法中进行了判断,没想到也可以用。主要是下面这句:
@Override
public boolean onInfo(final IMediaPlayer iMediaPlayer, final int what, final int extra) {
JZMediaManager.instance().mainThreadHandler.post(new Runnable() {
@Override
public void run() {
if (JzvdMgr.getCurrentJzvd() != null) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
JzvdMgr.getCurrentJzvd().onPrepared();
} else {
if (what == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED) {
// 这里返回了视频的旋转角度,根据角度旋转视频到正确角度
JZMediaManager.textureView.setRotation(extra);
} else {
JzvdMgr.getCurrentJzvd().onInfo(what, extra);
}
}
}
}
});
return false;
}
整个JZMediaIjkplayer类是下面这样的
package com.wuaisport.android.util;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.util.Log;
import android.view.Surface;