These are the slides that accompany R Blank's session from Adobe MAX 2011, 'Delivering the Best Flash HD Video'.
Video in Flash just keeps getting better and better. Now, with the recent releases of Adobe Flash Player, you can deliver even higher quality HD video to a much wider audience. Using the new Stage Video feature, you can deliver the best possible viewing experience, of the highest quality HD video content — while reducing processor usage by up to 85%!
Come join R Blank as he dives into the new feature of Stage Video, how it works, and how to optimize your content for Stage Video delivery. As well, Blank will cover the AS3 APIs for Stage Video, illustrating how to write your ActionScript code to utilize this new feature.
Even better, Blank will cover how to use the Open Source Media Framework (OSMF, www.osmf.org), which includes native support for Stage Video, making it incredibly easy for any user of Flash to start harnessing the amazing playback powers of Stage Video in Flash Player.
The portion on the AS3 APIs is intended for Flash ActionScript coders. The remainder of this talk is for ALL audiences, including designers, developers, and anyone who works with video in Flash.
200. Thank You
Personal Blog | http://rblank.com
Online Training | http://richmediainstitute.com
Hinweis der Redaktion
load:\n\nquicktime (with a video in it)\nadobe media encoder (with a video in it)\nffmpegx (with a video in it)\nactivity monitor\nflash pro (for publish settings)\nsimple demo and complex demo AS files\n\n\nhave ready:\nstage video demo (if internet access)\nstrobe setup.html\n\n\n
I’m R Blank\nI’m the CTO at almer/blank\nwe’re an Adobe Solution Partner for the Flash Platform\nbased here, in Venice Beach, California\n\nand we craft outstanding digital experiences for Fortune 500 companies\n\nsuch as these...\n
in addition to my work at almer/blank\n\n...\n\nI’m also the co-founder and training director at the Rich Media Institute, an Adobe Authorized Training Center, with live workshops and specialized online training in Adobe Flash and other digital media technologies\n\n...\n\nas well I teach, write and speak for numerous outlets including....\n\n...\n\nso what is this talk about?\n
in addition to my work at almer/blank\n\n...\n\nI’m also the co-founder and training director at the Rich Media Institute, an Adobe Authorized Training Center, with live workshops and specialized online training in Adobe Flash and other digital media technologies\n\n...\n\nas well I teach, write and speak for numerous outlets including....\n\n...\n\nso what is this talk about?\n
before I begin\nI would like to request that everybody take the time to fill out the session scorecard at the end\nI read through all feedback very closely and try very hard to incorporate it into my talks\nthe more feedback you give me, the better my talks are\n\n\n
getting your viewers the best quality video content possible, in Flash, on all the devices that Flash supports\n\nAdobe has just improved the quality of the spectacular, pixel-drenched HD video that you can deliver in your Flash apps and movies\nand I’m going to explain what that is, how it works, and how you can get the most out of it\n\nand again, this is for all devices that Flash reaches...\n\nwhich devices?\n\n
well, of course, mac and pc desktops\n\n
android tablets, phones and set-top boxes\n\nand\n
iPads, iPhones, and iPods\n
the blackberry playbook\n
and samsung TVs as well as set-top boxes from other manufacturers\n\njust take a moment to digest this landscape\nthere is no other single technology (except, of course, for in-browser HTML) that you can use to reach all of these platforms, operating systems and devices\n\nnow, because StageVideo is still being rolled out\nstill isn’t incorporated into AIR for desktop (Mac and PC)\n\nStageVideo only works on Android Honeycomb and later\n\nand, in general, as I’ll explain in a little bit\nthe power of StageVideo isn’t necessarily always going to be available to you\ndepending on the hardware, software, configuration, and what else is happening on the device\n\nthat said, StageVideo...>\n\n\n\n
\n
\n
\n
\n
\n
\n
so, to explain how to optimize your HD video delivery in Flash, let’s start with stage video\n\nwhich is the name of the newest feature in Flash that helps improve video performance\n\nAvailable in FP 10.2 that gets you\n...\n\n[in Flash] on every device that Flash runs on\n\nfor years, video quality was limited more by:\n- bandwidth\n- video compression format options\n- computing power\n\nnow, those aren’t really limitations anymore\nso Flash taps into the improvements of computing power and video compression formats\nto send better, fatter videos down the pipe \n\n
so, to explain how to optimize your HD video delivery in Flash, let’s start with stage video\n\nwhich is the name of the newest feature in Flash that helps improve video performance\n\nAvailable in FP 10.2 that gets you\n...\n\n[in Flash] on every device that Flash runs on\n\nfor years, video quality was limited more by:\n- bandwidth\n- video compression format options\n- computing power\n\nnow, those aren’t really limitations anymore\nso Flash taps into the improvements of computing power and video compression formats\nto send better, fatter videos down the pipe \n\n
so, to explain how to optimize your HD video delivery in Flash, let’s start with stage video\n\nwhich is the name of the newest feature in Flash that helps improve video performance\n\nAvailable in FP 10.2 that gets you\n...\n\n[in Flash] on every device that Flash runs on\n\nfor years, video quality was limited more by:\n- bandwidth\n- video compression format options\n- computing power\n\nnow, those aren’t really limitations anymore\nso Flash taps into the improvements of computing power and video compression formats\nto send better, fatter videos down the pipe \n\n
so, to explain how to optimize your HD video delivery in Flash, let’s start with stage video\n\nwhich is the name of the newest feature in Flash that helps improve video performance\n\nAvailable in FP 10.2 that gets you\n...\n\n[in Flash] on every device that Flash runs on\n\nfor years, video quality was limited more by:\n- bandwidth\n- video compression format options\n- computing power\n\nnow, those aren’t really limitations anymore\nso Flash taps into the improvements of computing power and video compression formats\nto send better, fatter videos down the pipe \n\n
so, to explain how to optimize your HD video delivery in Flash, let’s start with stage video\n\nwhich is the name of the newest feature in Flash that helps improve video performance\n\nAvailable in FP 10.2 that gets you\n...\n\n[in Flash] on every device that Flash runs on\n\nfor years, video quality was limited more by:\n- bandwidth\n- video compression format options\n- computing power\n\nnow, those aren’t really limitations anymore\nso Flash taps into the improvements of computing power and video compression formats\nto send better, fatter videos down the pipe \n\n
so, to explain how to optimize your HD video delivery in Flash, let’s start with stage video\n\nwhich is the name of the newest feature in Flash that helps improve video performance\n\nAvailable in FP 10.2 that gets you\n...\n\n[in Flash] on every device that Flash runs on\n\nfor years, video quality was limited more by:\n- bandwidth\n- video compression format options\n- computing power\n\nnow, those aren’t really limitations anymore\nso Flash taps into the improvements of computing power and video compression formats\nto send better, fatter videos down the pipe \n\n
launch the performance demo\n...\n\n\nhow does Stage Video achieve these improvements in video playback?\n\n\n
by trimming overhead \n\n...\n\nand tapping into hardware acceleration\n\nso let’s approach these one at a time\n\nfirst, what does overhead savings mean?\n\n\n
by trimming overhead \n\n...\n\nand tapping into hardware acceleration\n\nso let’s approach these one at a time\n\nfirst, what does overhead savings mean?\n\n\n
before Stage Video was introduced, a video in Flash is just like any other object in Flash --\n-- it can be animated, tweened, shaded, transformed and otherwise manipulated\n-- and thus it must be rendered to the screen like all other objects in Flash\n\nTo support that level of creative control, Flash Player must do a significant amount of processing for each video frame. Depending on the power of the viewing device, this may force Flash to drop frames, significantly impairing the viewing experience.\n\nbut, the vast majority of video-on-the-web doesn’t need any fancy Flash treatment\n-- it’s just a rectangle that needs to refresh as frequently as possible\n\nso, if all you are doing is delivering a regular, rectangular video, \nand you don’t want all that extra overhead from Flash to weigh down your video playback,\nand you want to render the video as well as the viewing device can support, \nyou use Stage Video which skips all of that overhead\n\nthis does limit what you can do with the video (which I’ll discuss later in this talk), but it gets you much higher video performance.\n\nso, just like you can choose to use a sprite does less than a movieclip, and doesn’t bring all the overhead of a movieclip\nstagevideo does less than Video object video, but also has less overhead.\nand thus improves the performance\n\nthat’s what we mean by reducing overhead\nso next we have...>\n
that was trimming overhead\nI mentioned that the second way Stage Video improves playback is by using hardware acceleration\n\nwhat does that actually mean?\n\nhardware acceleration means that Flash is relying on the device hardware (as opposed to the Flash software) for help in accelerating the performance of Flash -- in the case of Stage Video, we’re talking specifically about video playback performance.\n\nfor those who don’t know, hardware is much more powerful than software for this type of task. For years, Flash didn’t tap into any native device hardware (remember the default of 12 fps?); but in more recent versions they have, giving us much better performance.\n\nIn this case, there’s a little video decoder on most every graphics card in every computer; Flash is now asking that little video decoder for help decoding and rendering the video to the screen -- \nthis accelerates video playback -- and therefore improves the quality of the video that you can deliver in Flash.\n\nStage Video is the latest hardware acceleration enhancement in Flash -- the history of hardware acceleration in the Flash Player goes back a few versions.\n\n\n
that was trimming overhead\nI mentioned that the second way Stage Video improves playback is by using hardware acceleration\n\nwhat does that actually mean?\n\nhardware acceleration means that Flash is relying on the device hardware (as opposed to the Flash software) for help in accelerating the performance of Flash -- in the case of Stage Video, we’re talking specifically about video playback performance.\n\nfor those who don’t know, hardware is much more powerful than software for this type of task. For years, Flash didn’t tap into any native device hardware (remember the default of 12 fps?); but in more recent versions they have, giving us much better performance.\n\nIn this case, there’s a little video decoder on most every graphics card in every computer; Flash is now asking that little video decoder for help decoding and rendering the video to the screen -- \nthis accelerates video playback -- and therefore improves the quality of the video that you can deliver in Flash.\n\nStage Video is the latest hardware acceleration enhancement in Flash -- the history of hardware acceleration in the Flash Player goes back a few versions.\n\n\n
that was trimming overhead\nI mentioned that the second way Stage Video improves playback is by using hardware acceleration\n\nwhat does that actually mean?\n\nhardware acceleration means that Flash is relying on the device hardware (as opposed to the Flash software) for help in accelerating the performance of Flash -- in the case of Stage Video, we’re talking specifically about video playback performance.\n\nfor those who don’t know, hardware is much more powerful than software for this type of task. For years, Flash didn’t tap into any native device hardware (remember the default of 12 fps?); but in more recent versions they have, giving us much better performance.\n\nIn this case, there’s a little video decoder on most every graphics card in every computer; Flash is now asking that little video decoder for help decoding and rendering the video to the screen -- \nthis accelerates video playback -- and therefore improves the quality of the video that you can deliver in Flash.\n\nStage Video is the latest hardware acceleration enhancement in Flash -- the history of hardware acceleration in the Flash Player goes back a few versions.\n\n\n
10.3 is not on here, because it doesn’t really have a lot relevant to this slide\nbut Flash Player 11 certainly will\n\nso, as I mentioned, Flash really began as a platform-agnostic technology\nand it wasn’t until the MovieStar release of Flash Player that this really changed\n\nso in 9.0.115 we finally saw hardware acceleration put into the player, but it was really just for full-screen video playback\n\nIn 10.1\nIn Flash Player 10, the software renderer draws individual graphical elements and then the resulting image is composited to the screen by the GPU using the appropriate blend mode.\n\nthe new hardware rendering capability available in Flash Player 10.1 uses the GPU rather than with the software renderer to draw graphics. This shift yields dramatic performance improvements with optimized content. Hardware rendered objects include vector graphics, bitmaps, video, text, and filters. With hardware rendering, the GPU renders and composites graphic elements.\n\nFlash Player 10.1 hardware rendering is automatically enabled on supported devices, and it's not necessary to add the wmode=gpu embed parameter to enable it. However, when working with Flash Player 10.1, the wmode=opaque or wmode=transparent embed parameters will disable hardware rendering, causing the software to render the graphics.\n
I hope that I’ve clearly expressed the benefits and purpose of Stage Video\n -- but just saying that we trim overhead and use hardware acceleration doesn’t really explain the feature or how it works\n\nso, to see how Stage Video works, let’s compare how Flash renders video with, and without, the Stage Video feature \n\nThe OLD (FP10 + 10.1) way\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware decoder, if available.\nThe decoder sends back the raw decoded video to Flash\nFlash composites the video with all of the other non-video visual elements This happens for each frame of the video, assuming there are no skipped frames.\nThe Flash plugin places the composited image into the web browser.\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoders sends decoded video back to Flash\nFlash composites video with other Flash content and renders as image\nImage Sent to Screen\n\n\n
I hope that I’ve clearly expressed the benefits and purpose of Stage Video\n -- but just saying that we trim overhead and use hardware acceleration doesn’t really explain the feature or how it works\n\nso, to see how Stage Video works, let’s compare how Flash renders video with, and without, the Stage Video feature \n\nThe OLD (FP10 + 10.1) way\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware decoder, if available.\nThe decoder sends back the raw decoded video to Flash\nFlash composites the video with all of the other non-video visual elements This happens for each frame of the video, assuming there are no skipped frames.\nThe Flash plugin places the composited image into the web browser.\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoders sends decoded video back to Flash\nFlash composites video with other Flash content and renders as image\nImage Sent to Screen\n\n\n
I hope that I’ve clearly expressed the benefits and purpose of Stage Video\n -- but just saying that we trim overhead and use hardware acceleration doesn’t really explain the feature or how it works\n\nso, to see how Stage Video works, let’s compare how Flash renders video with, and without, the Stage Video feature \n\nThe OLD (FP10 + 10.1) way\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware decoder, if available.\nThe decoder sends back the raw decoded video to Flash\nFlash composites the video with all of the other non-video visual elements This happens for each frame of the video, assuming there are no skipped frames.\nThe Flash plugin places the composited image into the web browser.\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoders sends decoded video back to Flash\nFlash composites video with other Flash content and renders as image\nImage Sent to Screen\n\n\n
I hope that I’ve clearly expressed the benefits and purpose of Stage Video\n -- but just saying that we trim overhead and use hardware acceleration doesn’t really explain the feature or how it works\n\nso, to see how Stage Video works, let’s compare how Flash renders video with, and without, the Stage Video feature \n\nThe OLD (FP10 + 10.1) way\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware decoder, if available.\nThe decoder sends back the raw decoded video to Flash\nFlash composites the video with all of the other non-video visual elements This happens for each frame of the video, assuming there are no skipped frames.\nThe Flash plugin places the composited image into the web browser.\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoders sends decoded video back to Flash\nFlash composites video with other Flash content and renders as image\nImage Sent to Screen\n\n\n
I hope that I’ve clearly expressed the benefits and purpose of Stage Video\n -- but just saying that we trim overhead and use hardware acceleration doesn’t really explain the feature or how it works\n\nso, to see how Stage Video works, let’s compare how Flash renders video with, and without, the Stage Video feature \n\nThe OLD (FP10 + 10.1) way\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware decoder, if available.\nThe decoder sends back the raw decoded video to Flash\nFlash composites the video with all of the other non-video visual elements This happens for each frame of the video, assuming there are no skipped frames.\nThe Flash plugin places the composited image into the web browser.\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoders sends decoded video back to Flash\nFlash composites video with other Flash content and renders as image\nImage Sent to Screen\n\n\n
I hope that I’ve clearly expressed the benefits and purpose of Stage Video\n -- but just saying that we trim overhead and use hardware acceleration doesn’t really explain the feature or how it works\n\nso, to see how Stage Video works, let’s compare how Flash renders video with, and without, the Stage Video feature \n\nThe OLD (FP10 + 10.1) way\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware decoder, if available.\nThe decoder sends back the raw decoded video to Flash\nFlash composites the video with all of the other non-video visual elements This happens for each frame of the video, assuming there are no skipped frames.\nThe Flash plugin places the composited image into the web browser.\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoders sends decoded video back to Flash\nFlash composites video with other Flash content and renders as image\nImage Sent to Screen\n\n\n
The NEW way, with Stage Video\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware H.264 decoder.\nFlash instructs the decoder to render the video directly to the screen.\nFlash renders all of the non-video elements and places them on top of the rendered video.\n\nso, to be clear, because Flash tells the decoder to render directly to the screen,\nStage Video gets you even more power, than plain vanilla hardware acceleration on its own\n\nso invoking hardware acceleration (with WMODE) gets you one level of improvement in video playback performance (decoding), and using Stage Video gets you another level of performance improvement on top of that (rendering)!\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoder renders decoded video directly on screen\nFlash renders other content to browser, above video\n\n\n
The NEW way, with Stage Video\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware H.264 decoder.\nFlash instructs the decoder to render the video directly to the screen.\nFlash renders all of the non-video elements and places them on top of the rendered video.\n\nso, to be clear, because Flash tells the decoder to render directly to the screen,\nStage Video gets you even more power, than plain vanilla hardware acceleration on its own\n\nso invoking hardware acceleration (with WMODE) gets you one level of improvement in video playback performance (decoding), and using Stage Video gets you another level of performance improvement on top of that (rendering)!\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoder renders decoded video directly on screen\nFlash renders other content to browser, above video\n\n\n
The NEW way, with Stage Video\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware H.264 decoder.\nFlash instructs the decoder to render the video directly to the screen.\nFlash renders all of the non-video elements and places them on top of the rendered video.\n\nso, to be clear, because Flash tells the decoder to render directly to the screen,\nStage Video gets you even more power, than plain vanilla hardware acceleration on its own\n\nso invoking hardware acceleration (with WMODE) gets you one level of improvement in video playback performance (decoding), and using Stage Video gets you another level of performance improvement on top of that (rendering)!\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoder renders decoded video directly on screen\nFlash renders other content to browser, above video\n\n\n
The NEW way, with Stage Video\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware H.264 decoder.\nFlash instructs the decoder to render the video directly to the screen.\nFlash renders all of the non-video elements and places them on top of the rendered video.\n\nso, to be clear, because Flash tells the decoder to render directly to the screen,\nStage Video gets you even more power, than plain vanilla hardware acceleration on its own\n\nso invoking hardware acceleration (with WMODE) gets you one level of improvement in video playback performance (decoding), and using Stage Video gets you another level of performance improvement on top of that (rendering)!\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoder renders decoded video directly on screen\nFlash renders other content to browser, above video\n\n\n
The NEW way, with Stage Video\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware H.264 decoder.\nFlash instructs the decoder to render the video directly to the screen.\nFlash renders all of the non-video elements and places them on top of the rendered video.\n\nso, to be clear, because Flash tells the decoder to render directly to the screen,\nStage Video gets you even more power, than plain vanilla hardware acceleration on its own\n\nso invoking hardware acceleration (with WMODE) gets you one level of improvement in video playback performance (decoding), and using Stage Video gets you another level of performance improvement on top of that (rendering)!\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoder renders decoded video directly on screen\nFlash renders other content to browser, above video\n\n\n
The NEW way, with Stage Video\n\nVideo content is downloaded or streamed from content server.\nFlash passes the video bytes directly to the hardware H.264 decoder.\nFlash instructs the decoder to render the video directly to the screen.\nFlash renders all of the non-video elements and places them on top of the rendered video.\n\nso, to be clear, because Flash tells the decoder to render directly to the screen,\nStage Video gets you even more power, than plain vanilla hardware acceleration on its own\n\nso invoking hardware acceleration (with WMODE) gets you one level of improvement in video playback performance (decoding), and using Stage Video gets you another level of performance improvement on top of that (rendering)!\n\n\nVideo downloaded from server\nFlash sends video to decoder\nDecoder renders decoded video directly on screen\nFlash renders other content to browser, above video\n\n\n
\n
Flash no longer has to make any calculations to render the video \nbecause, with stage video, the StageVideo object does not sit inside the Flash Player display list but sits behind the stage instead. \n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
beyond that, there are some limitations to StageVideo\nwhich are intrinsic, given how I’ve just explained StageVideo works\n\n---\nand, remember that stage video will not always be available\ndepending on the platform, the browser, and how your SWF content is set to render\n
it is important, because for StageVideo to work consistently, across platforms, you will need to ensure that your embed code is configured properly\n
WMODE means “window mode” and those of us who’ve been working with Flash since the olden days probably remember WMODE because it’s what we used to embed transparent Flash movies in a browser\n\nNow, with most Flash movies, WMODE doesn’t matter -- you don’t even need to set it, since Flash has a default value.\n\nBut, with the introduction of hardware acceleration in the more recent versions of the Flash Player, WMODE has an increased significance\n\nthere are five possible values for WMODE\n...>\n\n\n
WMODE has 5 possible values -- \n\nnow, WMODE hasn’t always had 5 values -- until a few years ago, there were only 3\nand the default behaviors have also changed over the past few versions\n\nnormal: In this mode we are using plain bitmap drawing functions to get our rasterized images to the screen. On Windows that means using BitBlt to get the image to the screen on OSX we are using CopyBits or Quartz2D if the browser supports it.\n\ntransparent: This mode tries to do alpha blending on top of the HTML page, i.e. whatever is below the SWF will show through. The alpha blending is usually fairly expensive CPU resource wise so it is advised not to use this mode in normal cases. In Internet Explorer this code path does actually not going through BitBlt, it is using a DirectDraw context provided by the browser into which we composite the SWF.\n\nopaque: Somewhat esoteric, but it is essentially like transparent, i.e. it is using DirectDraw in Internet Explorer. But instead of compositing the Flash Player just overwrites whatever is in the background. This mode behaves like normal on OSX and Linux.\n\ndirect: This mode tries to use the fastest path, or direct path, to the screen. In most cases it will ignore whatever the browser would want to do to have things like overlapping HTML menus or such work. A typical use case for this mode is video playback. On Windows this mode is using DirectDraw or Direct3D on Vista, on OSX and Linux we are using OpenGL. Fidelity should not be affected when you use this mode.\n\ngpu: This is fully fledged compositing (+some extras) using some functionality of the graphics card. Think of it being similar to what OSX and Vista do for their desktop managers, the content of windows (in flash language that means movie clips) is still rendered using software, but the result is composited using hardware. When possible we also scale video natively in the card. More and more parts of our software rasterizer might move to the GPU over the next few Flash Player versions, this is just a start. On Windows this mode uses Direct3D, on OSX and Linux we are using OpenGL.\n\n
on a related point...\n\n\nThis means that, to optimize playback, the Flash plugin should not be placed above or below any HTML entities on a web page. \n\n(on some browsers with CoreAnimation like Chrome or Safari or latest versions of Firefox, StageVideo will be available when using wmode=transparent) but because some browsers may not, developers will encounter inconsistencies, so technically StageVideo can work with wmode=transparent but we strongly discourage using it and ask developers to always use wmode=direct.\n
thus far I’ve been talking about the advances in Flash Player hardware acceleration\nbut there’s another side to this -- the media that we use\n\nin terms of optimizing hardware accelerated video playback, not all video is created the same\n\nto put this in context, let’s see what types of video codecs are supported in Flash\n\nfirst, what is a codec\n...>\n
there are a lot of video codecs\nand, many people don’t realize that new ones emerge all the time\nindeed, the improvement in codecs has been a major aspect of the improvement of online video experiences in the past decade\n\nnow...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
with many types of files, all we think about is the format\nfor example, if a file ends with “.mp3” we know it plays MP3 audio content\n\nwith video, it’s a little more complex\n...\n\nso a .MOV file can contain different CODECs, such as H.264 or Apple Intermediate Codec\nand an FLV can contain video compressed with the Spark codec or the VP6 codec\n\nfor example, there are plenty of .mov files that are not H.264; \nsome .mp4 video podcasts are h.264 and some are not\n\nSo you do not necessarily know the codec, from the file name\n\n\n...\nnow getting back to Flash\n\n...>\n
support was added incrementally \n\nthis is included mostly for reference\nbut it’s useful to see how much effort has been put into improving the video experience in Flash over the past several versions\n\nit also helps explain why Flash can play so many different types of video -- again, because each codec was added with a different player version\n\nyou see in version 9.0.115 Adobe added support for H.264 video into the Player -- that was the big one\n\nwhy?\n
when we’re talking about optimizing your video for maximum performance in Flash\nwe’re talking about using the H.264 video codec\n\nIt is important to understand that Stage Video can work with any Flash-supported video codec, \nbut H.264 is StageVideo's best friend to get the full GPU acceleration (decoding+blitting).\n\nwhat is H.264?\nIt is a really popular and flexible video codec\n
unlike many other codecs, which are optimized around one bitrate, h.264 can look good at a wide range of bitrates\n\nfor example, VP6 has a sweet spot around 1mbps\n\nwhereas H.264 looks good \nfrom the tiny\nfor example, cell phones\n\nto the huge\nfor example, high definition Blu-Ray\n\n\n\n\n\n
unlike many other codecs, which are optimized around one bitrate, h.264 can look good at a wide range of bitrates\n\nfor example, VP6 has a sweet spot around 1mbps\n\nwhereas H.264 looks good \nfrom the tiny\nfor example, cell phones\n\nto the huge\nfor example, high definition Blu-Ray\n\n\n\n\n\n
unlike many other codecs, which are optimized around one bitrate, h.264 can look good at a wide range of bitrates\n\nfor example, VP6 has a sweet spot around 1mbps\n\nwhereas H.264 looks good \nfrom the tiny\nfor example, cell phones\n\nto the huge\nfor example, high definition Blu-Ray\n\n\n\n\n\n
unlike many other codecs, which are optimized around one bitrate, h.264 can look good at a wide range of bitrates\n\nfor example, VP6 has a sweet spot around 1mbps\n\nwhereas H.264 looks good \nfrom the tiny\nfor example, cell phones\n\nto the huge\nfor example, high definition Blu-Ray\n\n\n\n\n\n
unlike many other codecs, which are optimized around one bitrate, h.264 can look good at a wide range of bitrates\n\nfor example, VP6 has a sweet spot around 1mbps\n\nwhereas H.264 looks good \nfrom the tiny\nfor example, cell phones\n\nto the huge\nfor example, high definition Blu-Ray\n\n\n\n\n\n
Which is why you encode using the H.264 codec to get the best Flash video\n\nprecisely because many hardware manufacturers have created graphics processors that are optimized to decode and play H.264 video\n\nSince Flash supports H.264, and because so many of the devices we already use are optimized for H.264, Adobe tapped into the powers of the viewer’s device to improve the playback of H.264 video\n\nseen another way, with hardware acceleration there are basically four paths for your video to get to the viewer’s screen\n...>\n
Note that, re: Direct Path, on Mac OS, hardware decoding of the H.264 video stream is available starting only with Snow Leopard, Mac OS 10.6.3.\n\n\n...h264 is so popular\nthat your video may already be h264\nhow can you find out?\n
\n
part of CS\n
there are ports of FFMPEG for many platforms\nFFMPEGx is the port for Mac, which I have installed\n
\n
The Open Source Media Framework is an ActionScript 3 code library, published by Adobe\n\nand before getting into more details, I would like to try to explain it’s position and purpose in the Flash Platform\n
we have the part of the platform that allows people to view Flash content\nthe Flash Player (which remains the most widely distributed piece of software in history) \nand AIR \nfor many devices and OSs\n
we have the set of tools that we use to create Flash content\nFlash Professional to design and animate, \nand Flash Builder to code\n
then, of course, we have our content\nwhich is composed of media assets, like images and videos, and symbols, like movieclips and buttons\n
we combine and work with these assets using ActionScript\n
several years ago, Macromedia introduced the Flex Framework, \nwhich is a set of ActionScript 3 code libraries \nwhich was designed to Accelerate and Standardize\nthe process of coding. \n\nIn particular, Flex is designed to make it easier to work with these symbols, in the context of creating interactive applications\n
more recently, Adobe introduced OSMF, which is a coding framework that standardizes and accelerates the process of working with the other type of content that Flash uses -- media, like images and sound files\n
in this way, OSMF can be seen as completing the Flash Platform\nso much of what we work with in Flash is raw media\nand now we have a coding Framework designed to help us\n\nhelp us do what?\n
specifically, OSMF makes it very easy to...\n\n\n
specifically, OSMF makes it very easy to...\n\n\n
specifically, OSMF makes it very easy to...\n\n\n
specifically, OSMF makes it very easy to...\n\n\n
and when I say “media”, I mean all Flash media types\n\n...why am I covering OSMF here?...\n
and when I say “media”, I mean all Flash media types\n\n...why am I covering OSMF here?...\n
and when I say “media”, I mean all Flash media types\n\n...why am I covering OSMF here?...\n
and when I say “media”, I mean all Flash media types\n\n...why am I covering OSMF here?...\n
and when I say “media”, I mean all Flash media types\n\n...why am I covering OSMF here?...\n
and when I say “media”, I mean all Flash media types\n\n...why am I covering OSMF here?...\n
stage video baked in, out-of-the-box since OSMF 1.6\nmeaning you do not have to do anything else to get the benefits of StageVideo with OSMF\n\n\n
if, for some reason, you wanted to disable Stage Video while using OSMF, you can use this simple, single line of code\n\nsetting enableStageVideo to false \n\n...\n\nand back to true if you wish to enable Stage Video\n\nthat’s the only line of code in all of OSMF that you need for working with Stage Video\n\nand that’s just if you want to disable Stage Video\n\n\n
if, for some reason, you wanted to disable Stage Video while using OSMF, you can use this simple, single line of code\n\nsetting enableStageVideo to false \n\n...\n\nand back to true if you wish to enable Stage Video\n\nthat’s the only line of code in all of OSMF that you need for working with Stage Video\n\nand that’s just if you want to disable Stage Video\n\n\n
\n
\n
if your answer is the FLVPlayback component, you’re way out of date!\n\nbecause Adobe has two new options that, between the two, are powerful, flexible AND simple\n\nthe first is called Strobe\n...>\n
if your answer is the FLVPlayback component, you’re way out of date!\n\nbecause Adobe has two new options that, between the two, are powerful, flexible AND simple\n\nthe first is called Strobe\n...>\n
if your answer is the FLVPlayback component, you’re way out of date!\n\nbecause Adobe has two new options that, between the two, are powerful, flexible AND simple\n\nthe first is called Strobe\n...>\n
Strobe is an open-source fully functional media player, developed by Adobe\n\nStrobe can play any supported Flash media type, or a playlist of different media files\nyou can customize it without knowing any actionscript at all -- just through the embed code\nyou can even skin it with plain images, without any Flash\n\nRemember: Strobe is built on OSMF, so Strobe can do anything that OSMF can do\nand it’s not just video players, but also audio players, image slideshows, and you can mix and match in the same playlist\n\nwhile open-source means that the source code is available, and you can customize to your heart’s desire\nyou don’t have to -- you could just download and use it, without any coding\n\n
easy, point-and-click setup assistant\n\nexposes all variables as simple fields\n\n[...show it...]\n\nfill them in\ncopy the embed code\nand paste it into your site (of course, don’t forget to put your Strobe player up there, too!)\n\nnow you may be thinking to yourself...\n
What if you don’t want to download and learn Strobe?\nWhat if you don’t want to even open Flash Pro?\nwhat if you just want to post a video?\nthat is, you’d like to exploit the benefits of having a fully-functional, pre-built media player, but you don’t want to download any new files, or learn how to customize embed code\n
simply visit this URL\nenter the URL of your video or media\nand customize anything else you want\n\nthen grab the embed code, and paste it into your website or blog\n\n\nso why am I covering OSMF and Strobe here in this talk on Stage Video and HD?\n\n\n
as with OSMF (on which they are built), Strobe Media Playback and Flash Media Playback both automatically support and use StageVideo\nwhat this means is that, if you are using OSMF (and Strobe) 1.6 or later, Flash will utilize Stage Video for video playback, if the viewer’s hardware, browser, wmode and Flash Player version support it\n\nand this is true, whether you use them as-is, or whether you get under the hood and start customizing\n
now, for our final section, we get into a bit of code\nand see how we work with Stage Video in ActionScript 3\n
in ActionScript\nthe StageVideo class replaces the Video class\n(which you are familiar with if you are used to coding with video in Flash)\n\nso we still have the NetConnection and NetStream and they still behave the same way\n\nit’s just that we have a new way of displaying the video\n\n\n
so, instead of attaching our NetStream to our Video object like this\n...\nwe would attach the NetStream to our StageVideo object, like this\n\n...\nso playing video, with StageVideo, is the same as it was before\n\nbut, because of the changes with StageVideo, actually displaying the video is a bit different\n
so, instead of attaching our NetStream to our Video object like this\n...\nwe would attach the NetStream to our StageVideo object, like this\n\n...\nso playing video, with StageVideo, is the same as it was before\n\nbut, because of the changes with StageVideo, actually displaying the video is a bit different\n
but there are some significant differences between the behavior of the Video object and the StageVideo object\n\nlet’s see what some of the key differences are\n
[re: “You do NOT add StageVideo instances to the display list!”]\nremember from the earlier diagram that StageVideo renders beneath the Display List\nthat’s why you don’t add it to the Display List\n\nnow a few key\n
[re: “You do NOT add StageVideo instances to the display list!”]\nremember from the earlier diagram that StageVideo renders beneath the Display List\nthat’s why you don’t add it to the Display List\n\nnow a few key\n
[re: “You do NOT add StageVideo instances to the display list!”]\nremember from the earlier diagram that StageVideo renders beneath the Display List\nthat’s why you don’t add it to the Display List\n\nnow a few key\n
\n
\n
\n
\n
never rely purely on StageVideo\nit may be unavailable\nit may become unavailable\n\nalways include a back-up video\n
never rely purely on StageVideo\nit may be unavailable\nit may become unavailable\n\nalways include a back-up video\n
(Like MovieClip and Video Objects Are)\n\nYou do NOT add StageVideo Instances to the Display List\n\nremember from the earlier diagram that StageVideo renders beneath the Display List\nthat’s why you don’t add it to the Display List\n\nnow a few key\n
(Like MovieClip and Video Objects Are)\n\nYou do NOT add StageVideo Instances to the Display List\n\nremember from the earlier diagram that StageVideo renders beneath the Display List\nthat’s why you don’t add it to the Display List\n\nnow a few key\n
so, how do you access the StageVideo objects that Flash creates for you?\n\nwith the stageVideos vector, which is on the stage\n(if you don’t know, a Vector is just like an Array, but it can contain data of only one type -- in this case, StageVideo objects)\n
so, how do you access the StageVideo objects that Flash creates for you?\n\nwith the stageVideos vector, which is on the stage\n(if you don’t know, a Vector is just like an Array, but it can contain data of only one type -- in this case, StageVideo objects)\n
so, how do you access the StageVideo objects that Flash creates for you?\n\nwith the stageVideos vector, which is on the stage\n(if you don’t know, a Vector is just like an Array, but it can contain data of only one type -- in this case, StageVideo objects)\n
so, how do you access the StageVideo objects that Flash creates for you?\n\nwith the stageVideos vector, which is on the stage\n(if you don’t know, a Vector is just like an Array, but it can contain data of only one type -- in this case, StageVideo objects)\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
just as before\n\nremember, the role and functionality of the netstream does not change!\nit’s the same as it’s been since Flash 7\n
\n
you need to do this, not only to size your video, but to see it at all!\n
because of the timing of the event, and the data it contains, it is useful for a couple of purposes...\n
because of the timing of the event, and the data it contains, it is useful for a couple of purposes...\n
these values are available when the StageVideoEvent fires\n
these values are available when the StageVideoEvent fires\n
these values are available when the StageVideoEvent fires\n
these values are available when the StageVideoEvent fires\n
If you see software decoding, then you can try switching to another video stream—such as H.264 or a stream with different dimensions—to give better chances to have it decoded on the GPU\n\nIf hardware decoding is suddenly unavailable, you can fall back to a non-GPU accelerated codec to force software decoding\n\n
\n
\n
\n
only works on zoomed video\n
only works on zoomed video\n
only works on zoomed video\n
re: depth\nby default, StageVideo instances are rendered in order.\nFirst, Flash renders the 1st StageVideo;\nThen Flash renders the 2nd StageVideo on top of the 1st;\nThen Flash renders the 3rd StageVideo on top of the 2nd;\nAnd so on\nwith the depth property, you can control that\n\nre: colorspaces (not in the AS docs yet)\nthe player will try to match the color space of the StageVideo to the color space of the video stream if possible\nelse, it will use the closest match\nIf "unknown" is returned, the platform does not offer a way to query the actual color space being used.\n\n
re: depth\nby default, StageVideo instances are rendered in order.\nFirst, Flash renders the 1st StageVideo;\nThen Flash renders the 2nd StageVideo on top of the 1st;\nThen Flash renders the 3rd StageVideo on top of the 2nd;\nAnd so on\nwith the depth property, you can control that\n\nre: colorspaces (not in the AS docs yet)\nthe player will try to match the color space of the StageVideo to the color space of the video stream if possible\nelse, it will use the closest match\nIf "unknown" is returned, the platform does not offer a way to query the actual color space being used.\n\n
re: depth\nby default, StageVideo instances are rendered in order.\nFirst, Flash renders the 1st StageVideo;\nThen Flash renders the 2nd StageVideo on top of the 1st;\nThen Flash renders the 3rd StageVideo on top of the 2nd;\nAnd so on\nwith the depth property, you can control that\n\nre: colorspaces (not in the AS docs yet)\nthe player will try to match the color space of the StageVideo to the color space of the video stream if possible\nelse, it will use the closest match\nIf "unknown" is returned, the platform does not offer a way to query the actual color space being used.\n\n
re: depth\nby default, StageVideo instances are rendered in order.\nFirst, Flash renders the 1st StageVideo;\nThen Flash renders the 2nd StageVideo on top of the 1st;\nThen Flash renders the 3rd StageVideo on top of the 2nd;\nAnd so on\nwith the depth property, you can control that\n\nre: colorspaces (not in the AS docs yet)\nthe player will try to match the color space of the StageVideo to the color space of the video stream if possible\nelse, it will use the closest match\nIf "unknown" is returned, the platform does not offer a way to query the actual color space being used.\n\n
properly sized\n\nwith pan and zoom functionality\n\nand some additional info in the trace output\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
so, in summary, the 10 second version of this talk is\n...\n
once again, I would ask that you please take the time to provide feedback on this session with your scorecard\n