View unanswered posts | View active topics It is currently 14 Dec 2017, 09:10



Reply to topic  [ 1 post ] 
 Γράφοντας ήχο και βίντεο 
Author Message
Site Admin
User avatar

Joined: 24 May 2008, 23:50
Posts: 626
Location: Athens
Post Γράφοντας ήχο και βίντεο
Η εγγραφή ήχου και βίντεο είναι λίγο πιο πολύπλοκη διαδικασία απο την αναπαραγωγή τους όπως θα περιμέναμε, αλλά είναι εξίσου απλή. Πρέπει απλά να γίνει ακόμα ενα βήμα.

1. Δημιουργήστε ενα στιγμιότυπο της κλασης android.media.MediaRecorder χρησιμοποιώντας την new

2. Δημιουργήστε ενα στιγμιότυπο της κλασης android.content.ContentValues και βάλτε του κάποιες στανταρ τιμές όπως: TITLE, TIMESTAMP, και το πιο σημαντικό: MIME_TYPE

3. Δημιουργήστε ένα μονοπάτι που θα αποθηκευτούν τα δεδομένα (μπορείτε να χρησιμοποιήσετε το android.content.ContentResolver για να δημιουργήσετε μια καταχόρηση στο Content database και να το αφήσετε να σας δίνει ένα μονοπάτι αυτόματα κάθε φορά που το χρησιμοποιείτε.)

4. Προαιρετικά (αν και συνίσταται) για βίντεο, δημιουργήστε ενα Preview display σε ενα view surface στο UI του activity, ώστε να μπορείτε να δείτε τι καταγράφετε. Χρησιμοποιείστε το MediaRecorder.setPreviewDisplay()

5. Για το βίντεο, θέστε την πηγή του βίντεο χρησιμοποιώντας την μέθοδο MediaRecorder.setVideoSource(). Το πιθανότερο είναι να θέλετε να χρησιμοποιήσετε το MediaRecorder.VideoSource.CAMERA

6. Για τον ήχο, θέστε την πηγή του ήχου χρησιμοποιώντας την μέθοδο MediaRecorder.setAudioSource(). Το πιθανότερο είναι να θέλετε να χρησιμοποιήσετε το MediaRecorder.AudioSource.MIC

7. Θέστε το format του αρχείου, το μέγεθος του βίντεο και το frame rate με τις εξής μεθόδους:
* MediaRecorder.setOutputFormat()
* MediaRecorder.setVideoSize()
* MediaRecorder.setVideoFrameRate()

8. Θέστε τον encoder του ήχου (και πιθανώς του βίντεο):
* MediaRecorder.setAudioEncoder()
* MediaRecorder.setVideoEncoder()

9. Τέλος, καλέστε τις μεθόδους prepare() και start() για την εγγραφή. Καλέστε τις stop() και release() όταν τελειώσετε.

Εδώ ένα παράδειγμα κώδικα που θα σας βοηθήσει:
Code:
    recorder = new MediaRecorder();
    ContentValues values = new ContentValues(3);

    values.put(Video.MediaColumns.TITLE, SOME_NAME_HERE);
    values.put(Video.MediaColumns.TIMESTAMP, System.currentTimeMillis());
    values.put(Video.MediaColumns.MIME_TYPE, recorder.getMimeContentType());
   
    contentResolver = new ContentResolver();
   
    Uri base = Video.Media.INTERNAL_CONTENT_URI;
    Uri newUri = contentResolver.insert(base, values);
   
    if (newUri == null) {
        // need to handle exception here - we were not able to create a new
        // content entry
    }
   
    String path = contentResolver.getDataFilePath(newUri);

    // could use setPreviewDisplay() to display a preview to suitable View here
   
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoSize(176, 144); // QCIF
    recorder.setVideoFrameRate(15);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(path);
   
    recorder.prepare();
    recorder.start();

Code:
    recorder.stop();
    recorder.release();

_________________
Chief Software Engineer @ PinApps.com
Κωνσταντίνος Πολυχρόνης http://www.kospol.gr
Πρόσθεσε την εφαρμογή σου: http://greekandroidapps.gr/


01 Jul 2008, 11:22
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 1 post ] 

Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware.