1. Nimm jetzt an unserem Geotel Note - Gewinnspiel teil - Informationen zum Note findest Du hier!
  1. gurkenprinz, 19.05.2010 #1
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    Hallo Leute !!

    Meine App soll Videos zum Streamen zur Verfügung stellen! Da ich mich noch nie damit beschäftigt habe, wollte ich einfach mal ein Video in einer VideoView einbinden. Kann ja net so schwer sein oder ??? Hier mal mein Code:

    Code:
    protected void onCreate(Bundle savedInstanceState) 
        {
            
            super.onCreate(savedInstanceState);
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            this.setContentView(R.layout.videos);
            
            VideoView video = (VideoView)this.findViewById(R.id.video);
            MediaController mediaController = new MediaController(this);
            mediaController.setAnchorView(video);
            video.setMediaController(mediaController);
            video.setVideoPath("W://android_testvideo.3gp");
            video.requestFocus();
    
            video.start();
            
            
        }
    Wenn ich diese Aktivität starte bekomm ich allerdings eine Fehlermeldung ("Dieses Video kann leider nicht abgespielt werden").

    Habs auch schon mit einem Video von einem Webserver probiert.
    Code:
            Uri uri =  Uri.parse("http://....../20100515_dfb-pokal-finals-zwanziger.mp4");
           video.setVideoURI(uri);
    Dann bekomm ich diese Fehlermeldung: "Leider ist dieses Video nicht für Streaming auf diesem Gerät gültig"

    Falls jemand was damit anfangen kann poste ich hier auch noch den Auszug aus der LogCat der angezeigt wird wenn ich die Aktivität starte:

    05-19 08:59:40.729: ERROR/PlayerDriver(57): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus
    05-19 08:59:40.729: VERBOSE/MediaPlayerService(57): [43] notify (0x227e0, 100, 200, -32)
    05-19 08:59:40.729: VERBOSE/MediaPlayer(15803): message received msg=100, ext1=200, ext2=-32
    05-19 08:59:40.739: ERROR/MediaPlayer(15803): error (200, -32)
    05-19 08:59:40.739: VERBOSE/MediaPlayer(15803): callback application
    05-19 08:59:40.739: ERROR/MediaPlayer(15803): Error (200,-32)
    05-19 08:59:40.739: DEBUG/VideoView(15803): Error: 200,-32


    Meine eigentliche Frage ist jetzt: Ist etwas an meinem Programmcode falsch ?? Muss ich irgendwas besonderes beachten ?? Irgendwelche besonderen Permissions setzen ? (Internet Permission ist übrigens gesetzt).

    Oder müssen sich unsere Videomenschen weiter mit der Codierung herumquälen ?? Sie haben mir bereits 3 oder 4 verschiedene Videos zur verfügung gestellt und mit allen is es das selbe Problem.

    lg gurkenprinz
     
    Zuletzt bearbeitet: 19.05.2010
  2. MichaelS, 21.05.2010 #2
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Bei den Beispielen vom SDK, sind sogar 2 arten von abspielen von Videos vorhanden. auch das Streamen von Videos ist dabei. Du solltest dir diese einfach mal ansehen und deine videos mit dieser app einfach testen ;) Du kannst natürlich nicht jedes Format abspielen deswegen einfach mit der app testen...

    Gruß
    Michael
     
  3. gurkenprinz, 26.05.2010 #3
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    danke für die antwort michael.

    nach langem hin und herprobieren hab ich eine Methode gefunden mit der sich die Videos abspielen lassen.

    Allerdings habe ich jetzt das Problem das die Videos erst komplett geladen werden bevor sie abgespielt werden (Dauert bei einem 3min. Video fast eine Minute).

    Hier mal mein Code.

    Code:
    public class ShowVideo extends Activity
    {
        private String path = "";
    
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            this.setContentView(R.layout.video);
            
            Bundle extra = this.getIntent().getExtras();
            if(extra!=null)
            {
                path = extra.getString("videoUrl");
            }
            
            VideoView vv = (VideoView)this.findViewById(R.id.surface);
    
            MediaController mc = new MediaController(this);
            
            vv.setMediaController(mc);
        
            try 
            {
                vv.setVideoURI(Uri.parse(this.getDataSource(path)));
                
            } 
            catch (IOException e) 
            {
                Log.e("IOException", e.getMessage());
            }
    
            vv.start();
            vv.requestFocus();
            
            
        
        }
        
        private String getDataSource(String path) throws IOException 
        {
                Log.v("getDataSource", "start");
               if (!URLUtil.isNetworkUrl(path)) 
               {
                       return path;
               } 
               else 
               {
                    URL url = new URL(path);
                    URLConnection cn = url.openConnection();
                    cn.connect();
                    InputStream stream = cn.getInputStream();
                    if (stream == null)
                    {
                           throw new RuntimeException("stream is null");
                    }
                    File temp = File.createTempFile("mediaplayertmp", "dat");
                    temp.deleteOnExit();
                    String tempPath = temp.getAbsolutePath();
                    FileOutputStream out = new FileOutputStream(temp);
                    byte buf[] = new byte[128];
                    do 
                    {
                        int numread = stream.read(buf);
                        if (numread <= 0)
                            break;
                        out.write(buf, 0, numread);
                    } 
                    while (true);
                    try 
                    {
                        stream.close();
                    } 
                    catch (IOException ex) 
                    {
                        Log.e("error: " + ex.getMessage(), ex.getMessage());
                    }
                    Log.v("getDataSource", "fertig");   
                    return tempPath;
                 
               }
               
        }
    
        
        
    
    }
    
    Das Video lässt sich nur abspielen wenn ich den UrlString vorher in der Methode "getDataSource" verarbeite und dann den neuen String in die VideoView einlese.

    Wenn ich diese Methode nicht verwende und die VideoUrl gleich der VideoView übergebe bekomm ich die Fehlermeldung "Dieses Video ist für Streaming auf diesem Gerät nicht gültig".

    Ich habe die Methode getDataSource aus dem Internet kopiert. Ich versteh sie um ehrlich zu sein gar nicht. Aber sie hat es zumindest mal ermöglicht meine Videos abzuspielen (nach sehr langer ladezeit).

    Kann mir jemand einen Tipp geben wie ich es schaffe, dass die Videos bereits gestartet werden bevor sie fertig geladen sind ??

    Die Videos kommen übrigens aus der selben Quelle wie sie ein Kollege für sein IPhone App verwendet hat. Sie sollten also fürs onlinestreaming gültig sein.

    Besten Dank !!
    lg gurkenprinz
     
  4. Operator, 26.05.2010 #4
    Operator

    Operator Android-Lexikon

    Hi gurkenprinz,

    ein Ausrufezeichen im Thread-Titel hätte auch gereicht ;).
     
Die Seite wird geladen...
Ähnliche Themen - Probleme beim Einbinden Forum Datum
Verständnisprobleme beim Layout Android App Entwicklung 21.02.2017
Probleme beim Encoding einer Textdatei von Windows Android App Entwicklung 25.01.2017
[OFFEN] WebView Probleme Android App Entwicklung Freitag um 23:26 Uhr
[ERLEDIGT] Probleme mit Wear Modul Android App Entwicklung 01.05.2017
[OFFEN] Probleme mit SearchView in ArrayAdapter Android App Entwicklung 28.04.2017
Probleme mit NFC File Transfer Android App Entwicklung 21.01.2017
Layout-Probleme auf verschiedenen Geräten Android App Entwicklung 19.01.2017
AsyncTasks: "FTP Download" / "FTP liste Daten in Verzeichnis" Probleme Android App Entwicklung 16.01.2017
Rendering Probleme Unable to locate mode 0 (dirty solved) Android App Entwicklung 24.10.2016
Probleme mit Android-Studio Android App Entwicklung 07.08.2016

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. video in app einbinden

    ,
  2. videos in android app einbinden

    ,
  3. android video einbinden