我使用转换软件把RMVB转成了mp4,mp4文件在模拟器和平板上都能播放,但把这个mp4放到服务器上,然后通过下载的手段完成下载后,就提示不能放了! 我不甘心,我把下载后的mp4文件再从模拟器里pull到PC上,也能播放,然后我对比了下载mp4的字节数和原生mp4的字节数,是一样的,困扰我一天多了,求各位大神看看,下面是下载线程代码: /**
 * 类名:LoadMusicRunnable
 * 描述:下载音乐文件
 * */
class LoadMusicRunnable implements Runnable
{
private String fileName;
private String songName;
private String filepath;
private String url;

private int fileLength = 0;
private int readNum = 0;
private int position = 0;
private double step = 0;
private int size = 0;
private String ResultMsg = "";
private boolean finished = false;

private Handler handler = null;

public LoadMusicRunnable(String UrlPath,String folder,String filename,String songname)
{
url = UrlPath + folder + filename;
fileName = filename;
songName = songname;
}
public void run() {
try {
URL Url = new URL(url);
URLConnection conn = Url.openConnection();
conn.connect();
InputStream inputStream = conn.getInputStream();
fileLength = conn.getContentLength();
step = fileLength / 100;
if (fileLength <= 0)
{
ResultMsg = "无法获取文件大小,下载失败!";
sendMsg();
return;
}
if (inputStream == null)
{
ResultMsg = "无法获取文件,下载失败!";
sendMsg();
return;
}
filepath = KCloudActivity.instance.getPath()+"/music/"+fileName;
FileOutputStream outFile = new FileOutputStream(filepath);
byte buffer[] = new byte[1024];
while ((readNum = inputStream.read(buffer)) != -1)
{
outFile.write(buffer, 0, readNum);
size += readNum;
double fsize = step*(position+1);
if (size >= fsize)
position += 1;
//发送数据
ResultMsg = "正在下载";
sendMsg();
}
inputStream.close();
finished = true;
ResultMsg = "下载完成";
sendMsg(); } catch (IOException e) {
// TODO Auto-generated catch block
ResultMsg = e.getMessage();
sendMsg();
}
}

private void sendMsg()
{
if (handler != null)
{
Message msg = new Message();
Bundle b = new Bundle();
b.putString("msg", ResultMsg);
b.putInt("position", position);
b.putString("songname", songName);
b.putString("path", filepath);
msg.setData(b);
handler.sendMessage(msg);
}
}
}