从SD卡创建播放列表并将其发送到Chromecast

时间:2015-08-26 14:15:07

标签: android chromecast playlist

我正在开发一个将播放列表发送到Chromecast的应用程序。 我想从本地媒体(视频,图像)创建播放列表。我的应用程序将从特定文件夹中获取所有视频和图像,它将创建一个播放列表。此播放列表将发送给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();
    }
}

请帮助我,我无法理解该怎么做。

1 个答案:

答案 0 :(得分:0)

你需要:

  • 配置本地服务器按名称提供文件,即如果我想获取名为“video1.mp4”的文件,我需要使用“http://.../video1.mp4”。这允许在需要时访问多个文件。
  • 您需要使用适当的apis创建一个队列:create mediaQueueItems,一个用于播放列表中的每个视频,然后将它们放入一个数组中并使用RemoteMediaPlayer#queueLoad()方法加载它。您可能希望在它们上设置autoplay = true。

您可以查看CastVidoes-android应用的示例;唯一的区别是,您的视频中的网址指向您的嵌入式服务器。