2017-01-04 2 views
1

Ich habe eine Datenbank in MySQL erstellt und hinzugefügt Videos als Blobs. Ich versuche herauszufinden, wie ich diese Videos jetzt in meiner Android-Anwendung abspielen kann, indem ich mich mit der Datenbank verbinde und sie basierend auf ihrer ID abspiele. Ich weiß nicht einmal, wo ich damit anfangen soll. Ich habe online geschaut und es gibt keine Tutorials, wie man ein Video aus einer MySQL-Datenbank spielt. Wenn jemand ein nützliches Tutorial dazu kennt, wäre das sehr hilfreich oder wenn sie es mir erklären könnten.Wie man ein Video von einer MySQL-Datenbank in Android

Ich habe bereits versucht, eine grundlegende Login-Android-App zu erstellen, um zu versuchen und zu verstehen, wie man Informationen in eine Datenbank bekommt und posten kann. Unten ist der Code dafür. Aber wie gesagt, es gibt keine Anleitungen, wie ich Videos aus einer Datenbank abspielen könnte. Wenn also jemand weiß oder mir zeigen könnte, wie ich diesen Code modifizieren kann, um Videos aus der Datenbank herunterzuladen, wäre das auch sehr hilfreich.

public class MainActivity extends AppCompatActivity { 

    EditText ET_NAME,ET_PASS; 
    String login_name, login_pass; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ET_NAME = (EditText)findViewById(R.id.user_name); 
     ET_PASS = (EditText)findViewById(R.id.user_pass); 
    } 

    public void userLogin(View view){ 
     login_name = ET_NAME.getText().toString(); 
     login_pass = ET_PASS.getText().toString(); 
     String method = "login"; 
     BackgroundTask backgroundTask = new BackgroundTask(this); 
     backgroundTask.execute(method, login_name,login_pass); 
    } 
} 



public class BackgroundTask extends AsyncTask<String, Void, String> { 
    Context context; 
    AlertDialog alertDialog; 

    BackgroundTask(Context context){ 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     alertDialog = new AlertDialog.Builder(context).create(); 
     alertDialog.setTitle("login info..."); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String login_url = "http://192.168.157.1/login.php"; 
     String method = params[0]; 

     if(method.equals("login")){ 
      String login_name = params[1]; 
      String login_pass = params[2]; 
      try { 
       URL url = new URL(login_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 
      String data = URLEncoder.encode("login_name", "UTF-8")+"="+URLEncoder.encode(login_name,"UTF-8")+"&"+ 
        URLEncoder.encode("login_pass", "UTF-8")+"="+URLEncoder.encode(login_pass,"UTF-8"); 
       bufferedWriter.write(data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 

       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
       String response = ""; 
       String line = ""; 
       while((line = bufferedReader.readLine()) != null){ 
        response += line; 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       return response; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     alertDialog.setMessage(result); 
     alertDialog.show(); 
    } 
    } 
+4

Dateien nicht in einer Datenbank speichern. http://StackOverflow.com/a/41235395/267540 es ist schlimm genug, um Bilder zu speichern, aber das Speichern von Video ist viel viel viel schlechter – e4c5

+0

Speichern kleiner Dateien (<100k jeder) in einer Datenbank ist in Ordnung, wenn nicht allgemein üblich. Alles Größere ist derzeit eine schlechte Idee. – Strawberry

Antwort

0

Nur oben auf die Kommentare hinzufügen - Sie eine Datenbank wünschen können, so dass Sie Abfragen auf Titel, Schauspieler etc. tun können Benutzer ein Video sie sehen möchten Sie finden.

Normalerweise werden diese "Metadaten" zu den Videos tatsächlich in einer Datenbank zusammen mit einem Link zum Video gespeichert. Das Video selbst wird als Datei gespeichert.

In anspruchsvolleren Lösungen möchten Sie das Video möglicherweise über einen dedizierten Streaming-Server (z. B. http://www.videolan.org/vlc/streaming.html) bereitstellen, sodass Ihr Client auf dem Android-Gerät automatisch eine dämpfende Größe auswählen kann, die der Geräteanzeige und den aktuellen Netzwerkbedingungen entspricht .

In diesem Fall erstellt der Streaming-Server möglicherweise mehrere Versionen des Videos, je nachdem, wie wichtig die Benutzerqualität für Ihre Bereitstellung ist.

Verwandte Themen