android 视频录制和上传,关于android实时视频录制与上传 .
關(guān)于android的實(shí)時視頻錄制現(xiàn)在網(wǎng)上炒的很火,我想把自己學(xué)習(xí)研究的一個視頻錄制的demo 的心得與大家分享一下
使用的是MediaRecorder 以及使用SurfaceView進(jìn)行錄制的。
視頻錄制的部分也比較簡單,直接看API的圖就可以很清楚的知道步驟了。
Android的MediaRecorder包含了Audio和video的記錄功能,在Android的界面上,Music和Video兩個應(yīng)用程序都是調(diào)用MediaRecorder實(shí)現(xiàn)的。
通過操作這個MediaRecorder類就能實(shí)現(xiàn)這個音頻和視頻的錄制。
通過幾個星期的努力做了一個基本成型的東西。可以錄制視頻并且可是實(shí)時的上傳到服務(wù)器端。但是沒有解決實(shí)時的問題,正在研究當(dāng)中。但是在實(shí)時的上傳的時候會遇到很多問題。
1.就是在保存本地的路徑換成Socket android 的IPA可以支持可以用Socket 來傳輸
ParcelFileDescriptor pfd = ParcelFileDescriptor
.fromSocket(receiver);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
只要把參數(shù)換成Socket 就可以。
但是有個問題,可是實(shí)時的傳到服務(wù)器上。有數(shù)據(jù),但是就是不能播放。具體查了好多資料,知道什么原因,但是沒有具體的解決方法,目前正在研究方法中。
1.具體不能播放的原因就是,在視頻的錄制的時候都有個數(shù)據(jù)回寫功能。數(shù)據(jù)回寫就是把視頻一些標(biāo)題數(shù)據(jù)信息,加載到錄制的文件的開頭,要是在錄制視頻沒有這個標(biāo)題頭的話就不能播放視頻,在本地錄制的可以播放,但是用Socket 傳輸?shù)脑捑褪前涯莻€信息數(shù)據(jù)加到文件的后面。導(dǎo)致文件開頭沒有信息無法播放,所以現(xiàn)在正在研究解決方法。
具體實(shí)時的上傳的代碼如下可以參考。
/**
* 實(shí)時上傳到PC端(邊錄邊傳)
*
* @author Administrator 呂俊
*/
private final class ButtonClickListener1 implements View.OnClickListener
{
@Override
public void onClick(View v)
{
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))
{
Toast.makeText(MainActivity.this, R.string.sdcarderror, 1)
.show();
return;
}
try
{
switch (v.getId())
{
case R.id.record:
mediaRecorder.reset();
mediaRecorder
.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 從照相機(jī)采集視頻
//mediaRecorder
//.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mediaRecorder.setVideoSize(480, 320);
mediaRecorder.setVideoFrameRate(3); // 每秒3幀
mediaRecorder
.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); // 設(shè)置視頻編碼方式
//mediaRecorder
//??.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setPreviewDisplay(surfaceView.getHolder()
.getSurface());
// 實(shí)時上傳的代碼
receiver = new Socket("192.168.1.149", 9999);
ParcelFileDescriptor pfd = ParcelFileDescriptor
.fromSocket(receiver);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
mediaRecorder.prepare();// 預(yù)期準(zhǔn)備
mediaRecorder.start();// 開始刻錄
record = true;
break;
case R.id.stop:
if (record)
{
System.out.println(videoFile);
mediaRecorder.stop();
mediaRecorder.release();
receiver.close();
record = false;
}
break;
}
} catch (Exception e)
{
Toast.makeText(MainActivity.this, R.string.error, 1).show();
Log.e(TAG, e.toString());
}
}
}
總結(jié)
以上是生活随笔為你收集整理的android 视频录制和上传,关于android实时视频录制与上传 .的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 8.0 sinffer_jpc
- 下一篇: ajax 链接java_如何使用ajax