2013-04-17 72 views

回答

8

Mirror API没有公布的路线图。我们开发人员预览的一部分动机是弄清楚。

首先,为了澄清,该视频中显示的流媒体是Google+环聊。这是Glass内置的一项功能。

更新:Glass现在支持视频流。你可以找到完整的文档here

要添加一个视频流使用的URL多​​POST到视频的部分之一,是这样的:

POST /upload/mirror/v1/timeline HTTP/1.1 
Host: www.googleapis.com 
Authorization: Bearer {auth token} 
Content-Type: multipart/related; boundary="mymultipartboundary" 
Content-Length: {length} 

--mymultipartboundary 
Content-Type: application/json; charset=UTF-8 

{ "text": "Skateboarding kittens" } 
--mymultipartboundary 
Content-Type: video/vnd.google-glass.stream-url 

http://example.com/path/to/kittens.mp4 
--mymultipartboundary-- 
+1

伟大的问题跟踪器将做的事情。我认为增加在谷歌环聊中推卡的能力会很好。 – djscoutmaster

+0

尝试使用视频/ vnd.google-glass.stream-url时,内容不会播放。显示第一帧,加载动画将永久运行。 任何机会我们可以看到一些代码示例添加到正在实施的文档中? – PrplRugby

+0

@PrplRugby - 我需要更多详细信息来帮助您排除故障。你介意创建一个新的问题,包括你的代码和JSON有效载荷吗? – mimming

1

的Youtube视频流是可能的。我使用“YoutubeExtractor”命名空间在C#.net中完成了它。解析you tube视频中的视频(.mp4)url并进行流式处理。这是代码。它为我工作得很好。当复制该网址时,获取您点击分享后可用的管道链接

private static String youtubevideoStream(MainController controller) 
    { 

     string link = "http://youtu.be/9uYKISlL7Vg"; 
     IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(link); 
     VideoInfo video = videoInfos.First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 360); 
     String vLink = video.DownloadUrl; 


     TimelineItem videocard= new TimelineItem() 
     { 

      Text = "Menu Card", 
      BundleId = "666", 
      Notification = new NotificationConfig() { Level = "DEFAULT" }, 
      MenuItems = new List<MenuItem>() 
            { 
             new MenuItem() {Action = "DELETE"}, 
            } 

     }; 

     String mediaLink = vLink; 

     if (!String.IsNullOrEmpty(mediaLink)) 
     { 
      Stream stream = null; 
      if (mediaLink.StartsWith("/")) 
      { 
       stream = new StreamReader(controller.Server.MapPath(mediaLink)).BaseStream; 
      } 
      else 
      { 
       HttpWebRequest request = WebRequest.Create(mediaLink) as HttpWebRequest; 

       request.UseDefaultCredentials = false; 


       HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

       byte[] b = null; 
       using (Stream streamFromWeb = response.GetResponseStream()) 
       using (MemoryStream ms = new MemoryStream()) 
       { 
        int count = 0; 
        do 
        { 
         byte[] buf = new byte[1024]; 
         count = streamFromWeb.Read(buf, 0, 1024); 
         ms.Write(buf, 0, count); 
        } while (streamFromWeb.CanRead && count > 0); 
        b = ms.ToArray(); 

        stream = new MemoryStream(b); 
       } 
      } 
      controller.Service.Timeline.Insert(videocard, stream, "video/mp4").Upload(); 
     } 
     else 
     { 
      controller.Service.Timeline.Insert(videocard).Fetch(); 
     }