【问题标题】:how to play a video from a mysql database in android如何在android中播放来自mysql数据库的视频
【发布时间】:2017-05-18 10:07:34
【问题描述】:

我在 mysql 中创建了一个数据库,并将视频作为 blob 添加到其中。我试图通过连接到数据库并根据他们的 id 播放它们来弄清楚如何在我的 android 应用程序中播放这些视频。我什至不知道从哪里开始我可能会如何做到这一点。我在网上看过,没有关于如何从 mysql 数据库播放视频的教程。如果有人知道有关如何执行此操作的任何有用的教程,这将非常有帮助,或者他们是否可以向我解释。

我已经尝试创建一个基本的登录 Android 应用程序来尝试了解如何获取信息并将信息发布到数据库。下面是它的代码。但正如我所说,没有关于如何从数据库播放视频的教程。因此,如果有人知道或可以告诉我如何修改此代码以从数据库下载视频,那也将非常有帮助。

 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();
    }
    }

【问题讨论】:

  • 不要将文件保存在数据库中。 stackoverflow.com/a/41235395/267540 保存图片已经够糟糕了,但是保存视频更糟糕
  • 在数据库中保存小文件(每个

标签: php android mysql database video


【解决方案1】:

只是添加到上面的 cmets - 您可能需要一个数据库,以便您可以查询标题、演员等,以帮助用户找到他们想要观看的视频。

通常,这些关于视频的“元数据”确实存储在数据库中,以及指向视频的链接。视频本身存储为文件。

在更复杂的解决方案中,您可能希望通过专用的流媒体服务器(例如http://www.videolan.org/vlc/streaming.html)实际提供视频,这将允许您在 Android 设备上的客户端自动选择与设备显示和当前网络相匹配的流媒体大小条件。

在这种情况下,流媒体服务器实际上可能会创建多个版本的视频,具体取决于用户质量对您的部署的重要性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多