2015-08-26 2 views
1

Я разрабатываю приложение для отправки плейлиста на Chromecast. Я хочу создать плейлист из местных медиа (видео, изображения). Мое приложение получит все видео и изображения из определенной папки и создаст список воспроизведения. Этот плейлист будет отправлен на Chromecast.Создание плейлиста с SD-карты и отправка его в Chromecast

Как достичь этого, я создал NanoHTTPD-сервер на своем мобильном устройстве. И оттуда показываю видео. Но этот сервер обслуживает только одно видео за раз.

Я хочу обслуживать определенную папку с моего локального сервера, а затем хочу создать список воспроизведения всех видеороликов и изображений, хранящихся в этой папке.

Это мой NanoHTTPD: -

public class WebServer extends NanoHTTPD 

{

public WebServer() throws IOException 
{ 
    super(8089); 
} 

@Override 
public Response serve(String uri, Method method, 
     Map<String, String> header, Map<String, String> parameters, 
     Map<String, String> files) 
{ 
    String answer = ""; 

    FileInputStream fis = null; 
    String path; 
    String fileOutput=""; 
    int counter; 

    try 
    { 
        path = Environment.getExternalStorageDirectory() + "/DCIM/Video/bbb.mp4"; 
        fis = new FileInputStream(path); 
    } 
    catch (Exception e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return new NanoHTTPD.Response(Status.OK, "video/mp4", fis); 
} 
} 

Это, как я кастинг видео: -

private void startVideo() 
{ 
    MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE); 
    mediaMetadata.putString(MediaMetadata.KEY_TITLE, getString(R.string.video_title)); 

    String videoURL = Configuration.video_url; 

    MediaInfo mediaInfo = new MediaInfo.Builder(videoURL) 
    .setContentType(getString(R.string.content_type_mp4)) 
    .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) 
    .setMetadata(mediaMetadata) 
    .build(); 

    Toast.makeText(getApplicationContext(), "Video build " + videoURL, Toast.LENGTH_LONG).show(); 

    try 
    { 
     mRemoteMediaPlayer.load(mApiClient, mediaInfo, true) 
     .setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() 
       { 
      @Override 
      public void onResult(RemoteMediaPlayer.MediaChannelResult mediaChannelResult) 
      { 
       if(mediaChannelResult.getStatus().isSuccess()) 
       { 
        mVideoIsLoaded = true; 
        mButton.setText(getString(R.string.pause_video)); 

        Toast.makeText(getApplicationContext(), "Media loaded successfully", Toast.LENGTH_LONG).show(); 
       } 
      } 
       }); 
    } 
    catch (IllegalStateException e) 
    { 
     Toast.makeText(getApplicationContext(), "Problem occurred with media during loading : " + e, Toast.LENGTH_LONG).show(); 
    } 
    catch (Exception e) 
    { 
     Toast.makeText(getApplicationContext(), "Problem occurred with media during loading : " + e, Toast.LENGTH_LONG).show(); 
    } 
} 

Пожалуйста, помогите мне, я не могу понять что делать.

ответ

0

Вам нужно:

  • Настройте локальный сервер для обслуживания файлов по имени, то есть, если я хочу, чтобы получить файл с именем «video1.mp4», я должен был бы использовать «http://.../video1.mp4». Это позволяет при необходимости иметь несколько файлов.
  • Вам необходимо создать очередь с помощью соответствующего apis: создать MediaQueueItems, по одному для каждого видео в вашем списке воспроизведения, а затем поместить их в массив и загрузить, используя метод RemoteMediaPlayer # queueLoad(). Вы можете установить для них autoplay = true.

Для примера можно посмотреть приложение CastVidoes-android; единственное различие заключалось бы в том, что URL-адреса вашего видео для видео указывают на ваш встроенный сервер.

+0

Спасибо, сэр, что очень помогло мне. Теперь проблема заключается в том, что я отправляю видео и изображения вместе в виде списка воспроизведения. Он воспроизводит мое видео, но когда ему приходится загружать изображение, он садится туда сам. –

+0

API-интерфейсы Queuing, добавленные в SDK, предназначены для видео и аудио элементов; в настоящее время поддержка изображений в очереди отсутствует. Например, видео/аудио элемент в очереди воспроизводится и заканчивается, а затем очередь переходит к следующему элементу; если у вас есть изображение, нет никаких функций «длительности» или «воспроизведения», поэтому нет понятия «перейти к следующему элементу». –

+0

Хорошо, сэр, но есть ли способ достичь этого. Я хочу сказать, что хочу сделать плейлист с видео и изображениями вместе. Поэтому я могу добиться этого любым способом или нет возможности сделать это. –

 Смежные вопросы

  • Нет связанных вопросов^_^