Possible to play Youtube video in a wp7 app?

2019-01-21 17:50发布

问题:

is it possible to play youtube videos in a wp7 application? I would guess you could retrieve the video file from the youtube api and Perhaps play it using a media element? Any suggestion, tips or resources would be appreciated.

回答1:

That's a great question and really goes to the heart of YouTube's business model, YouTube's API and WP7 Integration.

Short answer: To a limited extend it could be possible to play low-quality videos in WP7.

The first question you should ask yourself is: "What is Google?" The answer is "An Ad serving company". The overwhelming majority of Google & YouTube's revenue stream comes exclusively from advertisements. If you were to take YouTube's content and serve it on your own website/app without any YouTube branding or ads, that would works against their financial business model.

The second question you should ask yourself is: "So how is iPhone showing YouTube videos? And WP7? Or YouTube website itself for that matter?". This goes into the heart of YouTube's media delivery system. YouTube publicly exposes multiple formats from their website. For example format #1 is H263, Format #6 is MPEG and Format #5 is the SWF/FLV content. You can read more about YouTube Formats in their official documentation.

And now, to answer your question. YouTube API only exposes thumbnail size videos for unauthorized 3rd parties and those could potentially be showed in WP7 in-app. However the video quality will be terrible if scaled up for more than 1/4 of the WP7 screen resolution.

I suggest you read through the GData YouTube developer guide for information on the API. I'll do a quick run-through of how to get to those public videos. Personally, I haven't been successful in getting these 3GP videos to work on WP7.

  1. Open up the GData feed for top rated videos: http://gdata.youtube.com/feeds/api/standardfeeds/top_rated

  2. from the < entry /> element find the < id /> element which should have a link to single video GData feed. I picked up this one: http://gdata.youtube.com/feeds/api/videos/dMH0bHeiRNg

  3. find the < media:content /> elements with yt:format attributes.

    < media:content url='http://www.youtube.com/v/dMH0bHeiRNg?f=videos&app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='360' yt:format='5'/>

    < media:content url='rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQnYRKJ3bPTBdBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='360' yt:format='1'/>

    < media:content url='rtsp://v3.cache8.c.youtube.com/CiILENy73wIaGQnYRKJ3bPTBdBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='360' yt:format='6'/>

  4. Open up "VLC Player" with format #6 URL and you should see the RTSP stream player.

** This whole post should be considered "As far as I know". This is all knowledge I gleamed from official YouTube documentation and forums.



回答2:

Quoting from the Windows Phone Developer FAQ

How can I play youtube videos in my app?

Use the WebBrowserTask and open the target URL in the browser; if the youtube app is installed, it will play, if not installed, it will prompt the user to install and then play.



回答3:

No, you can't play it via standard API methods. A similar question was asked before. WP7 currently doesn't have a standard media layer for YouTube videos and you need the YouTube app in order to be able to play those. Unless you want to work on a low level with the encoding format used by YouTube, but then again - you would have to implement a decoding service.