【问题标题】:Get list of files(videos)in JSON file from server and download videos on order and than to play it in order also? [duplicate]从服务器获取 JSON 文件中的文件(视频)列表并按顺序下载视频,而不是按顺序播放? [复制]
【发布时间】:2016-05-19 04:27:25
【问题描述】:

我有一个将文件存储在http://.mysite.com/content/videos 的网络服务 现在我想要在我的 android 应用程序中实现的只是下载用户可以在此服务器上上传的每个视频,这样我就可以从服务器获取一个 json 文件以查看存储了多少视频并在本地下载所有列表,而不是循环播放。 请给我一些代码示例和想法。 这个想法是构建一个 Signage android 客户端。

【问题讨论】:

  • 我想要做的是从服务器获取视频列表并将其下载到本地,而不是在视频播放器上播放,只有在下载首先完成时。
  • 如果你搜索的话,已经有很多答案了。到目前为止你尝试了什么?什么都没有,因为你没有搜索?
  • 我确实搜索过,我在这里写信是为了寻找更好的指南。对不起,我只是一个初学者。如果您能提供更好的解决方案或想法,那就太好了。谢谢。

标签: android json video-streaming local playback


【解决方案1】:

要从 URL 获取 JSON,请参阅我的回答 here

之后,您可以使用this 库下载视频。您还可以串行(一个接一个)或并行下载它们。

用法: 在Application类中初始化下载器:

public XXApplication extends Application{

   @Override
   public void onCreate() {
      super.onCreate();
      FileDownloader.init(this);
   }
}

然后像这样下载。

final FileDownloadListener queueTarget = new FileDownloadListener() {
        @Override
        protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
        }

        @Override
        protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) {
        }

        @Override
        protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
        }

        @Override
        protected void blockComplete(BaseDownloadTask task) {
        }

        @Override
        protected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes, final int soFarBytes) {
        }

        @Override
        protected void completed(BaseDownloadTask task) {
        }

        @Override
        protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {
        }

        @Override
        protected void error(BaseDownloadTask task, Throwable e) {
        }

        @Override
        protected void warn(BaseDownloadTask task) {
        }
    };


for (String url : URLS) {
   FileDownloader.getImpl().create(url)
       .setCallbackProgressTimes(0) 
       .setListener(queueTarget)
       .ready();
}

if(serial){ 
   FileDownloader.getImpl().start(queueTarget, true);
 }

【讨论】:

    最近更新 更多