1. 程式人生 > >Android 錄製視訊並上傳

Android 錄製視訊並上傳

一、錄製視訊

// 點選“錄製視訊”按鈕

recordVideoButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View view) {

// 將檔案存到指定的路徑
filePath = FILE_DIR + “xxx.mp4”;
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
Uri uri = Uri.fromFile(file);

Intent intent = new Intent();
intent.setAction("android.media.action.VIDEO_CAPTURE");
intent.addCategory("android.intent.category.DEFAULT");

// 自定義輸出位置,這樣可以將視訊存在我們指定的位置
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
startActivityForResult(intent, REQUEST_VIDEO_WITH_CAMERA);
}
});

二、上傳視訊

// 顯示視訊縮圖

private void showVideoThumbail() {

this.videoView.setVisibility(View.GONE);
this.thumbailView.setVisibility(View.VISIBLE);
this.markIcon.setVisibility(View.VISIBLE);

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(filePath,
Thumbnails.MINI_KIND);
this.thumbailView.setImageBitmap(bitmap);

this.thumbailView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
showVideo();
}
});
}

// 播放視訊
private void showVideo() {

this.videoView.setVisibility(View.VISIBLE);
this.thumbailView.setVisibility(View.GONE);
this.markIcon.setVisibility(View.GONE);

MediaController mediaController = new MediaController(this);
this.videoView.setMediaController(mediaController);
this.videoView.setVideoPath(filePath);
mediaController.setMediaPlayer(videoView);
this.videoView.requestFocus();
this.videoView.start();
}

三、上傳視訊

// file是要上傳的檔案

// contentType是型別,我這裡用的是“video/mp4”

// requestURL是檔案上傳請求的URL

private String uploadFile(File file, String contentType, String requestURL) {

String serverResponse = null;
try {
if (!file.exists()) {
return null;
}

this.httpClient = new DefaultHttpClient();

// 為了防止檔案的中文亂碼問題
this.httpClient.getParams().setParameter(
CoreProtocolPNames.HTTP_CONTENT_CHARSET,
Charset.forName("utf-8"));
HttpContext httpContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(requestURL);

// 使用MultipartEntity 來上傳檔案,需要匯入httpmime-4.1.2.jar


MultipartEntity multipartEntity = new MultipartEntity();


// 使用FileBody來傳輸視訊
multipartEntity.addPart("data", new FileBody(file, contentType));


// 上傳
httpPost.setEntity(multipartEntity);
HttpResponse response = this.httpClient.execute(httpPost, httpContext);
serverResponse = EntityUtils.toString(response.getEntity());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return serverResponse;

}