php - 如何在android中播放来自mysql数据库的视频

标签 php android mysql database video

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

最佳答案

补充一下上面的评论——你可能需要一个数据库,这样你就可以对标题、 Actor 等进行查询,以帮助用户找到他们想要观看的视频。

通常,这种关于视频的“元数据”确实存储在数据库中,连同视频链接。视频本身存储为一个文件。

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

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

关于php - 如何在android中播放来自mysql数据库的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458362/

相关文章:

Android Glide 错误 : cannot find symbol method crossFade()

php - mysql 不同的语句不起作用

mysql - 这可以在 SQL 中完成吗? - 我可以在 JAVA 中完成 - 计算候补名单

php - 两个不同 div 中没有一定长度的文本

php - 奇怪的 PHP 字符串整数比较和转换

java - 不幸的是MyApp已停止。我该如何解决?

php - 如果包含某些内容不起作用,则删除 mysql 行

php - 使用 Eloquent 更新 MYSQL 中的产品数量

php - 构建 MySQL 表,其中 PLAYLIST 表引用多个 VIDEO id 整数和 USER 表 id

android - RecyclerView 中的 Android Spinners 问题