2010-10-27 2 views
0

Я пытаюсь создать приложение, которое записывает видео и сохраняет файлы в виде таблицы. Я хочу видеть предварительный просмотр в каждой ячейке, и когда я нажимаю на ячейку, начинает воспроизводиться видео, которое было ранее записано и хранится здесь. Каков наилучший способ сделать это, и если есть какие-либо учебники или видеоуроки, может ли кто-то перенаправить меня туда?Запись видео?

+0

Как раз немного сузить область возможностей, вы хотите написать программу, которая делает это? Если да, то какой язык программирования вам наиболее удобен? Вам нужен элемент управления, который может выполнять большую часть сложного видео в вашей программе. Или вы хотите создать готовое программное обеспечение, которое делает это и прост в использовании? –

+0

В каком формате находятся ваши видеофайлы? – drudge

+0

Возможный дубликат [Основное описание того, как записывать видео в iOs 4] (http://stackoverflow.com/questions/3173822/basic-description-on-how-to-record-video-in-ios-4) –

ответ

0

Вот код для записи видео:

package milos.stackVideo; 



import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.ContentValues; 
import android.content.Context; 
import android.content.Intent; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.media.CamcorderProfile; 
import android.media.MediaPlayer; 
import android.media.MediaRecorder; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.provider.Settings; 
import android.util.Log; 
import android.view.MenuItem; 
import android.view.SurfaceHolder; 
import android.view.SurfaceHolder.Callback; 
import android.view.Menu; 
import android.view.SurfaceView; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 


public class EnregistrementVideoStackActivity extends Activity implements Callback { 
private SurfaceHolder surfaceHolder; 
private SurfaceView surfaceView; 
public MediaRecorder mrec = new MediaRecorder(); 
private Button startRecording = null; 
//private Button stopRecording = null; 
File video; 
private Camera mCamera; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.camera_surface); 
    Log.i(null , "Video starting"); 
    startRecording = (Button)findViewById(R.id.buttonstart); 
    mCamera = Camera.open(); 
    surfaceView = (SurfaceView) findViewById(R.id.surface_camera); 
    surfaceHolder = surfaceView.getHolder(); 
    surfaceHolder.addCallback(this); 
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
} 




@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
menu.add(0, 0, 0, "StartRecording"); 
menu.add(0, 1, 0, "StopRecording"); 
return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
switch (item.getItemId()) 
{ 
case 0: 
try { 

startRecording(); 

} catch (Exception e) { 
String message = e.getMessage(); 
Log.i(null, "Problem Start"+message); 
mrec.release(); 
} 
break; 

case 1: //GoToAllNotes 
mrec.stop(); 
mrec.release(); 
mrec = null; 
break; 

default: 
break; 
} 
return super.onOptionsItemSelected(item); 
} 



protected void startRecording() throws IOException 
{ 


    mrec = new MediaRecorder(); // Works well 
    mCamera.unlock(); 

    mrec.setCamera(mCamera); 

    mrec.setPreviewDisplay(surfaceHolder.getSurface()); 
    mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 

    mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
    mrec.setPreviewDisplay(surfaceHolder.getSurface()); 
    mrec.setOutputFile("/sdcard/zzzz.3gp"); 

    mrec.prepare(); 
    mrec.start(); 

} 

protected void stopRecording() { 
    mrec.stop(); 
    mrec.release(); 
    mCamera.release(); 
    } 

private void releaseMediaRecorder(){ 
    if (mrec != null) { 
     mrec.reset(); // clear recorder configuration 
     mrec.release(); // release the recorder object 
     mrec = null; 
     mCamera.lock();   // lock camera for later use 
    } 
} 

private void releaseCamera(){ 
    if (mCamera != null){ 
     mCamera.release();  // release the camera for other applications 
     mCamera = null; 
    } 
} 


@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 

    if (mCamera != null){ 
     Parameters params = mCamera.getParameters(); 
     mCamera.setParameters(params); 
    } 
    else { 
     Toast.makeText(getApplicationContext(), "Camera not available!", Toast.LENGTH_LONG).show(); 
     finish(); 
    } 

} 


@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    mCamera.stopPreview(); 
    mCamera.release(); 
    // TODO Auto-generated method stub 

} 


} 

Это может быть для кого-то жилым.

Смежные вопросы