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;
}