Microsoft User Experience Blog
De <video> tag gebruiken met fallback

Als je al eerder posts op mijn blog hebt gelezen, heb je misschien opgemerkt dat ik recentelijk voor video’s de HTML5 variant gebruik. (Als je het niet hebt gezien heb je waarschijnlijk geen browser die HTML5 ondersteund, dus vlug Internet Explorer 9 installeren :)). Ik kwam de constructie tegen op Channel9 en heb die verder toegepast. Ik dacht dat het misschien handig was om uit te leggen hoe het werkt.

In HTML5 is er nu de <video> tag om video’s te tonen. Daar zitten nog wel wat restricties aan. Zo moet de browser HTML5 ondersteunen en moet door de browser of het operating system de aangeboden codecs (video-formaten) ondersteunen. De simpele vorm hiervan is als volgt:

<video width="400"    
    height="300"    
    src="video.mp4"    
    poster="frame.png"    
    autoplay    
    controls    
    loop>    
</video>

De src property verwijst naar een video-file op een webserver. Je kan dit ook een een <source> tag plaatsen binnen de <video> tag. Er kunnen zelfs meerdere <source> tags worden opgenomen, wat door de browser gebruikt wordt om een optie te vinden die ondersteund wordt. Zo kan je verschillende codecs aanbieden. De meest gebruikte codec is H.264, maar er wordt ook wel gebruik gemaakt van VC-1, Ogg Vorbis en WebM.

De video-tag heeft een soort ingebouwd ‘fallback’ mechanisme. Hij begint bovenaan of dat een optie is die getoond kan worden. Zo niet wordt de volgende geprobeerd, enzovoort. Het mooie van deze constructie is dat je ook een ander stuk HTML kan opnemen als fallback.

Hier een voorbeeld van een fallback zoals die op Channel 9 wordt aangeboden zoals ik die in een eerdere post heb gebruikt. De fallback is een object-tag met een Silverlight applicatie die naar de smooth stream verwijst.

<video poster="http://media.ch9.ms/ch9/0e10/8f3dad24-e925-4494-aabd-9f3d01330e10/MCTSurfacePatty_512_ch9.jpg" controls="">
    <source src="http://media.ch9.ms/ch9/0e10/8f3dad24-e925-4494-aabd-9f3d01330e10/MCTSurfacePatty_low_ch9.mp4">
    <object data="data:application/x-silverlight-2," width="512" type="application/x-silverlight-2" height="288">
        <param name="minRuntimeVersion" value="4.0.50401.0">
        <param name="source" value="http://channel9.msdn.com/scripts/Channel9.xap?v=1.7">
        <param name="initParams" value="mediaurl=http://smooth.ch9.ms/ch9/0e10/8f3dad24-e925-4494-aabd-9f3d01330e10/MCTSurfacePatty.ism/manifest,thumbnail=http://media.ch9.ms/ch9/0e10/8f3dad24-e925-4494-aabd-9f3d01330e10/MCTSurfacePatty_512_ch9.jpg,deliverymethod=adaptivestreaming,autoplay=false,entryid=8f3dad24e9254494aabd9f3d01330e10">
    </object>
</video>

In een andere post heb ik eenzelfde constructie gebruikt in combinatie met een YouTube embedded video als fallback. De fallback zit in dit geval in een iframe-tag.

<video poster="http://blogs.microsoft.nl/blogs/ux/win8-metro-ui.jpg" controls="">
    <source src="http://media.ch9.ms/ch9/cda16b03-c463-47e7-b604-9ef5011c5b25/Demo.mp4">
    <iframe height="345" src="http://www.youtube.com/embed/p92QfWOw88I?rel=0" 
        frameBorder="0" width="560" allowfullscreen="allowfullscreen">
    </iframe>
</video>

Op zich werkt het best aardig zo, maar er zijn zoals altijd voor- en nadelen. Een HTML5 video kan namelijk niet fullscreen worden gemaakt bijvoorbeeld. Daarom zet ik er ook vaak een link bij, zodat iemand de keuze kan maken om het in een ander formaat (Silverlight of Flash) kan zien waarbij fullscreen wel ondersteund wordt.

Als je het verschil in ervaring wil testen in Internet Explorer 9, open dan de Developer Tools in IE (F12) en selecteer Internet Explorer 7 om te zien hoe de pagina werkt in een niet-HTML5 browser.

image

En eigenlijk moet ik een stukje HTML eromheen zetten waarbij de gebruiker ook zelf kan kiezen om af te wijken van de standaard aangeboden oplossing. Smooth streaming in Silverlight bijvoorbeeld levert over het algemeen een betere kwaliteit en ervaring.

En nu maar hopen dat de HTML5 standaard rond video en audio zich ontwikkeld zodat ook DRM en (smooth) streaming ondersteund kunnen worden. Maar ja, je moet altijd wat te wensen hebben.

Windows 8 UI – keuzes maken voor nieuw, oud of beide

Het eerste wat van Windows 8 werd getoond (juni 2011) was de nieuwe user interface die gebaseerd is op Metro. Metro is de design ‘taal’ die ook al op Windows Phone gebruikt wordt. De ‘taal’ bestaat uit een aantal principes die je toepast in de user interface van je applicatie zodat het aansluit bij het gebruik van de rest in de omgeving (Windows 8, Windows Phone, enzovoort). Hieronder het filmpje dat de Windows 8 UI laat zien.

(of bekijk de video op YouTube)

Op de Windows 8 engineering blog is een artikel geplaatst dat verteld welke beslissingen genomen moesten worden rond de user interface van Windows 8. Het idee was om een nieuwe UI te bedenken, gebaseerd op Metro, om beter aan te sluiten bij nieuwe gebruikers, devices, applicaties, enzovoort. Tegelijkertijd zijn miljoenen gebruikers bekend met de Windows UI zoals die nu werkt (WIMP, oftewel Windows Icons, Menu en Pointer). Hoe ga je applicaties als Word, Excel, Outlook, Photoshop, en noem maar op, in een nieuwe omgeving brengen? Is dat wel handig?

Voor dit soort beslissingen staan veel software bouwers, vooral als ze nieuwe versies willen uitbrengen van bestaande software: wanneer kan of moet je drastische wijzigingen aan gaan brengen? En hoe doe je dat zonder je bestaande gebruikers weg te jagen?

Gelukkig wordt user experience steeds belangrijker bij het bouwen van software. Simpel gezegd betekent het dat je primair nadenkt over de gebruiker en wat die met je software wil doen, in plaats van primair na te denken over wat je wilt bouwen en hoe je dat aan wilt bieden. Deze aanpak die steeds belangrijker wordt kan je soms dwingen over de UI na te denken en misschien wel drastische wijzigingen aan te moeten brengen.

Voor Windows 8 is een hele nieuwe UI ontworpen dat verder gaat dan alleen de plaatjes, de visuele effecten en de geluidjes. Er is zelfs een nieuw platform gebouwd waarover op BUILD meer verteld gaat worden. Maar tegelijkertijd is er gezocht naar een manier om de bekende Windows UI ook nog steeds aan te bieden en die zelfs nog te verbeteren waar nodig of mogelijk.

Betekent dit dat Windows voor altijd twee verschillende UI’s blijft houden? Dat moet de toekomst uitwijzen. Het zou best kunnen dat er meer applicaties komen die op basis van Metro gebouwd worden. Misschien op een bepaald moment geldt dat wel voor alle applicaties. Maar het blijft de vraag hoe je gebruikers het best kan blijven ondersteunen. Soms moet je daarvoor drastische wijzigingen doorvoeren die niet direct door gebruikers begrepen worden. En soms moet je zelf meer werk doen om verschillende type gebruikers te blijven ondersteunen.

Bij het nemen van zulke beslissingen moet je zeker niet over een nacht ijs gaan. Je gebruikers kennen is een vereiste, bijvoorbeeld door het defiëren van ‘personas’. En zoals ik in mijn vorige post al aangaf: meten is weten. Als je dan ook nog personen binnen je organisatie of project hebt die met verstand van zaken en vanuit verschillende invalshoeken kunnen meepraten (architecten, developers, interaction designers, UX researchers, business developers, en meer), kan je op een gedegen manier keuzes maken.

Wil je meer weten over Metro? Kijk dan ook even naar deze resources:

Windows Explorer in Windows 8 en user experience

Op de blog van het Windows 8 engineering team is een artikel geplaatst over de nieuwe Windows Explorer in Windows 8. Interessant verhaal om te zien hoe ingewikkeld het is om vast te stellen wat nu de beste keuzes zijn in het bepalen van de UI van een applicatie.

image

Meten is weten, maar hoe doe je dat nu eigenlijk? In veel van de Microsoft producten wordt bij installatie gevraagd of je met het Customer Experience Improvement Program (oftewel het programma voor verbetering van de gebruikservaring) mee wilt doen. Als je daarvoor kiest, dan wordt met enige regelmaat gegevens aan Microsoft verstuurd zonder privé gegevens. Het gaat bijvoorbeeld om welk commando op wordt gestart, of op welke resolutie je werkt, of fullscreen voor programma’s gebruikt wordt, enzovoort.

Dit programma is ook voor Windows gebruikt en dat levert enorm veel data op. In het artikel wordt een analyse gegeven van die data. Het aparte is dat je soms denkt “nee hoor, dat doen gebruikers niet”, maar de metingen laten toch anders zien. Dus ook een goede optie om in eigen applicaties te bouwen, zodat je gegevens hebt waarmee je een volgende applicatie of versie kan verbeteren. In het geval van Windows Explorer zijn deze metingen gebruikt om te bepalen welke acties vaak uitgevoerd worden en hoe deze prominent getoond kunnen worden.

Er wordt ook melding gemaakt van feedback die door gebruikers is gegeven. De feedback is vaak iets als “ik mis die feature”, “wat handig zou zijn is als …” of “vroeger was het allemaal beter, want …”. Ook deze feedback heeft als input gediend voor het ontwerp van de nieuwe Windows Explorer.

Ook laat het verhaal over de keuzes voor Windows Explorer zien dat het niet altijd makkelijk is bepaalde keuzes te maken. Als je 10 gebruikers van een applicatie hebt kan het al moeilijk zijn om iedereen tevreden te stellen. Maar als het miljoenen gebruikers zijn met verschillende achtergronden, culturen, enzovoort, wordt dat alleen maar moeilijker. Soms moet je ook keuzes maken als gevolg van planning, tijd en geld. Zo kunnen er geen ‘custom commands’ in de ribbon van Windows Explorer worden toegevoegd door die redenen.

Naast het feit dat ik het toch wel weer indrukwekkend vind hoe een enorme stapel aan gegevens kan leiden tot dit soort beslissingen, laat het ook zien dat user experience geen exacte wetenschap is en dat het hard werken is om te zorgen dat je uiteindelijk de gebruikers van je product zo goed mogelijk ondersteund. Maar het is soms ook keuzes maken die niet iedereen zal waarderen.

Hoe Patty de Surface unit en applicaties test

Ik had er eigenlijk nooit bij stil gestaan hoe je een Surface unit en applicaties goed kan testen. Je kan natuurlijk heel veel in de code doen, maar dat is niet het echte werk met multi-touch, gestures en heel veel vingers en objecten tegelijk. Overigens is dat ook de reden dat je echt een Surface unit moet hebben om Surface applicaties te maken … de simulator op je PC is echt niet genoeg.

Het Surface team wil echt weten of het werkt met allerlei combinaties van factoren. Stel dat een klas met kinderen op een Surface unit wordt losgelaten … de hele dag. Kan Surface dat aan? Voor dat soort vragen en heel veel andere scenario’s hebben ze Patty.

Patty is geen overwerkte werknemer, maar een robot. Die is speciaal gebouwd om Surface te testen. Een beetje zoals IKEA robots heeft om de keukenkastjes open en dicht te doen, maar dan geavanceerder. De robot kan over de tafel heen en weer bewogen worden. Het oppervlak onder de robot bevat 80 drukpunten die een vinger, een object of een tag kunnen simuleren. De drukpunten kunnen ook gecombineerd worden om een pinch te simuleren bijvoorbeeld.

Kijk naar onderstaand filmpje om kennis te maken met Patty: een grote verzameling van techniek gecombineerd met C# om tests te draaien. Een mooie ontwikkeling om goed te testen of dat gedeelte van de user experience klopt.


Of kijk op Channel9

Bing Maps control voor WPF en Surface 2.0

Het Bing Maps team heeft een beta uitgebracht van de Bing Maps WPF Control. Dit control is te gebruiken in standaard Windows Presentation Foundation (WPF) applicaties, maar ook in Surface 2.0 applicaties. Het control gedraagt zich zoals elk control voor die omgeving, zodat het gecombineerd kan worden met andere controls (denk aan plaatjes, video’s, tekst en meer).

image

Het nieuwe Bing Maps control kent de map stijlen Road, Aerial en Hybrid. Er wordt ook eenvoudig mogelijk gemaakt om GPS posities te vertalen naar pixels en andersom, waardoor objecten precies op de kaart geplaatst kunnen worden. Uiteraard kan er over de kaart worden genavigeerd en worden ingezoomed (pan & zoom).

Er was al eerder zo’n control voor Silverlight, maar met dit nieuwe control wordt het ook eenvoudig gemaakt om client-applicaties te maken. Nieuw is de ondersteuning voor Surface 2.0. In de Surface 1.0 was er al een methode om van een kaart gebruik te maken, maar daar zaten nog veel haken en ogen aan. Met dit nieuwe control wordt het eenvoudig om een kaart in een Surface applicatie op te nemen.

Het control heeft wat standaard gedrag voor inzoomen, pannen en roteren, maar dat kan ook uit worden gezet. Het control maakt het ook eenvoudig om te koppelen aan de Bing Maps REST API voor geocoding of de Bing API voor search.

Feedback of vragen kunnen gesteld worden op het Bing Maps Forum. Op MSDN is de download van het control te vinden.

Microsoft Surface 2.0 SDK

De Software Development Kit (SDK) voor Microsoft Surface 2.0 is beschikbaar gekomen. Met deze SDK is het mogelijk applicaties voor touch-omgevingen te ontwikkelen. Dit kan voor Windows 7 met ondersteuning voor touch of voor Surface met ondersteuning voor touch, maar ook object-herkenning en meer.

De bedoeling is eigenlijk dat je een keer een applicatie kan schrijven die touch ondersteunt en die op meerdere device kan draaien, inclusief Microsoft Surface 2.0 (SUR40 van Samsung). In de code is het mogelijk om zogenaamde ‘capabilities’ uit te vragen. Daardoor kan je in de code rekening houden met de mogelijkheden en onmogelijkheden van de omgeving waar de applicatie draait. In het geval van een Surface unit kan er bijvoorbeeld ook opgevraagd worden of de unit horizontaal of verticaal gebruikt wordt.

De SDK bevat een set van controls, templates, tools en voorbeeld applicaties. In deze versie van de SDK draait alles om WPF 4.0, XNA 4.0 en het .NET Framework 4.0. Deze SDK vervangt overigens de Surface Toolkit for Windows Touch beta die eerder beschikbaar was.

De download van de SDK, training materiaal en meer technische ondersteuning is te vinden op MSDN.

Opvallend is ook de rol die de Metro guidelines (van Windows Phone) een rol gaan spelen bij Surface. Dus zorg dat je ook op de hoogte bent van deze richtlijnen, zodat je een uitstekende ervaring op basis van touch kan bieden.

Fonts animeren in Silverlight

Als je wel eens geprobeerd hebt om fonts te animeren, dan ziet dat er over het algemeen niet erg mooi uit. De animatie stottert, de fonts gaan er een beetje raar uitzien, soms lijkt iets bold te worden of juist niet meer bold te zijn, enzovoort.

Standaard optimaliseert Silverlight fonts voor leesbaarheid. Met allerlei slimme algorithmes wordt ervoor gezorgd dat de juiste pixels worden gebruikt om een zo’n scherp mogelijk font te tonen. Maar als je die tekst gaat animeren (verplaatsen, vergroten, enzovoort), dan kunnen die slimmigheden roet in het eten gooien. Het resultaat zijn de vreemde ‘vervormingen’ zoals hiervoor beschreven.

De oplossing is op de TextHintingMode te zetten. Deze heeft twee waardes: Fixed of Animated. Fixed is eigenlijk de standaard. Animated gebruik je voor de tekst-elementen die je wilt animeren. Zet niet zo maar alles op Animated, maar denk er goed over na welke tekst het echt nodig heeft.

Meer informatie is te vinden op MSDN.

Build Windows evenement–13-16 september 2011, Anaheim, VS

BUILD

Van 13 tot en met 16 september 2011 wordt in Anaheim in de Verenigde Staten het Build Windows evenement gehouden. Dit evenement vervangt het bekende Professional Developer Conference (PDC). Het hoofdthema mag duidelijk zijn: Windows, en dan wel Windows 8 natuurlijk.

Op dit evenement leer je bijvoorbeeld hoe je applicaties kan maken die ‘touch’ ondersteunen. Belangrijk hierbij is dat de gebruiker uiteindelijk het best geholpen wordt om gewenste taken uit te voeren en benodigde data te vinden en eventueel te bewerken.

Nieuw is ook de aandacht voor HTML5 en de web technologiën die daarbij horen. Ook hiermee kunnen apps worden gebouwd voor Windows. Daarbij hoort ook aandacht voor de nieuwe versie van Internet Explorer, versie 10, die nu gebouwd wordt en al getest kan worden.

Het evenement is dus vooral gericht op ontwikkelaars, maar kennis van het Microsoft platform is niet een must … er kan immers ook gebruik worden gemaakt van meer algemeen bekende web technologiën.

Windows 8 belooft veel nieuws en goeds, waarbij optimaal gebruik gemaakt zal worden van het device wat gebruikt wordt. Hierdoor zal het zeker inspiratie zijn voor een nieuwe reeks van hardware devices en software oplossingen.

Je kan je nu registreren voor dit evenement. Als je voor 1 augustus registreert is er zelfs een korting van $ 500,-.

Uiteraard zal ik op mijn blog ook aandacht besteden aan het evenement waar het UX raakt (en dat zal best veel zijn).

Microsoft Media Platform Content Manager 1.0

Content Manager is onderdeel van het Microsoft Media Platform en levert een end-to-end video workflow oplossing gebaseerd op de overige onderdelen van het Microsoft Media Platform en Microsoft SharePoint 2010. Het kan gebruikt worden voor het beheren van live streaming evenementen, transcoderen van video’s, het beheren en publiceren van video’s, het bewerken van video’s en beheer van advertenties in en om de video’s tijdens het uitspelen ervan.

Dit nieuwe framework in het Microsoft Media Platform is geoptimaliseerd voor IIS Smooth Streaming, maar ook “gewone” Video-on-demand oplossingen en andere mogelijkheden worden ondersteund of zijn toe te voegen. De oplossing is open-source, dus volledig inzichtelijk en naar wens aanpasbaar.

image

Microsoft SharePoint

SharePoint wordt gebruikt voor de opslag van de meta-data en voor ondersteuning van workflow. Binnen de webomgeving kan een project worden aangemaakt (bijvoorbeeld “TechDays 2011”) waar alle content voor dat project beheerd kan worden. Alles is overzichtelijk te vinden in een dashboard. In de omgeving wordt er gebruik gemaakt van een standaard media player (Silverlight gebaseerd) zodat previews mogelijk zijn. Er kan ook een eigen player worden gebruikt.

Live evenementen

Live evenementen kunnen met de omgeving bediend worden. Zowel het programma, als het starten en stoppen van live-streams is vanuit deze omgeving mogelijk. Deze opdrachten worden vervolgens aan de ingestelde encoders, publishing points, en dergelijke doorgegeven. Standaard worden Expression Encoder, Inlet encoders en IIS Media Services ondersteund. Ook dit is weer uitbreidbaar of aanpasbaar met extensies.

Advertenties

Advertenties kunnen ook beheerd worden. Door het aangeven van meta-data bij een advertentie kan de scheduling-service gebruik maken van de meest toepasselijke advertenties. Via een dashboard is het overzicht te zien van de advertenties en de koppelingen die zijn gemaakt.

Transform Manager

Een onderdeel van IIS Media Services die gebruikt wordt is de Transform Manager (nu nog in beta). Deze service wordt gebruikt om bijvoorbeeld video’s die geupload worden in het juiste formaat op te slaan. Of om een IIS Smooth Stream real-time om te zetten in een formaat zodat naast Silverlight (web en desktop) ook devices als iPad, iPod, iPhone en Windows Phone bediend kunnen worden.

Video Editor

Als video’s in IIS Smooth Streaming formaat zijn opgeslagen en worden aangeboden, kan de Video Editor die in het platform is opgenomen gebruikt worden om snel nieuw materiaal te maken op basis van andere clips. Denk bijvoorbeeld aan highlights. De editor levert een manifest-file op die vervolgens als een video kan worden afgespeeld, waarbij de aangegeven delen van het originele materiaal wordt afgespeeld.

Downloads en Links

De downloads van de documentatie en de installatie set zijn te vinden op het Microsoft Download Center.

Nuttige links:

Silverlight slider control that snaps

I came across a project where a slider control was needed that snapped to specific values. More than that, the value of the control also should reflect that. I came across the solution of Dave Relyea where he created a subclass of the Slider where OnValueChanged was overridden. The snap-distance is set with the SmallIncrement value of the Slider control. The problem I found with this solution was that the Value property still returned the actual position on the slider when dragging.

So, with the solution of Dave as a base, I made a simple addition. I added a SnapValue property in the subclass that returns the snap-value, even if you’re dragging the slider. Not revolutionary, but just what I needed. So if you need functionality like this, feel free to download the zip-file that contains the class-file. Just add that to your project. You might want to change the Namespace (now Mtirion.Toolbox) to your own project’s namespace.

De wetenschap achter objectherkenning in Kinect

Met Kinect voor de Xbox en de Kinect for Windows SDK is er zeker een hele nieuwe manier van interactie met de computer en software mogelijk geworden. Er zijn dan ook al vele experimenten uitgevoerd op basis van Kinect.

Maar heb je je ooit afgevraagd hoe de software van Kinect nu eigenlijk werkt? Hoe wordt bepaald hoe je voor de camera staat? Wat links en wat rechts is? Als je een beetje met de image-streams hebt gespeeld die in de Kinect for Windows SDK beschikbaar zijn, dan zie je dat het niet altijd even eenvoudig is.

Andrew Fitzgibbon van Microsoft Research legt op een redelijk eenvoudige manier binnen een half uurtje uit hoe ze van een idee naar objectherkenning zijn gekomen, wat nu in Kinect wordt gebruikt. Een beetje wiskundig, maar zonder een universitaire opleiding zeer goed te begrijpen.

Get Microsoft Silverlight

Wat lopen er toch slimme mensen rond Smile

Posted 05 July 2011 12:46 PM door Martin Tirion | no comments
Opgeslagen onder: ,
Adobe User Group meeting 29 juni 2011 - RAW

Woensdag 29 juni 2011 was de Adobe User Group meeting voor het eerst in Rotterdam. De locatie was het zeer kleurrijke Hofplein Theater. Het thema was “RAW”. Achteraf vond ik het beter als het thema “Video” of iets dergelijks was geweest, want bij RAW denk ik aan fotografie. Het ging echter over filmen met een DSLR fotocamera en wat daar verder bij komt kijken. Aangezien ik zelf in mijn vrije tijd ook wat aan fotografie doe, was ik erg geïnteresseerd in een uitleg van deze betrekkelijk nieuwe mogelijkheden.

Nino Leitner

De eerste presentatie was van Nino Leitner, een filmmaken en –producer uit Oostenrijk. Hij is via een bevriende journalist als eerste gevraagd om destijds het prototype van de Canon 550D te evalueren. Dit heeft hij gedaan door een korte film te maken. Het resultaat liet hij zien en is ook op zijn blog te vinden.

Voor mij was het de eerste keer om zo uitgebreid de voor- en nadelen te horen en te zien van het gebruik van DSLR’s voor video, en ik was erg onder de indruk. Al jarimageen snapte ik niet wat het punt was van een optie om met een spiegelreflexcamera te filmen. Maar de lichtgevoeligheid van de CMOS sensor en de enorme verscheidenheid aan lenzen met gebruik van scherptediepte zijn de grote voordelen. Daardoor kunnen effecten bereikt worden die je eerst alleen in de filmindustrie met hele dure camera’s zag.

Voordelen die naast de beeldkwaliteit werden genoemd waren ook de lage kosten (vooral in vergelijking met professionele apparatuur) en de hanteerbaarheid. Nino legde naast de voordelen ook de nadelen uit. Een nadeel is bijvoorbeeld dat de CMOS beeldsensor veel groter is dan HD (1920x1080). Om HD beeld te krijgen wordt er een vertaalslag gedaan van foto naar video waarbij beeld verloren gaat. Zo is het bijvoorbeeld gebruikelijk om voor video elke 3e beeldlijn te gebruiken. In het resultaat is dit bijvoorbeeld te zien bij schuine lijnen in het beeld die dan kartelachtig worden, ook wel  Moiré genoemd.

Nino is sinds de eerste test met de Canon 550D erg actief geworden met het filmen met dit soort camera’s. Al zijn bevindingen beschrijft hij op zijn blog: http://ninofilm.net/blog. Als je in deze materie geïnteresseerd bent zeker de moeite waard.

Het was een erg goede presentatie met enorm veel informatie. Zelfs zoveel dat hij de laatste 80.000 slides niet meer kon laten zien. Smile with tongue out Jammer, maar dat liet ook nog wat stof over voor de volgende presentaties.

Tom Poederbach (Canon)

Bij de presentatie van Tom Poederbach van Canon bleek dat Nino veel gras voor de voeten van Tom had weg gemaaid. Tom liet onder andere zien hoe tegenwoordig zelfs bij professionele producties DSLR’s worden ingezet naast professionele camera’s. Met name voor situaties waarbij de grootte van de camera of de wendbaarheid van belang is, is een DSLR een geweldig hulpmiddel.

Tom vertelde bijvoorbeeld dat de laatste episode van House van serie 6 en zelfs de nieuwe serie veelal met DSLR’s wordt gefilmd. Hij liet ook een promotiefilm zien waar er in het beeld niet te onderscheiden was welke camera was gebruikt. Aan het eind liet hij zien welke gedeelte met welke camera was gefilmd en het was een bonte verzameling.

Klaasjan Tukker (Adobe)

Klaasjan liet zien hoe de Adobe tools Premiere, After Effects, Encore, Encoder, Photoshop en Lightroom samen gebruikt kunnen worden voor het bewerken en maken van videoproducties. Een mooie toepassing vond ik het maken van een timelapse opname met behulp van Lightroom en Premiere. Hij gebruikte een collectie van foto’s die met bepaalde tussenposes waren gemaakt van de Maas met de Erasmusbrug erop (hoe toepasselijk in Rotterdam). Ruim 200 foto’s waren in Lightroom zichtbaar. Hier kunnen standaard bewerkingen op de foto’s worden uitgevoerd om de gewenste kwaliteit te krijgen, eventueel in samenwerking met Photoshop. Vervolgens werd de collectie als een sequence ingelezen in Premiere. Hierbij werd een groter beeld gebruikt (3000 pixels breed) dan de film (HD, dus 1920 breed). Hierdoor konden in Premiere effecten worden gebruikt om bijvoorbeeld in te zoomen of te pannen.

Een aardige detail (vond ik dan natuurlijk) is dat Klaasjan Windows 7 gebruikte in plaats van MacOS. Met name voor de pro-markt biedt de PC met Windows veel betere ondersteuning voor hardware acceleratie, multi-core ondersteuning, enzovoort.

Thed Lenssen

De afsluitende presentatie werd verzorgd door Thed Lenssen. Thed is zijn carriere begonnen met fotografie, maar is daarna ook de slag gegaan als regisseur van video’s. De nieuwe, goedkopere mogelijkheden van DSLR’s zijn volgens hem een start van nieuwe ongekende mogelijkheden. Zo is het eenvoudiger om ‘onzichtbaar’ te filmen, zonder dat mensen geïntimideerd worden door de camera. Ook zijn er nieuwe mogelijkheden voor advertentie-uitingen, waarbij hoge resolutie video kan worden gebruikt om video in billboards te verwerken bijvoorbeeld.

image

Conclusie

De eerste AUG meeting in Rotterdam was zeker een succes. En met alle informatie van de experts was er veel te leren over dit redelijk nieuwe vakgebied. Het is bereikbaar voor iedereen. En nu die mooie beelden combineren met IIS Smooth Streaming en je kan het dan ook op de beste manier voor de gebruiker aanbieden.

Kinect for Windows SDK

kinect_xboxVandaag is de beloofde Kinect for Windows SDK als beta uitgekomen. Net op tijd, want het is nog net lente. De SDK is bedoeld om software op Windows te maken die gebruik maakt van de Kinect sensor. Op dit moment is het gebruik van de SDK nog niet voor commercieel gebruik, dat komt in een later stadium. Deze eerste beta moet met name software ontwikkelaars, academici en enthousiastelingen helpen om zelf Kinect te gebruiken in nieuwe toepassingen. De Kinect for Windows SDK met alle informatie is hier te vinden. Quickstarts zijn hier te vinden. Er is ook een Coding4fun blog die meer informatie bevat.

Natural User Interface (NUI)

Microsoft Surface biedt al een nieuwe soort van interactie met de computer door het gebruik van onder andere multi-touch technieken en objectherkenning. Daardoor wordt de manier waarop software wordt gebruikt anders, natuurlijker, dan we met het bekende toetsenbord en de muis gewend zijn. Deze nieuwe stroming wordt Natural User Interfaces genoemd, oftewel NUI. Kinect voegt daar weer nieuwe mogelijkheden aan toe door gebruik van verschillende camera’s en microfoons.

Camera’s en microfoons

Kinect heeft verschillende camera’s waarmee gewoon videobeeld verkregen kan worden, infrarood en ook een diepte gezien kan worden. Daarnaast heeft Kinect 4 microfoons waardoor ook geluid verwerkt kan worden, inclusief informatie over de richting waar het geluid vandaan komt. De SDK ontsluit deze mogelijkheden op een aantal manieren.

Beginnen met de Kinect sensor en de SDK

Om de SDK te gebruiken heb je een Kinect sensor nodig die je door middel van de USB-poort aan je PC kan koppelen. Hiervoor is de losse Kinect sensor nodig, die ook voeding en een USB aansluiting biedt. De Kinect sensor die bij de (nieuwere) Xbox 360 Slim wordt meegeleverd heeft dat niet standaard, maar je kan dat wel los aanschaffen (Bijvoorbeeld in de Microsoft Store).

De SDK bevat allereerst de driver om Kinect aan te sturen. De volgorde is:

  1. De Kinect sensor loskoppelen van de PC als die al gekoppeld was
  2. Alle oude drivers verwijderen (ook open source drivers)
  3. Visual Studio afsluiten als die geopend is
  4. De SDK installeren
  5. Kinect sensor (weer) aansluiten

De drivers worden dan aan het device gekoppeld. Er kunnen overigens meerdere sensors worden gebruikt. Een sensor kan wel door maar één applicatie tegelijk gebruikt worden.

Met de installatie van de SDK worden de benodigde assemblies (DLL’s) en drivers op de juiste plaatsen geinstalleerd. Deze zijn te vinden in \Program Files\Microsoft Research KinectSDK (zowel op 32-bit als 64-bit systemen). Daarnaast worden de helpfiles, 32-bit versie DLL’s en headerfiles geinstalleerd. Deze zijn te vinden in dezelfde directory voor een 32-bit systeem, of in \Program Files (x86)\Microsoft Research KinectSDK voor 64-bit systemen. Hier zijn ook de executables te vinden van 2 voorbeeld applicaties, SkeletalViewer en ShapeGame.

SkeletalViewer laat het videobeeld, het infrarood beeld en het getekende ‘skelet’ zien.
ShapeGame laat een ‘skelet’ zien in een spel waar objecten uit de lucht vallen die stuk gemaakt kunnen worden door ze aan te raken. Met voice commando’s kan er gestopt, gepauseerd of gestart worden, kunnen objecten vergroot of verkleind worden, vermeerder of verminderd, enzovoort.

De sources van de voorbeelden zijn te vinden in \Users\Public\Documents\Microsoft Research KinectSDK Samples. Dit is gedaan vanwege de beveiligings-instellingen op de Program Files directories.

En dan …

Eerst even een test doen met de SkeletalViewer en de ShapeGame is een goed begin. Je krijgt dan gelijk een idee wat er ongeveer kan met de SDK. Om de ShapeGame helemaal tot zijn recht te laten komen, moeten ook even de (32-bits of x86!) versie van de Microsoft Speech SDK en runtime worden geïnstalleerd. Dan kan je ook voice-commando’s in het Engels geven waar de applicatie op reageert.

Zoals al aangegeven, ondersteunt de SDK nu meerdere sensors tegelijk. Er kunnen ook meerdere personen herkend worden, maar met een maximum van 2.

Applicaties voor Kinect kunnen gebouwd worden in C++, C# of VB.NET. Er is een helpfile (CMH) aanwezig die de API beschrijft. De samples laten zien hoe verschillende technieken gebruikt kunnen worden. Daarbij is er ook uitgebreide documentatie van de voorbeeld applicaties om meer begrip te krijgen van wat er gebeurt.

In de code wordt informatie gegeven waarmee personen en hun lichaamshouding herkend kan worden. Dit wordt gedaan in een collectie van Joints die het Skeleton vormen. Elke joint heeft een ID, zodat bekend is welk gedeelte van het lichaam het is. In onderstaande tekening is te zien welke punten worden teruggegeven. Per punt is er informatie zoals x,y en ook afstand tot de sensor, zodat een 3D beeld verkregen kan worden. De x,y coordinaten worden overigens in relatieve waardes gegeven, waarbij (0,0) het midden is, (–1,–1) linksonder en (1,1) rechtsboven.

SkeletonJoints-grid

De voorbeeld applicatie SkeletalViewer tekent deze gegevens om een soort geraamte te laten zien:

image

De SDK biedt nog geen ondersteuning voor het herkennen van gestures. Dus voorlopig zal dat zelf geprogrammeerd moeten worden of moeten anderen met oplossingen bovenop de SDK komen. Dus misschien heb je er een uitdaging bij om anderen te helpen. Ik ben in ieder geval al bezig met wat zaken die nuttig kunnen zijn voor anderen. Als ik het heb, post ik het uiteraard op mijn blog.

Dus downloaden die SDK, aansluiten de Kinect en wees creatief! En natuurlijk even laten weten als je iets leuks hebt gemaakt Smile Ik heb er in ieder geval al een hoop lol mee gehad.

Posted 16 June 2011 06:24 PM door Martin Tirion | 1 comment(s)
Opgeslagen onder: ,
SketchFlow for Windows Phone–The real one

It almost feels like the end of an era Winking smile A while ago I posted an article on my own implementation of a project type to enable the use of SketchFlow for Windows Phone apps. I also send a link to this to my friends at the Expression team, who reacted “Wow! This is great. Now look at the specs we started  on 10 days ago…”. Yep, they came up with the same idea. But of course they can do better than my attempt and the result is there now. Go to wp7sketchflow.codeplex.com you can download the new template.

To use this template you need a SketchFlow enabled version of Expression Blend (included in Expression Studio Ultimate and Visual Studio 2010 Ultimate). You also need the Mango developer tools for Windows Phone (a more simple set of the downloads can be found here, where you only need the vm_web2.exe, the Web Platform Installer).

Once installed, fire up Blend and you’ll have the option to start a Windows Phone SketchFlow Application project:

image

Once started you see an initial map:

image

Search, Home and AppList are supporting screens with standard WP7 UI. You should focus on the screens of your own app, starting with Screen1. Of course you’ll want to use controls. The best option is to use the controls you can find under Controls, Mockups. There is a list of known items from Windows Phone like Panorama control and Pivot control. But also buttons, Map, Keyboard, ToggleSwitch and more.

The app is always a Silverlight application that’s being generated in the SketchFlow Player based on Silverlight. There is no phone emulator support in this project template.

If you have something that you want differently in the template, let the creators know on wp7sketchflow.codeplex.com.

Player Framework–A Sample UI with tips and tricks

For a basic understanding of customizing the UI of the Microsoft Media Platform Player Framework, have a look at this earlier post.

On the discussion board of the Player Framework there were a number of discussions about specific UI customizations. To have some more samples how to create a sample UI on top of the player framework I actually created one. If you look at it, it looks a bit like a well-known player. Of course there are lots of other UI elements in this sample one to enable all the Player Framework goodness. This is what the player looks like (it’s an image, not the actual player):

SamplePlayerUI

This sample UI was completely done in XAML without any code-behind. I want to highlight a few things I found while creating this.

Use of colors-definition or a resource

imageIn the session I gave on customizing the UI of the Player Framework I already mentioned the use of color-definitions and resources is not consistent in the default template of the SMFPlayer control. I found a small clue why that happened in specific cases. When you use a resource brush for a color, it’s impossible to change that to another color in a storyboard or a visual state. This can only be done with color-definitions. A way to work around this is to use various objects (for instance rectangles for the background of a button), use various brushes as resource per background and make only that background visible in a specific state that you need. This is done partially in the default template, that’s why some elements have objects like background, background_hover and background_press. In my sample UI I used the same construct everywhere to define objects with resources. That way you just need to change a resource to make all the color changes.

A good tip when you start drawing the visuals for a player, is to also draw the various states of objects and group them in layers. This will translate in a Canvas or a Grid that contains the various objects. That way you just have to decide how to show and hide them in states. You can use the Visibility property if you just want to change immediately, or use Opacity if you want to animate the transition (e.g. cross-fade).

The time track

A challenge was the time track (the red transparent bar with the circle shape thumb, called the TimelineElement in the template). I wanted to place this outside of the ControllerContainer and I wanted to change it’s shape when we kind of ‘hide’ the controllers when the mouse hasn’t been moved for 5 seconds. As the look and feel of the time track, which is actually just a slider control, is defined in a template, how would you change it with an animation? The answer had to be: Visual States.

First I moved the TimelineElement on the same level as the ControllerContainer under PlayerRoot. MediaPresenterElement is in Row 0 and has a RowSpan of 3. ControllerContainer is positioned in Row 3 and TimelineElement in Row 2. That way the TimelineElement hides the bottom part of the video, which isn’t a problem if it’s transparent.

After that I changed the template of the TimelineElement. I shaped the HorizontalTrackLargeChangeIncreaseRepeatButton, the HorizontalAvailableBar and the HorizontalTrackLargeChangeDecreaseRepeatButton to define the tracks. I made sure that these tracks take the Height defined by their container (HorizontalTemplate). I also shaped the HorizontalThumb to be a circle.

imageIn the shapes for the TimelineElement I added a new group called ActiveStates and I created the Active and Inactive state within that group. The Active state defines what the TimelineElement looks like when everything is visible, the Inactive when … well, it’s not active (sounds logical, doesn’t it Smile with tongue out). In the Inactive state I changed the Height of the HorizontalTemplate to 6 pixels and I set the Visibility of the HorizontalThumb to Collapsed. I used 0,1 second to do the transition.

The next thing was to trigger the animations. I have also defined a white transparent rectangle inside the ControllerContainer to cover the controls when the mouse wasn’t active for 5 seconds. To make that happen I created a storyboard called AutoDimControllers. At 0,1s the Visibility of the rectangle is set to Collapsed, at 5s the Visibility is set to Visible and the Opacity to 0% and at 5,2s the Opacity is set to 40%. To trigger this I added two ControlStoryboardAction behaviors to the PlayerRoot, both playing the AutoDimControllers storyboard, one on the Loaded event the other on the MouseMove event. The last one is needed to start the animation over and over again when the mouse is moved, so it always stays up for 5 seconds.

But a visual state cannot be set with an animation. So I added 3 GoToStateAction behaviors to the PlayerRoot. The first GoToStateAction fires on the Loaded event of PlayerRoot and sets the visual state “Active” of the TimelineElement, to set the initial state on load. The seconds GoToStateAction fires on the MouseMove event of PlayerRoot, and sets the visual state “Active” of the TimelineElement, to make it visible again when the mouse is moved. The third one uses a Trigger of type StoryboardCompletedTrigger on AutoDimControllers, and it sets the visual state “Inactive” of the TimelineElement.

One strange this is that Blend starts complaining about these states that they cannot be resolved. Don’t get frightened by this, it just works.

Now everything is hooked up to get the controls out of the way (or less intrusive) when the user is watching the video.

The volume control

The volume control expands horizontally. This was all handled by defining the visuals and changing the states within the volume control.

Sample download

Perhaps I wasn’t that clear in the description above or want to have a look at the template. You can download a sample project here or just the resource file here.

The complete styling is in a separate resource file. If you want to reuse it in another project, just add the resource XAML file as an existing item (a link to this resource is automatically added in App.xaml) and a a reference to Microsoft.Expression.Interactions.dll. If you don’t know how to locate the dll, just add a behavior to the LayoutRoot of your main page and remove that again. The reference is then set automatically.

Let me know what you think or miss.

Meer posts Volgende pagina »

Zoek

Go

Dit weblog

Nieuws

Selecteren