Video Aufnahmedauer begrenzen

  • 4 Antworten
  • Letztes Antwortdatum
B

BlupBlup

Ambitioniertes Mitglied
1
Hi,

ich verwende in meiner App ein Intent, um die Videokamera zu starten.
Nachdem der Benutzer ein Video aufgenommen hat, wird die Datei
in einem Verzeichnis des internen Speichers abgelegt, welches ich zuvor
erstellt habe. Direkt nachdem die Aufnahme beendet wurde, wird dem
Benutzer seine Aufnahme vorgespielt.

Meine Frage: Ist es möglich die Aufnahmedauer auf 20 Sekunden zu
beschränken?

Code:
    public void startVideoCamera(View view)
    {
        try
        {
            Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            File file = new File(Environment.getExternalStorageDirectory() + File.separator +  "myVideoDir" + File.separator + "Video" + File.separator + videoNumber + ".mp4");
            Uri uri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            int requestCode = 8;
            this.startActivityForResult(intent, requestCode);
        }
        catch(ActivityNotFoundException e)
        {
            Toast toast = Toast.makeText(this, "Kein Zugriff auf Kamera möglich", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
Code:
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        
    if(requestCode == 8)
        {
            if(resultCode == RESULT_OK)
            {
                this.videoNumber++;
            
                try
                {
                    Intent intent = new Intent();
                    intent.setAction(Intent.ACTION_VIEW);
                    Uri uri = data.getData();
                    intent.setDataAndType(uri, "video/mp4");
                    startActivity(intent);
                }
                catch(ActivityNotFoundException e)
                {
                    Toast toast = Toast.makeText(this, "Bildanzeige Programm nicht installiert", Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
        }
    }
 
Ich habe es wie folgt versucht:

Code:
    public void startVideoCamera(View view)
    {
        try
        {
            Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            File file = new File(Environment.getExternalStorageDirectory() + File.separator +  "coolMINT" + File.separator + "Video" + File.separator + videoNumber + ".mp4");
            Uri uri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 20);
            int requestCode = 8;
            this.startActivityForResult(intent, requestCode);
        }
        catch(ActivityNotFoundException e)
        {
            Toast toast = Toast.makeText(this, "Kein Zugriff auf Kamera möglich", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 20); funktioniert aber irgendwie nicht auf allen Geräten.
Ich habe es auf einem Optimus Speed P990 versucht und auf einem Sony Xperia U. Beide Geräte haben Android 4.0.4 installiert.

Auf dem Xperia Gerät funktioniert der Code. Nach 20 Sekunden wird die Aufnahme beendet.

Auf dem Optimus Gerät funktioniert der Code nicht richtig. Man sieht zwar einen Balken der jede Sekunde aktualisiert wird und voll ist sobald 20 Sekunden aufgenommen wurden, allerdings bricht die Aufnahmen nach 20 Sekunden nicht ab.
 
Hmm.. ich befürchte fast dann geht das auf dem Gerät nicht.
Kann es evtl sein, dass das optimus ne eigene kamera software drauf hat?

Wenn die das extra natürlich ignoriert kannste da nix machen.
 
  • Danke
Reaktionen: BlupBlup
Okay. Aber trotzdem danke für den Tipp.
 
Zurück
Oben Unten