Un petit script bien utile pour délivrer un flux video multicast en adaptative smooth streaming :
Articles associés au tag ‘smooth streaming’
2013
Convertir un GUID en Base 64
Certains hébergeurs demandent de renseigner le GUID en Base 64,
Si l’on inspecte les requettes envoyés par le navigateur l’ors de l’ouverture d’un fichier smooth streaming DRMizé, on peux trouver le GUID en Base 64.
Maintenant comment le convertir « simplement » ?
Tout d’abord il faut inverses les bits de poids faible avant de faire la conversion en base 64.
Prenons l’exemple : 93c6cea6-d968-9b34-8dd7-359ae15a6cb5
Inversons maintenant les bits de poids faible : a6cec693-68d9-349b-8dd7-359ae15a6cb5
Passons maintenant le nouveau GUID dans la moulinette PHP :
$guid = '9ccf5662-f8e6-0e54-15e7-e4c25979c84a'; // Il faut inverser les bits de poids faible (=> bloc par bloc sur les 3 premiers blocs) avant de faire la conversion en 64bits // Ex : // 93c6cea6-d968-9b34-8dd7-359ae15a6cb5 // => a6cec693-68d9-349b-8dd7-359ae15a6cb5 $uuid = explode('-', $guid); for ($i=0;$i<3;$i++) { $tmp = str_split($uuid[$i], 2); $tmp = array_reverse($tmp); $uuid[$i] = implode('', $tmp); } $uuid = implode('-', $uuid); $reversed_guid = $uuid; $uuid = str_replace("-", "", $uuid); $packed = pack('H*', $uuid); $base64Encoded = base64_encode($packed); echo "guid depart : {$guid}<br>"; echo "guid invers : {$reversed_guid}<br>"; echo "KeyID : {$base64Encoded}<br>"; die();
Ce qui nous retourne bien :
guid depart : 9ccf5662-f8e6-0e54-15e7-e4c25979c84a
guid invers : 6256cf9c-e6f8-540e-15e7-e4c25979c84a
KeyID : YlbPnOb4VA4V5+TCWXnISg==
Vous pouvez également utiliser l’outil :
http://guid-convert.appspot.com/
Testé et approuvé !!!
2013
Capteurs
Selon vos besoins, différents capteurs peuvent être associé à votre création.
Nous allons seulement en lister quelques uns, nous reviendront plus en détail sur ces capteurs plus tard.
-Capteur a affect capacitif :
Human Body Touch Sensor Module for Arduino
-Détecteur de flames :
Flame Detection Sensor Module for Arduino
-Détecteur infrarouges :
High Sensitivity IR Receiver Photosensitive Diode Light Sensor for Arduino
-Réflecteur infrarouges :
DIY IR Infrared Reflection Sensor Module – Blue
-Capteur de distance :
HC-SR04 Ultrasonic Sensor Distance Measuring Module
-Diode laser :
5mW Red Dot Laser Diode Module
-Detecteur de tilt (mouvement lié à un angle) :
Angle Tilt Sensor Module for Arduino
OJ-CG316 New Tilt Sensor Module for Arduino
GY-291 ADXL345 Digital 3-Axis Acceleration of Gravity Tilt
2013
XML de commande Rhozet pour générer du SmoothStreaming avec 2 sources (stitch) et un sous-titre
Voici l’XML de commande qui permet d’appeler un preset SmoothStreaming RHOZET pour transcoder 2 sources (Par ex un panneau CSA et le film) contient deux langues audio et un sous-titre.
<?xml version="1.0" encoding="UTF-8"?> <cnpsXML ProjectID.DWD="161428257" CreatedByAppVersion="3.21.5"> <Sources> <Module_0 Inpoint.QWD="-1" Outpoint.QWD="-1" MultiSource.DWD="1"> <ModuleData> <StreamTypeTable StreamSelector_0.DWD="0" StreamType_0.DWD="0" StreamPtr_0.DWD="0" StreamSelector_1.DWD="2" StreamType_1.DWD="0" StreamPtr_1.DWD="0"/> <SourceModules> <MultiSrcModule_0 MultiSource.DWD="0" Filename="\192.168.10.31transcodageFILMOLINELOGO_CSA-12.wmv" FullUNCFilename="\192.168.10.31transcodageFILMOLINELOGO_CSA-12.wmv"/> </SourceModules> </ModuleData> <Filter_0/> <Filter_1/> </Module_0> <Module_1 Inpoint.QWD="-1" Outpoint.QWD="-1" MultiSource.DWD="1"> <ModuleData> <StreamTypeTable StreamSelector_0.DWD="0" StreamType_0.DWD="0" StreamPtr_0.DWD="0" StreamSelector_1.DWD="2" StreamType_1.DWD="0" StreamPtr_1.DWD="0"/> <SourceModules> <MultiSrcModule_0 MultiSource.DWD="0" Filename="\192.168.10.31transcodageFILMOLINE\/LABO/VectraCom/8478___Familyfilms_Entre_les_jambes_vm_mezz.mpg" FullUNCFilename="\192.168.10.31transcodageFILMOLINE\/LABO/VectraCom/8478___Familyfilms_Entre_les_jambes_vm_mezz.mpg"/> </SourceModules> </ModuleData> <Filter_0/> <Filter_1/> </Module_1> </Sources> <Destinations> <Module_0 ModuleGUID="{269DF7D3-F4B5-41DB-85F7-A5A42B7A6449}" PresetGUID="{269DF7D3-F4B5-41DB-85F7-A5A42B7A6449}"> <ModuleData CML_P_BaseFileName="8478___Familyfilms_Entre_les_jambes_vm_mezz" CML_P_Path="\10.95.167.32transcodageFILMOLINEDRM_INRHOZET_OUTYacast_VM_SMOOTH" DestFileUseSource.DWD="1" general_23_assetDirectory.DWD="0" general_23_publishMode.DWD="0" general_23_vodStreamName="" general_23_vodServerManifestName="" general_23_vodClientManifestName="" debug_23_dumpElmStream.DWD="0" debug_23_dumpGraph.DWD="0" debug_23_tracePipeline.DWD="0" debug_23_fragmentorLogging.DWD="0" video_23_profile.DWD="66" video_23_frameRate.DBL="25.000002" video_23_keyFrameInterval.DBL="2.000000" video_23_useAutomaticLayerGenerator.DWD="0" video_23_automaticLayerSettings_23_maxFrameWidth.DWD="1280" video_23_automaticLayerSettings_23_maxFrameHeight.DWD="720" video_23_automaticLayerSettings_23_minFrameWidth.DWD="224" video_23_automaticLayerSettings_23_minFrameHeight.DWD="128" video_23_automaticLayerSettings_23_maxBitRate.DWD="3000" video_23_automaticLayerSettings_23_minBitRate.DWD="230" video_23_numberOfLayers.DWD="3" video_01_23_bitRate.DWD="2000" video_01_23_frameWidth.DWD="720" video_01_23_frameHeight.DWD="405" video_02_23_bitRate.DWD="800" video_02_23_frameWidth.DWD="720" video_02_23_frameHeight.DWD="405" video_03_23_bitRate.DWD="500" video_03_23_frameWidth.DWD="720" video_03_23_frameHeight.DWD="405" video_04_23_bitRate.DWD="446" video_04_23_frameWidth.DWD="432" video_04_23_frameHeight.DWD="242" video_05_23_bitRate.DWD="568" video_05_23_frameWidth.DWD="512" video_05_23_frameHeight.DWD="288" video_06_23_bitRate.DWD="723" video_06_23_frameWidth.DWD="600" video_06_23_frameHeight.DWD="338" video_07_23_bitRate.DWD="918" video_07_23_frameWidth.DWD="696" video_07_23_frameHeight.DWD="390" video_08_23_bitRate.DWD="1161" video_08_23_frameWidth.DWD="798" video_08_23_frameHeight.DWD="448" video_09_23_bitRate.DWD="1459" video_09_23_frameWidth.DWD="908" video_09_23_frameHeight.DWD="510" video_10_23_bitRate.DWD="1823" video_10_23_frameWidth.DWD="1026" video_10_23_frameHeight.DWD="405" video_11_23_bitRate.DWD="2261" video_11_23_frameWidth.DWD="1152" video_11_23_frameHeight.DWD="648" video_12_23_bitRate.DWD="2785" video_12_23_frameWidth.DWD="1288" video_12_23_frameHeight.DWD="724" video_13_23_bitRate.DWD="3407" video_13_23_frameWidth.DWD="1432" video_13_23_frameHeight.DWD="806" video_14_23_bitRate.DWD="4141" video_14_23_frameWidth.DWD="1586" video_14_23_frameHeight.DWD="892" video_15_23_bitRate.DWD="5000" video_15_23_frameWidth.DWD="1748" video_15_23_frameHeight.DWD="982" video_16_23_bitRate.DWD="6000" video_16_23_frameWidth.DWD="1920" video_16_23_frameHeight.DWD="1080" audio_23_sampleRate.DWD="44100" audio_23_numberOfAudioStreams.DWD="2" audio_01_23_language="fre" audio_01_23_channelConfiguration.DWD="2" audio_01_23_bitRate.DWD="256000" audio_02_23_language="eng" audio_02_23_channelConfiguration.DWD="2" audio_02_23_bitRate.DWD="256000" audio_03_23_language="" audio_03_23_channelConfiguration.DWD="2" audio_03_23_bitRate.DWD="128000" audio_04_23_language="" audio_04_23_channelConfiguration.DWD="2" audio_04_23_bitRate.DWD="128000" audio_05_23_language="" audio_05_23_channelConfiguration.DWD="2" audio_05_23_bitRate.DWD="128000" audio_06_23_language="" audio_06_23_channelConfiguration.DWD="2" audio_06_23_bitRate.DWD="128000" audio_07_23_language="" audio_07_23_channelConfiguration.DWD="2" audio_07_23_bitRate.DWD="128000" audio_08_23_language="" audio_08_23_channelConfiguration.DWD="2" audio_08_23_bitRate.DWD="128000" audio_09_23_language="" audio_09_23_channelConfiguration.DWD="2" audio_09_23_bitRate.DWD="128000" audio_10_23_language="" audio_10_23_channelConfiguration.DWD="2" audio_10_23_bitRate.DWD="128000" audio_11_23_language="" audio_11_23_channelConfiguration.DWD="2" audio_11_23_bitRate.DWD="128000" audio_12_23_language="" audio_12_23_channelConfiguration.DWD="2" audio_12_23_bitRate.DWD="128000" audio_13_23_language="" audio_13_23_channelConfiguration.DWD="2" audio_13_23_bitRate.DWD="128000" audio_14_23_language="" audio_14_23_channelConfiguration.DWD="2" audio_14_23_bitRate.DWD="128000" audio_15_23_language="" audio_15_23_channelConfiguration.DWD="2" audio_15_23_bitRate.DWD="128000" audio_16_23_language="" audio_16_23_channelConfiguration.DWD="2" audio_16_23_bitRate.DWD="128000" ttml_23_numberOfTtmlStreams.DWD="1" ttml_01_23_ttml_source.DWD="2" ttml_01_23_ttml_service_number.DWD="1" ttml_01_23_ttml_language="fre" ttml_01_23_ttml_file="\192.168.10.31transcodageFILMOLINESOUS-TITRES\OUT_CSASTL_FOR_DFXP8478___Familyfilms_Entre_les_jambes_vm_mezz.xml" ttml_01_23_ttml_file_offset="00:00:00.000" ttml_02_23_ttml_source.DWD="1" ttml_02_23_ttml_service_number.DWD="2" ttml_02_23_ttml_language="eng" ttml_02_23_ttml_file="" ttml_02_23_ttml_file_offset="00:00:00.000" ttml_03_23_ttml_source.DWD="1" ttml_03_23_ttml_service_number.DWD="3" ttml_03_23_ttml_language="eng" ttml_03_23_ttml_file="" ttml_03_23_ttml_file_offset="00:00:00.000" ttml_04_23_ttml_source.DWD="1" ttml_04_23_ttml_service_number.DWD="4" ttml_04_23_ttml_language="eng" ttml_04_23_ttml_file="" ttml_04_23_ttml_file_offset="00:00:00.000" ttml_05_23_ttml_source.DWD="1" ttml_05_23_ttml_service_number.DWD="5" ttml_05_23_ttml_language="eng" ttml_05_23_ttml_file="" ttml_05_23_ttml_file_offset="00:00:00.000" ttml_06_23_ttml_source.DWD="1" ttml_06_23_ttml_service_number.DWD="6" ttml_06_23_ttml_language="eng" ttml_06_23_ttml_file="" ttml_06_23_ttml_file_offset="00:00:00.000" ttml_07_23_ttml_source.DWD="1" ttml_07_23_ttml_service_number.DWD="7" ttml_07_23_ttml_language="eng" ttml_07_23_ttml_file="" ttml_07_23_ttml_file_offset="00:00:00.000" ttml_08_23_ttml_source.DWD="1" ttml_08_23_ttml_service_number.DWD="8" ttml_08_23_ttml_language="eng" ttml_08_23_ttml_file="" ttml_08_23_ttml_file_offset="00:00:00.000" ttml_09_23_ttml_source.DWD="1" ttml_09_23_ttml_service_number.DWD="9" ttml_09_23_ttml_language="eng" ttml_09_23_ttml_file="" ttml_09_23_ttml_file_offset="00:00:00.000" ttml_10_23_ttml_source.DWD="1" ttml_10_23_ttml_service_number.DWD="10" ttml_10_23_ttml_language="eng" ttml_10_23_ttml_file="" ttml_10_23_ttml_file_offset="00:00:00.000" ttml_11_23_ttml_source.DWD="1" ttml_11_23_ttml_service_number.DWD="11" ttml_11_23_ttml_language="eng" ttml_11_23_ttml_file="" ttml_11_23_ttml_file_offset="00:00:00.000" ttml_12_23_ttml_source.DWD="1" ttml_12_23_ttml_service_number.DWD="12" ttml_12_23_ttml_language="eng" ttml_12_23_ttml_file="" ttml_12_23_ttml_file_offset="00:00:00.000" ttml_13_23_ttml_source.DWD="1" ttml_13_23_ttml_service_number.DWD="13" ttml_13_23_ttml_language="eng" ttml_13_23_ttml_file="" ttml_13_23_ttml_file_offset="00:00:00.000" ttml_14_23_ttml_source.DWD="1" ttml_14_23_ttml_service_number.DWD="14" ttml_14_23_ttml_language="eng" ttml_14_23_ttml_file="" ttml_14_23_ttml_file_offset="00:00:00.000" ttml_15_23_ttml_source.DWD="1" ttml_15_23_ttml_service_number.DWD="15" ttml_15_23_ttml_language="eng" ttml_15_23_ttml_file="" ttml_15_23_ttml_file_offset="00:00:00.000" ttml_16_23_ttml_source.DWD="1" ttml_16_23_ttml_service_number.DWD="16" ttml_16_23_ttml_language="eng" ttml_16_23_ttml_file="" ttml_16_23_ttml_file_offset="00:00:00.000" CML_P_ForcedSplitMinutes.DWD="0" CML_P_SourceSegmentSel.DWD="0" CML_P_SourceSegmentStart.DWD="-1" CML_P_SourceSegmentTime.DWD="-1" CML_P_SourceSegmentStartDbl.DBL="0.000000" CML_P_SourceSegmentTimeDbl.DBL="0.000000" FullUNCPath="\10.95.167.32transcodageFILMOLINEDRM_INRHOZET_OUTYacast_VM_SMOOTH"/> <Filter_0/> <Filter_1/> </Module_0> </Destinations> <ProjectSettings Stitching.DWD="1" TargetOverWrite.DWD="1"> <KernelFlags KP_LetterBoxParam.DWD="0" KP_MethodVideoScaleUp.DWD="0" KP_MethodVideoScaleDown.DWD="0" KP_MethodVideoScaleThreads.DWD="0" KP_MethodVideoScaleOptions.DWD="0" KP_Activelinelength704.DWD="0" KP_TCFrameRateMode.DWD="0" KP_FrameRateMode.DWD="2" KP_SpecialMPEGScaling.DWD="1" KP_SpecialDeinterlacing.DWD="1" KP_SpecialD1toDVScaling.DWD="1" KP_RGB2YUV601.DWD="1" KP_YUV2RGB601.DWD="1" KP_AdjustDurationLimit.DWD="5" KP_AdjustDurationEnabled.DWD="1" KP_RestrictQuality.DWD="0" KP_AnamorphicScalingLimit.DWD="50" KP_AnamorphicScalingLimitEnabled.DWD="1" KP_SpecialVBIScaling.DWD="1" KP_DefaultSTLanguage.DWD="0" KP_DefaultAudioLanguage.DWD="0" KP_ForceInternalMPEGDecoder.DWD="1" KP_SetChapterAtStitch.DWD="0" KP_UseDropFrame.DWD="1" KP_UseMPEGTimeStamp.DWD="0" KP_MaxMediaCut.DWD="5" KP_UseLegacyMPEG.DWD="0" KP_UseLegacyQT.DWD="0" KP_UseNTSCSafeLetterBox.DWD="0"/> </ProjectSettings> </cnpsXML>
2013
Transform Manager – SMIL avec cléfs de DRMization pour source SmoothStreaming
Voici une façon pour lancer une DRMization avec Transform Manager de Microsoft d’une source VM 2 Audio + SOUS-TITRE avec KeyID et KeySeed
Cela permet de générer des cléfs différentes en fonction du fichier à DRMizé :
<?xml version="1.0" encoding="utf-8"?> <smil xmlns="http://www.w3.org/2001/SMIL20/Language"> <head> <metadata id="meta-rdf"> <rdf:RDF xmlns:iisms="http://schemas.microsoft.com/iis/media/v4/TM#" xmlns:sd="http://schemas.microsoft.com/iis/media/v4/SharedData#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <iisms:task rdf:about="guid:9A3BFEAC-F8AE-41CA-87FA-D639E4D1C752"> <!--id defined in C:ProgramDataMicrosoftIISTransform ManagerConfigurationTask DefinitionsPlayReady Protection.xml --> <iisms:id>9A3BFEAC-F8AE-41CA-87FA-D639E4D1C753</iisms:id> <sd:keyId>74fffeae-764f-2f24-5dd5-15a079460121</sd:keyId> <sd:keySeedValue>1234512345123451234512345123451234512345</sd:keySeedValue> </iisms:task> </rdf:RDF> </metadata> </head> <body> <seq> <video src="4001___Warner_Argo_vm_mezz_SS_2000.ismv" /> <video src="4001___Warner_Argo_vm_mezz_SS_800.ismv" /> <video src="4001___Warner_Argo_vm_mezz_SS_500.ismv" /> <audio src="4001___Warner_Argo_vm_mezz_SS_256_fre.isma" systemLanguage="fre" /> <audio src="4001___Warner_Argo_vm_mezz_SS_256_eng.isma" systemLanguage="eng" /> <ref src="4001___Warner_Argo_vm_mezz_SS_en-us.ismt" /> <ref src="4001___Warner_Argo_vm_mezz_SS.ismc" xmlns="" /> <ref src="4001___Warner_Argo_vm_mezz_SS.ism" xmlns="" /> </seq> </body> </smil>
2013
Miscrosoft IIS Transform Manager 1
Ce produit permet la conversion automatique de fichiers VOD à l’aide d’un mécanisme de Watch Folders sur un serveur. Il permet notamment de re-multiplexer un ou plusieurs fichiers MP4 vers un contenu Smooth Streaming (sans ré-encodage!), d’encrypter des fichiers Smooth Streaming existants avec Microsoft PlayReady (DRM), et de convertir des fichiers Windows Media vers Smooth Streaming et Apple Adaptive Streaming.
Pour ajouter le cryptage PlayReady, trois valeurs sont indispensable :
- licenseAcquisitionUrl;
- keySeedValue;
- keyId.
Sachant que si le KeyID n’est pas renseigné, il est automatiquement généré par microsoft. Généralement un fichier est joint à la video contenant le keySeed permettant le cryptage, mais nous pouvons aussi bien imaginer un script permettant un random automatique de cette key. Une quatrième key peut etre vu, la Content Key qui est obtenu avec la Key ID et la Key Seed …
Remarque : |
---|
Si vous prévoyez de créer un projet de diffusion en direct pour appareils Apple, ne définissez pas vos options DRM dans Expression Encoder. Définissez plutôt les paramètres IIS Media Services pour chiffrer le contenu à l’aide d’Advanced Encryption Standard (AES) et d’une clé 128 bits. Pour plus d’informations, consultez l’aide de IIS Media Services. |
Telecharger l’application : http://www.microsoft.com/en-us/download/search.aspx?q=transform+manager
Tuto Transform Manager :
http://blogs.msdn.com/b/playready4/archive/2011/09/02/how-to-add-playready-protection-in-a-transform-manager-job-template.aspx
http://www.iis.net/learn/media/transform-manager/encrypting-on-demand-smooth-streams
http://www.pierrickmartos.fr/post/Encodez-vos-videos-au-format-Smooth-Streaming.aspx
http://blog.pouyat.com/2011/05/03/disponibilit-dune-beta-de-iis-transform-manager/
Tuto IIS Smooth Stream :
http://www.iis.net/learn/media/on-demand-smooth-streaming/getting-started-with-iis-smooth-streaming#content
http://www.labo-microsoft.org/articles/IISMEDIA4/3/Default.asp#_Toc309021955
http://www.leadtools.com/help/leadtools/v175/multimedia/filters/dlltutor/playingsmoothstreaming.htm
http://blogs.iis.net/vsood/archive/2009/10/14/building-your-first-smooth-streaming-player.aspx
http://www.tweened.org/fr/composants/silverlight-smooth-streaming-plugin-for-wordpress/
Tests :
http://www.microsoft.com/en-us/download/details.aspx?id=18199
http://blog.pouyat.com/2011/01/17/outil-de-monitoring-client-smooth-streaming/
http://playready.directtaps.net/smoothstreaming/
http://smf.cloudapp.net/healthmonitor
Divers :
http://alexzambelli.com/blog/