2010-10-21 11 views
11

Può Android MediaRecorder acquisire video con una risoluzione superiore a 320*240?Problema con Android MediaRecorder setVideoSize()

Quando ho utilizzato MediaRecorder::setVideoSize() per impostare le dimensioni del video, il video catturato era tutto alla risoluzione di 320*240. Cosa ancora peggiore, quelli più alti non possono ottenere un video chiaro, erano in qualche modo verdastri. (Encoder utilizzato è h263, formato è mpeg4)

versione Android usata qui è 1.6

La prego chiunque darmi una mano?

risposta

2

Per prima cosa si desidera determinare cosa supporta la fotocamera. Prova:

  List<String> anti = params.getSupportedAntibanding(); 
    List<String> color = params.getSupportedColorEffects(); 
    List<String> focus = params.getSupportedFocusModes(); 
    List<String> flash = params.getSupportedFlashModes(); 
    List<Size> previewSize = params.getSupportedPreviewSizes(); 
    List<Size> sizes = params.getSupportedPictureSizes(); 
    List<Integer> frameRates = params.getSupportedPreviewFrameRates(); 
    List<Integer> pictureFormats = params.getSupportedPictureFormats(); 
    List<String> scene = params.getSupportedSceneModes(); 
    List<String> white = params.getSupportedWhiteBalance(); 

Questo vi dirà tutti i parametri supportati della fotocamera. Secondo Accertarsi di aver inizializzato correttamente il MediaRecorder per consultare la documentazione di google per l'ordine in cui è necessario impostare il MediaRecorder. Inoltre, se Camera.setPreviewSize e MediaRecorder.setVideoSize sono diversi, può causare comportamenti strani.

+0

Spero solo che avrebbero scriverlo (circa VideoSize e PreviewSize) sul loro documentazione API. – artsylar

+0

non è setVideoSize() chiama semplicemente setPreviewSize()? Significativo, avranno ancora lo stesso valore alla fine fintanto che il video è una delle dimensioni di anteprima supportate. – artsylar

+0

Che cosa sono i "parametri"? I parametri – Felix

7

Ho riscontrato un problema simile a quello descritto qui. Ho scoperto che dovevo ristrutturare leggermente il mio codice prima di poter regolare le dimensioni del video.

L'importante è che setVideoSize() venga chiamato prima di setVideoEncoder(). Non riesco a trovare questo nella documentazione, tuttavia ha risolto i miei problemi con l'impostazione di una risoluzione video specifica. Ricorda inoltre che setOutputFormat() deve essere chiamato prima di setVideoSize().

Come nota a margine, lo stesso vale per setVideoFrameRate(). Se non viene chiamato prima di setVideoEncoder() non avrà alcun effetto.

Questo è stato testato con Android 2.3.3

Ecco un esempio di codice:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
recorder.setVideoSize(640,480); 
recorder.setVideoFrameRate(30); 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
+2

Questo mi dà l'errore 'E/MediaRecorder: avvio non riuscito: -19'. –

+0

Questa risposta merita più upvotes – Bhargav

Problemi correlati