播放器用的Mediaplayer+ SurfaceView,也曾试过videoview,视频编码是AVC(H264)+分辨率480x384(5:4)+比特率250Kbps+16帧+48Kbps的AAC,格式是mp4。本地播放和在线播放都在4.4环境无法显示画面。4.2中可正常显示。请问这是什么原因?难道是视频编码的问题吗?
核心代码:
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MainActivity extends Activity implements SurfaceHolder.Callback
{
private SurfaceView surfaceView = null ;
private SurfaceHolder surfaceHolder = null ;
private MediaPlayer mp = null ;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
surfaceView = new SurfaceView(this);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);
setContentView(surfaceView);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDisplay(surfaceHolder);
try {
mp.setDataSource("http://124.163.222.143/fcs112.56.com/flvdownload/27/20/139347377958hd.flv.mp4?t=xi6W14l-V4Fd3NidKvHj6g&r=65728&e=1400281981&v=1&s=1&tt=60&sz=2327933&vid=107657129");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
try {
mp. prepareAsync ();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
mp4是支持的吧。
同样的代码在4.2.2的真机上 有图像有声音,但在4.4的机器上只有声音无图像
@magicjym: 如果你的是fly格式的。这种情况就合情合理了。
我想说,会不会是4.4把你那个地址解析为flv了。毕竟这样的结尾是不规范的。.flv.mp4
@angelshelter: 多谢提示,我研究研究
@angelshelter: 但是我把视频放工程内,也是4.4真机中有声音无图像啊
@magicjym: 我回想了下,这个情况我以前遇到过,就是在电脑上的摸拟器会出现有声音无图像的情况,但真机不会出现。
@angelshelter: 再提醒下,可能你下载的那个文件本身就不是mp4的,只是它扩展名是mp4的而以。你去百度下一个真正的mp4格式的小视频,再放到真机里试试。
@angelshelter: 多谢提示,我试试
我 现在 在 开发机顶盒的 项目,也是跟亲一个问题,我把视频放工程内,也是4.4真机中有声音无图像。请问你有解决问题没?!