<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DEJA-VUE.NET &#187; Flash Player</title>
	<atom:link href="http://www.deja-vue.net/blog/tag/flash-player/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.deja-vue.net/blog</link>
	<description>Michael Barbero - Flash Applications Engineer / ActionScript Developer Senior / Pixlib Evangelist</description>
	<lastBuildDate>Mon, 21 Jun 2010 07:29:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Le point sur NetStream.close(), le bug Video.smoothing/ Video.clear() et la classe VideoDisplay de LowRA</title>
		<link>http://www.deja-vue.net/blog/fr/2009/05/03/le-point-sur-netstreamclose-le-bug-videosmoothing-videoclear-et-la-classe-videodisplay-de-lowra/</link>
		<comments>http://www.deja-vue.net/blog/fr/2009/05/03/le-point-sur-netstreamclose-le-bug-videosmoothing-videoclear-et-la-classe-videodisplay-de-lowra/#comments</comments>
		<pubDate>Sun, 03 May 2009 12:27:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[LowRA]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Pixlib]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.deja-vue.net/blog/?p=48</guid>
		<description><![CDATA[
Français

Translate original post with Google Translate
Je vais aborder dans cet article une problématique assez récurrente en matière de gestion video en Flash. Les classes concernées sont les classes as3 natives NetStream et Video. Je profiterai de l’ occasion pour vous montrer comment gérer simplement la Vidéo avec la classe VideoDisplay de LowRA (dans son implémentation [...]]]></description>
			<content:encoded><![CDATA[<ul class="lang_switch">
<li class="lang_switch"><a href="http://www.deja-vue.net/blog/fr/2009/05/03/le-point-sur-netstreamclose-le-bug-videosmoothing-videoclear-et-la-classe-videodisplay-de-lowra/"><img src="http://www.deja-vue.net/blog/wp-content/plugins/zdmultilang/flags/fr_FR.png" alt="Français" title="Français" border="0">Français</a></li>
</ul>
<p><a href="http://translate.google.com/translate?u=http%3A%2F%2Fwww.deja-vue.net%2Fblog%2Ffr%2F2009%2F05%2F03%2Fle-point-sur-netstreamclose-le-bug-videosmoothing-videoclear-et-la-classe-videodisplay-de-lowra%2F&#038;hl=en&#038;ie=UTF8&#038;sl=fr_FR&#038;tl=fr_FR">Translate original post with Google Translate</a></p>
<p style="text-align: justify;">Je vais aborder dans cet article une problématique assez récurrente en matière de gestion video en Flash. Les classes concernées sont les classes as3 natives NetStream et Video. Je profiterai de l’ occasion pour vous montrer comment gérer simplement la Vidéo avec la classe VideoDisplay de LowRA (dans son implémentation actuelle).</p>
<p><span id="more-48"></span></p>
<h3>
<p style="text-align: left;margin-top: 30px; margin-bottom: 20px;">Fermer un flux NetStream et arrêter le téléchargement</p>
</h3>
<p style="text-align: justify;">Ce paragraphe ne traite pas d'un bug mais s' attache à vous exposer comment bien utiliser la classe NetStream. 2 cas de figure peuvent se présenter:</p>
<p style="text-align: justify;">1) J’ appel un média et décide de fermer le flux presque immédiatement. Horreur, Je constate que le média continue de se télécharger !</p>
<div style="text-align: center;"><img class="aligncenter" src="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/netstream_close.jpg" alt="" width="500" height="260" style="margin-top: 20px; margin-bottom: 40px;"/></div>
<p style="text-align: justify;">2) Je souhaite réutiliser une instance NetStream et appeler un nouveau média sur celui-ci. Horreur, Je constate que le premier média continue parfois de se télécharger (a priori plateforme Windows uniquement).</p>
<div style="text-align: center;"><img class="aligncenter" src="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/netstream.jpg" alt="" width="500" height="233" style="margin-top: 20px; margin-bottom: 40px;"/></div>
<p style="text-align: justify;">Gérer la vidéo avec une instance NetStream unique peut être  un choix intéréssant si vous êtes en recherche de performance optimale. En effet, la consommation mémoire s’avère être au plus bas et stable dans des conditions de stress tests.</p>
<p style="text-align: justify;">Ceci étant le coût d’ utilisation d'une instance NetStream dédiée (une instance pour chaque nouvel appel vers un média) reste minime dans des conditions d'utilisation classique. Il s'agit de l'implémentation retenue le plus couramment:</p>
<p>- <a title="Akamai Multi Player" href="http://www.openvideoplayer.com" target="_blank">Akamai Multi Player</a>'s VideoController class</p>
<div class="syntax_hilite">
<div id="actionscript-12">
<div class="actionscript"><span style="color: #808080; font-style: italic;">// Handles a successful connection</span><br />
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> connectedHandler<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!_ak || !_ak.<span style="color: #0066CC;">netConnection</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">return</span>;<br />
<span style="color: #66cc66;">&#125;</span></p>
<p>_successfulPort = _ak.<span style="color: #006600;">actualPort</span>;<br />
_successfulProtocol = _ak.<span style="color: #006600;">actualProtocol</span>;<br />
_model.<span style="color: #006600;">debug</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Connected to "</span> + _ak.<span style="color: #0066CC;">netConnection</span>.<span style="color: #006600;">uri</span><span style="color: #66cc66;">&#41;</span>;<br />
_model.<span style="color: #006600;">isLive</span> = _ak.<span style="color: #006600;">isLive</span>;<br />
_ns = <span style="color: #000000; font-weight: bold;">new</span> AkamaiDynamicNetStream<span style="color: #66cc66;">&#40;</span>_ak<span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>- LowRA's VideoDisplay class</p>
<div class="syntax_hilite">
<div id="actionscript-13">
<div class="actionscript">protected <span style="color: #000000; font-weight: bold;">function</span> _load<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> DEBUG <span style="color: #66cc66;">&#41;</span> PixlibDebug.<span style="color: #006600;">DEBUG</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">this</span> + <span style="color: #ff0000;">"._load"</span> <span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> !<span style="color: #0066CC;">getURL</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
PixlibDebug.<span style="color: #0066CC;">ERROR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">this</span> + <span style="color: #ff0000;">" can't play without any valid url property, loading fails."</span> <span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span><br />
_bLoadProblem = <span style="color: #000000; font-weight: bold;">false</span>;<br />
_connection = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">NetConnection</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
_connection.<span style="color: #0066CC;">connect</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">null</span> <span style="color: #66cc66;">&#41;</span>;<br />
_stream = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">NetStream</span><span style="color: #66cc66;">&#40;</span> _connection <span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p style="text-align: justify;">Les exemples qui suivent se baseront sur le choix d’une attribution NetStream  systématique (un nouveau flux pour chaque appel média), non parce que le choix d’ une instance NetStream unique soit moins fiable mais parce qu’ il impose une contrainte ergonomique (interdire toute nouvelle ouverture de flux tant que le média en cours de lecture n'est pas assuré d' être correctement fermé).</p>
<h3>
<p style="text-align: left;margin-top: 30px; margin-bottom: 20px;">S’assurer de la fermeture d’un flux video</p>
</h3>
<p style="text-align: justify;">C’est assez simple en réalité. Pour bien contrôler un objet NetStream il faut respecter le modèle évenementielle. On ecoutera pour ce faire l’évenement NetStatusEvent, en attente du code Play.Start:</p>
<div class="syntax_hilite">
<div id="actionscript-14">
<div class="actionscript">_stream.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>NetStatusEvent.<span style="color: #006600;">NET_STATUS</span>, _onNetStatus<span style="color: #66cc66;">&#41;</span>;<br />
_stream.<span style="color: #0066CC;">play</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">"http://www.deja-vue.net/test/mp4/juno.mp4"</span> <span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _onNetStatus <span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span> : NetStatusEvent <span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>.<span style="color: #006600;">info</span>.<span style="color: #006600;">code</span> <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'NetStream.Play.Start'</span> :<br />
_stream.<span style="color: #0066CC;">close</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #b1b100;">break</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p style="text-align: justify;">On comprendra dès lors que la gestion de la vidéo devient vite compliquée en passant par la manipulation de l’api native puisqu’il faut prendre en charge des callbacks sur chaque nouvelle instance NetStream.</p>
<p style="text-align: justify;">D’ où l’intérêt de passer par un gestionnaire comme la classe VideoDisplay de LowRA précisemment dédiée à cette tache. Son utilisation est assez simple: </p>
<div style="margin-top: 20px; margin-bottom: 40px;"/>
<div class="syntax_hilite">
<div id="actionscript-15">
<div class="actionscript"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">bourre</span>.<span style="color: #006600;">media</span>.<span style="color: #0066CC;">video</span>.<span style="color: #006600;">VideoDisplay</span>;<br />
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">bourre</span>.<span style="color: #006600;">media</span>.<span style="color: #0066CC;">video</span>.<span style="color: #006600;">VideoDisplayEvent</span>;</p>
<p><span style="color: #000000; font-weight: bold;">var</span> _video : VideoDisplay = <span style="color: #000000; font-weight: bold;">new</span> VideoDisplay<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
addChild<span style="color: #66cc66;">&#40;</span>_video.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>_video.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>VideoDisplayEvent.<span style="color: #006600;">onStartStreamEVENT</span>, _onStartStream<span style="color: #66cc66;">&#41;</span>;<br />
_video.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"http://www.deja-vue.net/test/mp4/juno.mp4"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> _onStartStream <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : VideoDisplayEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></div>
<p style="text-align: justify;">A l’ heure ou je publie cet article la classe VideoDisplay ne résout toutefois pas encore la problématique précedemment exposée.</p>
<div style="text-align: center;"><img class="aligncenter" src="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/videodisplay.jpg" alt="" width="500" height="255" style="margin-top: 20px; margin-bottom: 40px;"/></div>
<p style="text-align: justify;">Nul doute que l’ équipe se chargera d’ améliorer l’ implémentation au plus tôt. En attendant je vous propose une solution articulée autour de l’ héritage permettant:<br />
-  d' appeler un nouveau média avec fermeture automatique du flux existant et du téléchargement en cours.<br />
-  de fermer un flux et d' arrêter le téléchargement en cours.</p>
<p>En voici l’ utilisation :</p>
<div class="syntax_hilite">
<div id="actionscript-16">
<div class="actionscript"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">bourre</span>.<span style="color: #006600;">commands</span>.<span style="color: #006600;">CommandManagerMS</span>;<br />
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">bourre</span>.<span style="color: #006600;">commands</span>.<span style="color: #006600;">Delegate</span>;<br />
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">bourre</span>.<span style="color: #006600;">media</span>.<span style="color: #0066CC;">video</span>.<span style="color: #006600;">VideoDisplayEvent</span>;</p>
<p><span style="color: #000000; font-weight: bold;">var</span> vd : VideoDisplayExtended = <span style="color: #000000; font-weight: bold;">new</span> VideoDisplayExtended<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #808080; font-style: italic;">/*DisplayObjectContainer*/</span><span style="color: #66cc66;">&#41;</span>;<br />
vd.<span style="color: #006600;">addVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
vd.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>VideoDisplayEvent.<span style="color: #006600;">onStartStreamEVENT</span>, _onStartStream<span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// tests</span><br />
vd.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span>_sURL1<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;<br />
vd.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span>_sURL2<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;<br />
CommandManagerMS.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">delay</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Delegate<span style="color: #66cc66;">&#40;</span>vd.<span style="color: #0066CC;">load</span>, <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span>_sURL1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #cc66cc;">3000</span><span style="color: #66cc66;">&#41;</span>;<br />
CommandManagerMS.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">delay</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Delegate<span style="color: #66cc66;">&#40;</span>vd.<span style="color: #006600;">closeStream</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #cc66cc;">6000</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p style="text-align: justify;">Voici un exemple avec les sources</p>
<h3></h3>
<div style="text-align: center;">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_basicplayer_1544588103"
			class="flashmovie"
			width="500"
			height="350">
	<param name="movie" value="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/basicplayer.swf" />
	<param name="base" value="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/basicplayer.swf"
			name="fm_basicplayer_1544588103"
			width="500"
			height="350">
		<param name="base" value="http://www.deja-vue.net/blog/wp-content/uploads/2009/05/" />
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object></div>
<a class="downloadlink" href="http://www.deja-vue.net/blog/wp-content/plugins/download-monitor/download.php?id=5" title=" downloaded 133 times" >VideoDisplayExtended.as (133)</a><br />
<a class="downloadlink" href="http://www.deja-vue.net/blog/wp-content/plugins/download-monitor/download.php?id=6" title=" downloaded 147 times" >VideoDisplayTest.zip (147)</a>
<p style="text-align: justify;">Une autre problématique qui revient assez souvent, et pour cause il s’ agit cette fois-ci d’ un problème qui à la peau dure , le vidage d’ un objet Video.</p>
<h3>
<p style="text-align: left;margin-top: 30px; margin-bottom: 20px;">Vidage d' un objet Video avec  Video.clear()</p>
</h3>
<p style="text-align: justify;">Quand je parle d’ un problème qui à la peau dure, je ne plaisante malheureusement pas comme certains d’entre vous le savent sans doute déjà car sa notification (<a href="http://bugs.adobe.com/jira/browse/ASC-3115" target="_blank">ASC-3115</a>, <a href="http://bugs.adobe.com/jira/browse/FP-539" target="_blank">FP-539</a>, <a href="http://bugs.adobe.com/jira/browse/FP-178" target="_blank">FP-178</a>) remonte maintenant à environ un an et reste toujours d' actualité. D’après les ingénieurs en charge de sa résolution, un fix serait prévue seulement pour la prochaine mise à jour majeure du player !</p>
<p style="text-align: justify;">Nous en sommes à la version 10.0.22.87 et rien de nouveau sous le capot...</p>
<p style="text-align: justify;">Mais attachons nous  plutôt à l’origine du problème. Video.clear() nous indique un comportement anormal mais n'en est pas la source. <span style="text-decoration: underline;">Video.smoothing est le véritable levier introduisant le bug</span>.</p>
<p style="text-align: justify;">Dès lors que la propriété smoothing voit sa valeur de départ changé (valeur booléenne positive) la méthode Video.clear() devient inefficace.  Et non seulement Video.clear() échoue mais NetStream.seek() devient lui aussi inopérant sous ces mêmes conditions (vous constaterez en effet qu’un appel seek(0) ne parvient pas à nettoyer l’objet video).</p>
<p>Les deux tests suivants présentent des résultats assez surprenant:</p>
<div class="syntax_hilite">
<div id="actionscript-17">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> _video : <span style="color: #0066CC;">Video</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>_video.<span style="color: #0066CC;">smoothing</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"_video.smoothing:"</span> + _video.<span style="color: #0066CC;">smoothing</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//true</span></p>
<p>_video = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"_video.smoothing:"</span> + _video.<span style="color: #0066CC;">smoothing</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//true ??? </span></div>
</div>
</div>
<p></p>
<p>Pas mal non ?</p>
<p>Et que penser de ceci ?</p>
<div class="syntax_hilite">
<div id="actionscript-18">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> _video1 : <span style="color: #0066CC;">Video</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> _video2 : <span style="color: #0066CC;">Video</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
_video1.<span style="color: #0066CC;">smoothing</span> = <span style="color: #000000; font-weight: bold;">true</span>;</p>
<p><span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"_video2.smoothing:"</span> + _video2.<span style="color: #0066CC;">smoothing</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//true&nbsp; ??? </span></div>
</div>
</div>
<p></p>
<h3>
<p style="text-align: left;margin-top: 30px; margin-bottom: 20px;">Workarounds</p>
</h3>
<p style="text-align: justify;">Il a été suggéré de restaurer la propriété smoothing sur sa valeur initiale (<a href="http://bugs.adobe.com/jira/browse/FP-178" target="_blank">FP-178</a>):</p>
<p style="text-align: justify;">Peut-être ceci a t-il pu fonctionner sous certaines versions antérieures du player mais cela ne marche à priori pas avec les players les plus récents (10.0.12.36 et  10.0.22.87). Si vous êtes plus chanceux vous êtes plus qu’ invité à vous manifester ☺ !<br />
Il nous reste heureusement une alternative, un peu radicale, certes (mais la seule) consistant à détruire et recréer un nouvel objet Video. Voici l’implémentation de cette technique extrait de la classe VideoDisplayExtended précédemment évoquée.</p>
<div class="syntax_hilite">
<div id="actionscript-19">
<div class="actionscript"><span style="color: #808080; font-style: italic;">// VideoDisplayExtended.as</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> removeVideo<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">_target</span>.<span style="color: #006600;">contains</span><span style="color: #66cc66;">&#40;</span>_video<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">_target</span>.<span style="color: #006600;">removeChild</span><span style="color: #66cc66;">&#40;</span>_video<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></p>
<p><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addVideo<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> !<span style="color: #0066CC;">_target</span>.<span style="color: #006600;">contains</span><span style="color: #66cc66;">&#40;</span>_video<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">_target</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>_video<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></p>
<p><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setVideo<span style="color: #66cc66;">&#40;</span>v:<span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_video<span style="color: #66cc66;">&#41;</span> _video.<span style="color: #006600;">attachNetStream</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;<br />
_video = <span style="color: #000000; font-weight: bold;">null</span>;<br />
_video = v;<br />
_video.<span style="color: #006600;">attachNetStream</span><span style="color: #66cc66;">&#40;</span>_stream<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<div class="syntax_hilite">
<div id="actionscript-20">
<div class="actionscript"><span style="color: #808080; font-style: italic;">// basicplayer.fla</span><br />
<span style="color: #000000; font-weight: bold;">function</span> _onStopStream<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : VideoDisplayEvent<span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// …</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>vd.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">smoothing</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
vd.<span style="color: #006600;">removeVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
vd.<span style="color: #006600;">setVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #808080; font-style: italic;">// update position</span><br />
_onMetaData<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;<br />
vd.<span style="color: #006600;">addVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span><br />
vd.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p style="text-align: justify;">Si vous souhaitez conservez la dimension vous devez passer par les propriétés width et height du nouvel objet Video. Le constructor de l' objet Video ne fonctionne qu' une seule fois...</p>
<div class="syntax_hilite">
<div id="actionscript-21">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> _video1 : <span style="color: #0066CC;">Video</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">400</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> _video2 : <span style="color: #0066CC;">Video</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"_video2.width:"</span> + _video2.<span style="color: #0066CC;">width</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">// 500 !</span><br />
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"_video2.height:"</span> + _video2.<span style="color: #0066CC;">height</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">// 400 ! </span></div>
</div>
</div>
<p></p>
<div class="syntax_hilite">
<div id="actionscript-22">
<div class="actionscript"><span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_video.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">smoothing</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
_video.<span style="color: #006600;">removeVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// new Video( _video.getVideo().width, _video.getVideo().height )// not working</span></p>
<p><span style="color: #000000; font-weight: bold;">var</span> v : <span style="color: #0066CC;">Video</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Video</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
v.<span style="color: #0066CC;">width</span> = _video.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">width</span>;<br />
v.<span style="color: #0066CC;">height</span> = _video.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">height</span>;</p>
<p>_video.<span style="color: #006600;">setVideo</span><span style="color: #66cc66;">&#40;</span>v<span style="color: #66cc66;">&#41;</span>;<br />
_video.<span style="color: #006600;">addVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span><br />
_video.<span style="color: #006600;">getVideo</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p style="text-align: justifty;">Bien, j’espère que vous aurez apprécié ces quelques clarifications et apprécierez, pour ceux d’ entre vous qui ne la connaissaient pas encore, l’ utilisation de la classe VideoDisplay de LowRA. Vos remarques sont attendues !</p>
<a class="downloadlink" href="http://www.deja-vue.net/blog/wp-content/plugins/download-monitor/download.php?id=5" title=" downloaded 133 times" >VideoDisplayExtended.as (133)</a><br />
<a class="downloadlink" href="http://www.deja-vue.net/blog/wp-content/plugins/download-monitor/download.php?id=6" title=" downloaded 147 times" >VideoDisplayTest.zip (147)</a>
]]></content:encoded>
			<wfw:commentRss>http://www.deja-vue.net/blog/fr/2009/05/03/le-point-sur-netstreamclose-le-bug-videosmoothing-videoclear-et-la-classe-videodisplay-de-lowra/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
