2017-01-04 8 views
1

私はmysqlでデータベースを作成し、それにブロブとしてビデオを追加しました。私は今、データベースに接続し、彼らのIDに基づいてそれらを再生することによって、私のアンドロイドアプリケーションでこれらのビデオを再生する方法を把握しようとしています。私はこれをどうやってやるのか、どこから始めたらいいのか分からない。私はオンラインで見ましたが、mysqlデータベースからビデオを再生する方法のチュートリアルはありません。誰かがこれを行う方法に関する有用なチュートリアルを知っていれば、本当に役立つでしょうか、それとも私に説明することができますか?androidのmysqlデータベースからビデオを再生する方法

私は既にデータベースに情報を取得して投稿する方法を理解するために、基本的なログインアンドロイドアプリを作成しようとしました。以下はそのコードです。しかし、私が言ったように、私はデータベースからビデオを再生する方法を見つけることができるチュートリアルはありません。ですから、誰かが私にこのコードを変更して、データベースからビデオをダウンロードする方法を教えてくれれば、それは非常に役に立ちます。

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

データベースにファイルを保存しないでください。 http://stackoverflow.com/a/41235395/267540 画像を保存するには不十分ですが、動画を保存するとはるかに悪くなります – e4c5

+0

データベースに小さなファイル(それぞれ<100k)を保存するのは、一般的ではないにしても大丈夫です。現在のところ大きなものは悪い考えです。 – Strawberry

答えて

0

上記のコメントに追加するだけで、タイトル、俳優などを検索してユーザーが視聴したい動画を見つけられるようにすることができます。

通常、ビデオに関するこの「メタデータ」は、ビデオへのリンクとともにデータベースに格納されます。ビデオ自体はファイルとして保存されます。

もっと洗練されたソリューションでは、専用のストリーミングサーバー(例:http://www.videolan.org/vlc/streaming.html)を使って実際にビデオを配信することができます。これにより、Androidデバイス上のクライアントは、デバイスの表示と現在のネットワーク条件。

この場合、ストリーミングサーバーは実際に展開するユーザーの品質の重要度に応じて、複数のバージョンのビデオを実際に作成する場合があります。

関連する問題