Главная » Разработка для Android » Предварительный просмотр записываемого видео

0

В процессе записи видео, как правило, не помешает отображать за- писываемую  картинку  в режиме  реального  времени.  Используя метод setPreviewDisplay, вы можете задать объект Surface для показа видеопотока во время записи.

Работает данный подход так же, как воспроизведение видео с помощью

Медиапроигрывателя, описанное ранее в этой главе.

Начните с создания новой Активности, которая включает элемент пользо- вательского интерфейса SurfaceView и реализует интерфейс SurfaceHolder. Callback.

Создав объект SurfaceHolder, передайте его в метод setPreviewDisplay, принадлежащий MediaRecorder, как показано в листинге 11.10.

Как только вы вызовете  метод prepare,  на экране в режиме  реального времени начнет отображаться записываемый видеопоток.

Листинг 11.10.

public class MyActivity extends Activity implements SurfaceHolder. Callback

{

private MediaRecorder mediaRecorder;

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

SurfaceView surface = (SurfaceView)findViewById(R.id.surface); SurfaceHolder holder = surface.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); holder.setFixedSize(400, 300);

}

public void surfaceCreated(SurfaceHolder holder) {

if (mediaRecorder == null) {

try { mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat. DEFAULT);

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder. DEFAULT);

mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder. DEFAULT);

mediaRecorder.setOutputFile("/sdcard/myoutputfile.mp4");

mediaRecorder.setPreviewDisplay(holder.getSurface());

mediaRecorder.prepare();

} catch (IllegalArgumentException e) { Log.d("MEDIA_PLAYER", e.getMessage());

} catch (IllegalStateException e) {

Log.d("MEDIA_PLAYER", e.getMessage());

} catch (IOException e) { Log.d("MEDIA_PLAYER", e.getMessage());

}

}

}

public void surfaceDestroyed(SurfaceHolder holder) {

mediaRecorder.release();

}

public void surfaceChanged(SurfaceHolder holder,

int format, int width, int height) { }

}

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии