<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Dmitry Andreev : Silverlight</title><link>http://blogs.msdn.com/dmandreev/archive/tags/Silverlight/default.aspx</link><description>Tags: Silverlight</description><dc:language>ru-RU</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Live Broadcast и MediaElement.MarkerReached</title><link>http://blogs.msdn.com/dmandreev/archive/2008/12/06/live-broadcast-mediaelement-markerreached.aspx</link><pubDate>Sat, 06 Dec 2008 23:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9181476</guid><dc:creator>dmandreev</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dmandreev/comments/9181476.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dmandreev/commentrss.aspx?PostID=9181476</wfw:commentRss><description>&lt;P&gt;Многие наверное видели Silverlight Banking Demo и обратили внимание на то как приложение синхронизируется там с видео. &lt;/P&gt;
&lt;P&gt;Для тех кто не видел, расскажу словами. По сценарию пользователь интернет-банка открывает одну из страниц приложения, на которой расположен видео-файл и некоторый набор контролов касательных самого интернет-банкинга. На видео снят вроде как финансовый советник, и он объясняет клиенту, что к чему с его счетом. &lt;/P&gt;
&lt;P&gt;Самым эффектным моментом этой демонстрации является синхронизация, при которой дядечка в видео показывает рукой на элемент приложения и этот графический элемент на знак рукой реагирует. &lt;/P&gt;
&lt;P&gt;Достигается такой эффект подмешиванием в видео-файл специальных маркеров, по сути текстовых строк. И они вместе с потоком идут на клиента, а клиент на Silverlight в свою очередь может на эти маркеры отреагировать, так как запрограммировали. &lt;/P&gt;
&lt;P&gt;Собственно обработчик этот&lt;A href="http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.markerreached(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.markerreached(VS.95).aspx"&gt; MarkerReached&lt;/A&gt; и о нем можно почитать по ссылке. Как создавать такие видеофайлы с маркерами рассказано в этом видео &lt;A href="http://silverlight.net/Learn/learnvideo.aspx?video=263" mce_href="http://silverlight.net/Learn/learnvideo.aspx?video=263"&gt;http://silverlight.net/Learn/learnvideo.aspx?video=263&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Уже на этом месте можно придумать большое количество сценариев, когда плеер реагирует на точное место видео, выводит какие либо дополнительные сообщения и.т.п. В общем, все что может позволить вам ваша фантазия. &lt;/P&gt;
&lt;P&gt;Тут то и возникает соблазн использовать этот механизм в каких нибудь живых (live) трансляциях. &lt;/P&gt;
&lt;P&gt;Представим себе следующую ситуацию. &lt;/P&gt;
&lt;P&gt;Тот же финансовый аналитик ведет в прямом эфире интернет-трансляции обзор рынка. По ходу своего повествования он предлагает зрителям прямо сейчас проголосовать по этому поводу. Режисер на специальном «пульте», по сути кодирующей станции нажимает на кнопку «вывести в плеере кнопки голосования». Приложение которое кодирует видео подмешивает в видео-поток строки с параметрами, тот самый маркер, и наконец, этот видео-поток с маркерами достигает специально написанный на Silverlight плеер который знает что с таким маркером делать, т.е. вывести на экран те самые кнопки голосования. &lt;/P&gt;
&lt;P&gt;Еще раз отмечу, маркеры внутри потока, четко синхронизированы в live режиме с местом видео. Такое технологическое решение какими либо Out of band (OOB) средствами сделать достаточно трудно и это все равно будет подвержено рассинхронизации. &lt;/P&gt;
&lt;P&gt;Надеюсь сценарий понятный. И возможно те кто читает этот пост скажут «Супер, пойду попробую». Не тут то было. &lt;/P&gt;
&lt;P&gt;Expression Encoder которым мы можем вставить маркеры в статическое видео, не будет работать с Live потоком. &lt;/P&gt;
&lt;P&gt;Но выход есть, который этот сценарий реализует на ура. Нужно всего лишь воспользоваться Windows Media Encoder 9.0 SDK. Можно написать приложение которое будет программно конфигурировать encoder, брать источник видео и звука, и подмешивать туда маркеры. &lt;/P&gt;
&lt;P&gt;Ниже приведен исходный текст главной формы такого приложения, для тех кто вдруг попробует это реализовать самостоятельно. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Collections.Generic; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.ComponentModel; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Data; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Drawing; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Linq; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Text; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Windows.Forms; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; WMEncoderLib; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; WMPREVIEWLib; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; LiveBroadcastSample &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MainForm&lt;/SPAN&gt; : &lt;SPAN style="COLOR: #2b91af"&gt;Form &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WMEncoderApp&lt;/SPAN&gt; mainApp = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncoder&lt;/SPAN&gt; enc = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncSourceGroupCollection&lt;/SPAN&gt; srcGrpCol = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncSourceGroup&lt;/SPAN&gt; grp = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncSource&lt;/SPAN&gt; srcAudio = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncVideoSource2&lt;/SPAN&gt; srcVideo = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncSource&lt;/SPAN&gt; srcScript = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: green"&gt;/* &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;IWMEncProfile pro=null; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;IWMEncProfileCollection profColl=null; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;*/ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncBroadcast&lt;/SPAN&gt; brdcst; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncDataViewCollection&lt;/SPAN&gt; DVColl_Preview; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; lPreviewStream = -1; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WMEncDataView&lt;/SPAN&gt; Preview; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncDataViewCollection&lt;/SPAN&gt; DVColl_Postview; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; lPostviewStream; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WMEncDataView&lt;/SPAN&gt; Postview; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; MainForm() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;InitializeComponent(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;mainApp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WMEncoderApp&lt;/SPAN&gt;(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;enc = mainApp.Encoder; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WMEncoder&lt;/SPAN&gt; encoder = (&lt;SPAN style="COLOR: #2b91af"&gt;WMEncoder&lt;/SPAN&gt;)enc; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;encoder.OnAcquireCredentials += &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;_IWMEncoderEvents_OnAcquireCredentialsEventHandler&lt;/SPAN&gt;(encoder_OnAcquireCredentials); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;mainApp.Visible = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcGrpCol = enc.SourceGroupCollection; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;grp=srcGrpCol.Add(&lt;SPAN style="COLOR: #a31515"&gt;"SG_1"&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcAudio = grp.AddSource(&lt;SPAN style="COLOR: #2b91af"&gt;WMENC_SOURCE_TYPE&lt;/SPAN&gt;.WMENC_AUDIO); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcVideo = (&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncVideoSource2&lt;/SPAN&gt;)grp.AddSource(&lt;SPAN style="COLOR: #2b91af"&gt;WMENC_SOURCE_TYPE&lt;/SPAN&gt;.WMENC_VIDEO); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcScript = grp.AddSource(&lt;SPAN style="COLOR: #2b91af"&gt;WMENC_SOURCE_TYPE&lt;/SPAN&gt;.WMENC_SCRIPT); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcAudio.SetInput(&lt;SPAN style="COLOR: #a31515"&gt;"Microphone (2- Microsoft LifeCa"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"Device"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcVideo.SetInput(&lt;SPAN style="COLOR: #a31515"&gt;"Microsoft LifeCam VX-3000"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"Device"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;srcScript.SetInput(&lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"UserScript"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;DVColl_Postview = srcVideo.PostviewCollection; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;Postview = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WMEncDataView&lt;/SPAN&gt;(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;lPostviewStream = DVColl_Postview.Add(Postview); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;grp.set_Profile(&lt;SPAN style="COLOR: #a31515"&gt;"C:\\Program Files\\Windows Media Components\\Encoder\\Profiles\\scriptstream.prx"&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;HttpBroadcast(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: green"&gt;//PushDistrib(); //если передаем сигнал дальше Windows media services 2008 &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;CreatePreview(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncPushDistribution&lt;/SPAN&gt; PushDist=&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: green"&gt;//если передаем сигнал дальше на Windows media services 2008 &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; PushDistrib() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncPushDistribution&lt;/SPAN&gt; PushDist = (&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncPushDistribution&lt;/SPAN&gt;)enc.Broadcast; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;PushDist.ServerName = &lt;SPAN style="COLOR: #a31515"&gt;"192.168.12.45"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;PushDist.PublishingPoint = &lt;SPAN style="COLOR: #a31515"&gt;"pubpointtest"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;PushDist.Template = &lt;SPAN style="COLOR: #a31515"&gt;"pubpoint"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;PushDist.AutoRemovePublishingPoint = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;enc.PrepareToEncode(&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; CreatePreview() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;DVColl_Preview = srcVideo.PreviewCollection; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;Preview = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WMEncDataView&lt;/SPAN&gt;(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncPrePreview&lt;/SPAN&gt; pPrev = (&lt;SPAN style="COLOR: #2b91af"&gt;IWMEncPrePreview&lt;/SPAN&gt;)srcVideo.GetSourcePlugin(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;pPrev.SetCaptureParent((&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;)panelPreview.Handle); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;lPreviewStream = DVColl_Preview.Add(Preview); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; HttpBroadcast() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;brdcst = enc.Broadcast; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;brdcst.set_PortNumber(&lt;SPAN style="COLOR: #2b91af"&gt;WMENC_BROADCAST_PROTOCOL&lt;/SPAN&gt;.WMENC_PROTOCOL_HTTP, 8080); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;enc.PrepareToEncode(&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: green"&gt;//callback авторизация с Windows media services 2008 в случае трансляции на сервер &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; encoder_OnAcquireCredentials(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrRealm, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSite, &lt;SPAN style="COLOR: blue"&gt;ref&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; pvarUser, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;ref&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; pvarPassword, &lt;SPAN style="COLOR: blue"&gt;ref&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; plFlags) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;pvarUser = &lt;SPAN style="COLOR: #a31515"&gt;"Administrator"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;pvarPassword = &lt;SPAN style="COLOR: #a31515"&gt;"Pass@word1"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: green"&gt;//старт кодирования &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; StartButtonClick(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;enc.Start(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: green"&gt;/* &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;IWMEncVideoSource2 s=(IWMencVideoSource2) srcVideo.GetSourcePlugin(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;bugbug &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;Postview.SetViewProperties(lPostviewStream, (int)panel1.Handle); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;Postview.StartView(lPostviewStream); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Consolas"&gt;*/ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; StopEncodingClick(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;enc.Stop(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; SendMessageToStreamButtonClick(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;enc.SendScript(0, txtText.Text, txtMsg.Text); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;} &lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9181476" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dmandreev/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>