<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vinhold+Starbrook</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vinhold+Starbrook"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Vinhold_Starbrook"/>
	<updated>2026-08-01T16:40:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetStatus&amp;diff=169823</id>
		<title>LlSetStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetStatus&amp;diff=169823"/>
		<updated>2008-12-10T03:24:21Z</updated>

		<summary type="html">&lt;p&gt;Vinhold Starbrook: better comment wording in script example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=45|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llSetStatus&lt;br /&gt;
|p1_type=integer|p1_name=status|p1_desc=bit mask, STATUS_* flags&lt;br /&gt;
|p2_type=integer|p2_name=value|p2_desc=boolean&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Sets the object status attributes indicated in the &#039;&#039;&#039;status&#039;&#039;&#039; mask to &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Status is an object attribute; all prims in an object share the same status.&lt;br /&gt;
** Except for STATUS_BLOCK_GRAB, this only affects the prim the script is in, child prims in linked objects will not be affected.&lt;br /&gt;
|constants={{LSL Constants/Status}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus( STATUS_DIE_AT_EDGE | STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSetStatus( STATUS_ROTATE_X | STATUS_ROTATE_Y, FALSE);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If STATUS_BLOCK_GRAB is to be set TRUE for all prims in a linked set, the following script can be run in each prim to set the flag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;default &lt;br /&gt;
{&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llSetStatus(STATUS_BLOCK_GRAB,TRUE);           // Set &#039;No grab&#039; flag on prim.&lt;br /&gt;
        llOwnerSay(&amp;quot;&#039;No Grab&#039; was set!&amp;quot;);&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See JIRA comment [http://jira.secondlife.com/browse/SVC-1773 SVC-1773] for more information until resolved.&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetStatus]]|Gets the object status.}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Status&lt;br /&gt;
|cat3=Physics&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vinhold Starbrook</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetStatus&amp;diff=169813</id>
		<title>LlSetStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetStatus&amp;diff=169813"/>
		<updated>2008-12-10T03:22:12Z</updated>

		<summary type="html">&lt;p&gt;Vinhold Starbrook: Added commentary on STATUS_BLOCK_GRAB with code example and refernce to JIRA link for more information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=45|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llSetStatus&lt;br /&gt;
|p1_type=integer|p1_name=status|p1_desc=bit mask, STATUS_* flags&lt;br /&gt;
|p2_type=integer|p2_name=value|p2_desc=boolean&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Sets the object status attributes indicated in the &#039;&#039;&#039;status&#039;&#039;&#039; mask to &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Status is an object attribute; all prims in an object share the same status.&lt;br /&gt;
** Except for STATUS_BLOCK_GRAB, this only affects the prim the script is in, child prims in linked objects will not be affected.&lt;br /&gt;
|constants={{LSL Constants/Status}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus( STATUS_DIE_AT_EDGE | STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSetStatus( STATUS_ROTATE_X | STATUS_ROTATE_Y, FALSE);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If STATUS_BLOCK_GRAB is to be set TRUE for all prims in a linked set, the following script can be run in each prim to set the flag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;default &lt;br /&gt;
{&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llSetStatus(STATUS_BLOCK_GRAB,TRUE);           // Set No grab setting for prim.&lt;br /&gt;
        llOwnerSay(&amp;quot;&#039;No Grab&#039; was set!&amp;quot;);&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See JIRA comment [http://jira.secondlife.com/browse/SVC-1773 SVC-1773] for more information until resolved.&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetStatus]]|Gets the object status.}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Status&lt;br /&gt;
|cat3=Physics&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vinhold Starbrook</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Video&amp;diff=33085</id>
		<title>Category:LSL Video</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Video&amp;diff=33085"/>
		<updated>2007-09-27T06:02:38Z</updated>

		<summary type="html">&lt;p&gt;Vinhold Starbrook: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
==Description==&lt;br /&gt;
Second Life allows video to be played in world on the sides of prims by replacing the texture with a video stream. Movies can not be uploaded to Second Life, but a URL to a movie stream is used instead.&lt;br /&gt;
&lt;br /&gt;
Quicktime is used in the client to play the movie so only Quicktime compatible formats currently work, though with the client now [[Open_Source_Portal|open source]], someone may come up with a wrapper for other video players and formats. &lt;br /&gt;
&lt;br /&gt;
The thumbrule is if it can play in Quicktime, then it can probably play in Second life.&lt;br /&gt;
&lt;br /&gt;
To set which texture to replace and what movie URL to play, use the {{LSLG|llParcelMediaCommandList}} function.&lt;br /&gt;
&lt;br /&gt;
To determine information about the video on the current parcel, use {{LSLG|llParcelMediaQuery}}&lt;br /&gt;
&lt;br /&gt;
You can also give the appearance of playing a movie by animating a texture. This is done with the {{LSLG|llSetTextureAnim}} function.&lt;br /&gt;
&lt;br /&gt;
Video cannot be recorded with LSL, but it can be recorded with the client.&lt;br /&gt;
&lt;br /&gt;
For additional information see [[How To Show Video in SL]].&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*{{LSLG|llParcelMediaCommandList}}&lt;br /&gt;
*{{LSLG|llParcelMediaQuery}}&lt;br /&gt;
*{{LSLG|llSetTextureAnim}}&lt;/div&gt;</summary>
		<author><name>Vinhold Starbrook</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=How_To_Show_Video_in_SL&amp;diff=33084</id>
		<title>How To Show Video in SL</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=How_To_Show_Video_in_SL&amp;diff=33084"/>
		<updated>2007-09-27T06:01:36Z</updated>

		<summary type="html">&lt;p&gt;Vinhold Starbrook: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;How to set up and play streaming video in Second Life.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This article covers each of the steps from encoding video content to displaying it in Second Life. &lt;br /&gt;
&lt;br /&gt;
== Encoding a Video File ==&lt;br /&gt;
The video from any source must first be converted to a computer file form from whatever source it is in. There are variety of programs and devices that can do this step. Once the video is on the computer it must be encoded in a format that Quicktime can play. These are the settings used in Quicktime Pro to create a movie that Second Life can read. There may be other combinations that can work but these were what worked for this example.&lt;br /&gt;
&lt;br /&gt;
=== Quicktime Pro Settings ===&lt;br /&gt;
&#039;&#039;&#039;Standard Video Compression Settings&#039;&#039;&#039;&lt;br /&gt;
  Compression Type: MPEG-4 Video&lt;br /&gt;
  Frame Rate: 30 fps&lt;br /&gt;
  Key Frames: Every 24 frames&lt;br /&gt;
 &lt;br /&gt;
  Data Rate: Restrict to 436 kbits/sec&lt;br /&gt;
  Optimized for: Download&lt;br /&gt;
  Compressor Quality: Best&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sound Settings&#039;&#039;&#039;&lt;br /&gt;
  Format: AAC&lt;br /&gt;
  Channels: Stereo (L R)&lt;br /&gt;
  Rate: 44.100 kHz&lt;br /&gt;
 Render Settings:&lt;br /&gt;
  Quality: Best&lt;br /&gt;
 AAC Encoder Settings:&lt;br /&gt;
  Target Bit Rate: 64 kbps&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Movie Settings&#039;&#039;&#039;&lt;br /&gt;
  Video&lt;br /&gt;
   Compression: MPEG-4 Video&lt;br /&gt;
   Quality: Best&lt;br /&gt;
   Bitrate: 436 kbits / sec&lt;br /&gt;
   Dimensions: 320 x 240&lt;br /&gt;
  &lt;br /&gt;
  Sound&lt;br /&gt;
   Format: AAC&lt;br /&gt;
   Sample Rate: 44.100 kHz&lt;br /&gt;
   Channels: Stereo (L R)&lt;br /&gt;
   Bit Rate: 64 kbps&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Prepare for Internet Streaming&#039;&#039;&#039;&lt;br /&gt;
   Fast Start&lt;br /&gt;
&lt;br /&gt;
At this point the program will start encoding the video and will produce an .MOV file. It is now ready to place on your web server.&lt;br /&gt;
&lt;br /&gt;
== Web Server Configurations ==&lt;br /&gt;
You will need to have access to a web server, either a normal website or a specialized streaming server that is configured to support http access. Once the file is in place determine the URL address to access the file. If you can play the video in Quicktime on your computer using the URL address, chances are good it will also play in SL.&lt;br /&gt;
&lt;br /&gt;
== Parcel Settings ==&lt;br /&gt;
To set up land parcel for video requires that you either be a land owner or member of a group that has the privileges to set the Media for streaming video. This option can be accessed by right clicking on the ground in the parcel and selecting the About Land menu. Open the Media Tab.&lt;br /&gt;
&lt;br /&gt;
There are two items to set here for video. A texture that will be replaced by the video when it plays and the URL address for the video file. The texture can be any picture texture, but I find it useful to set a texture that indicates what video is available. It is my opinion that the texture should advertise the video as well as provide some instruction on how to start the program. Once the texture and URL are in place you are ready to start the show.&lt;br /&gt;
&lt;br /&gt;
All devices that can play a video can only display the URL set in the Land Media settings. If any change is made to that URL all playing devices in that parcel are immediately changed. Each visitor does not see the same portion of the video that anyone else may be seeing. This is the result of each client independently connecting to the URL. If the video is started using the display device, all present and equipped to see it will all start seeing it at the same time. Confused? I certainly was at first! See article [http://secondlife.com/app/help/guides/streamingmedia.php Streaming Media] for more information on how video is implemented in SL.&lt;br /&gt;
&lt;br /&gt;
== Scripting a Display ==&lt;br /&gt;
There are a number of free, and paid, &amp;quot;TV&amp;quot; (or video display) devices available in SL, but if you wanted to create your own display device here are some tips in getting it done!&lt;br /&gt;
&lt;br /&gt;
The size of the video does not control how big you can make your display unit in SL, it establishes a standard ratio between width and height. Any multiple of those numbers will have the correct aspect ratio and will display undistorted video. Anything not matching that ratio will cause the video to display stretched or squished. A convenient size can be made by making your display prim from a cube set to X=2.0, Y=1.5 (This is four 0.5m units by three 0.5m units!) The z value can be set to whatever your device will need for depth. This resulting arrangement has the display facing up. The display surface just happens to be face 0 (zero) of the cube. This is important in having a correct orientation so your picture is not showing sideways! Remove any texture on face zero and set to a dark gray or black color. This will be the &amp;quot;off&amp;quot; setting for the TV. Now you are ready for a bit of simple scripting to start showing the movie!&lt;br /&gt;
&lt;br /&gt;
=== Basic Video Display Script ===&lt;br /&gt;
&lt;br /&gt;
The following script will run but you will soon find it inconvenient to use. It is to illustrate these commands:&lt;br /&gt;
{|&lt;br /&gt;
| [[llParcelMediaQuery]]()&lt;br /&gt;
| Get Land parcel media settings for video&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetPrimitiveParams]]()&lt;br /&gt;
| To display the video on a surface making the device appear to turn on and off.&lt;br /&gt;
|-&lt;br /&gt;
| [[llParcelMediaCommandList]]()&lt;br /&gt;
| To control activating the media stream through the device.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script would be used in the prim that will show the video on surface zero.&lt;br /&gt;
// Touching the prim will start or stop the video display set in Land Media: Video.&lt;br /&gt;
 &lt;br /&gt;
// Global Variable declarations&lt;br /&gt;
key DefTexture;&lt;br /&gt;
vector DefColor;&lt;br /&gt;
list data;&lt;br /&gt;
key texture;&lt;br /&gt;
 &lt;br /&gt;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        DefTexture = llGetTexture(0);                   // Save default texture set on prim surface zero.&lt;br /&gt;
        DefColor = llGetColor(0);                       // Save default color of prim surface zero&lt;br /&gt;
        IsPlaying = FALSE;                              // Set playing flag to FALSE.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number) {&lt;br /&gt;
        // Read land parcel media settings&lt;br /&gt;
        data = llParcelMediaQuery([PARCEL_MEDIA_COMMAND_TEXTURE, PARCEL_MEDIA_COMMAND_URL]);&lt;br /&gt;
        texture = (key) llList2String(data, 0);         // Get texture for parcel to display&lt;br /&gt;
        if (IsPlaying) {                                // Player has video active&lt;br /&gt;
            llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);     // Stop streaming to the device.&lt;br /&gt;
            llSetPrimitiveParams([PRIM_TEXTURE,0,DefTexture,&amp;lt;1,1,0&amp;gt;,ZERO_VECTOR,0.0,PRIM_COLOR,0,DefColor,1.0,PRIM_FULLBRIGHT,0,TRUE]);&lt;br /&gt;
            IsPlaying = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
        else {                                          // Check if Parcel Video is available&lt;br /&gt;
            if (llList2String(data, 0) == &amp;quot;&amp;quot;) {         // Not a landowner or land group member error display&lt;br /&gt;
                key ErrTexture = llGetInventoryKey(&amp;quot;ErrMsg&amp;quot;);         // Get texture by name from inventory&lt;br /&gt;
                llSetPrimitiveParams([PRIM_TEXTURE,0,ErrTexture,&amp;lt;1,1,0&amp;gt;,ZERO_VECTOR,0.0,PRIM_COLOR,0,&amp;lt;1,1,1&amp;gt;,1.0,PRIM_FULLBRIGHT,0,TRUE]);&lt;br /&gt;
            }&lt;br /&gt;
            else {                                      // Set texture&lt;br /&gt;
                llSetPrimitiveParams([PRIM_TEXTURE,0,texture,&amp;lt;1,1,0&amp;gt;,ZERO_VECTOR,0.0,PRIM_COLOR,0,&amp;lt;1,1,1&amp;gt;,1.0,PRIM_FULLBRIGHT,0,TRUE]);&lt;br /&gt;
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]); // Start media playing to this device&lt;br /&gt;
                IsPlaying = TRUE;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; The use of the ErrMsg texture is is a useful reminder if the device cannot function due to permissions not available to the owner. This is the text I used in white on blue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  You are not a land owner or land group member; or parcel does not have media set. Cannot connect to parcel media.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It gives the basic idea as to why the video is not playing.&lt;br /&gt;
&lt;br /&gt;
[[Category:LSL Library|Video]]&lt;/div&gt;</summary>
		<author><name>Vinhold Starbrook</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=How_To_Show_Video_in_SL&amp;diff=33083</id>
		<title>How To Show Video in SL</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=How_To_Show_Video_in_SL&amp;diff=33083"/>
		<updated>2007-09-27T05:59:36Z</updated>

		<summary type="html">&lt;p&gt;Vinhold Starbrook: New page: &amp;#039;&amp;#039;&amp;#039;How to set up and play streaming video in Second Life.&amp;#039;&amp;#039;&amp;#039;  This article covers each of the steps from encoding video content to displaying it in Second Life.   == Encoding a Video File ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;How to set up and play streaming video in Second Life.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This article covers each of the steps from encoding video content to displaying it in Second Life. &lt;br /&gt;
&lt;br /&gt;
== Encoding a Video File ==&lt;br /&gt;
The video from any source must first be converted to a computer file form from whatever source it is in. There are variety of programs and devices that can do this step. Once the video is on the computer it must be encoded in a format that Quicktime can play. These are the settings used in Quicktime Pro to create a movie that Second Life can read. There may be other combinations that can work but these were what worked for this example.&lt;br /&gt;
&lt;br /&gt;
=== Quicktime Pro Settings ===&lt;br /&gt;
&#039;&#039;&#039;Standard Video Compression Settings&#039;&#039;&#039;&lt;br /&gt;
  Compression Type: MPEG-4 Video&lt;br /&gt;
  Frame Rate: 30 fps&lt;br /&gt;
  Key Frames: Every 24 frames&lt;br /&gt;
 &lt;br /&gt;
  Data Rate: Restrict to 436 kbits/sec&lt;br /&gt;
  Optimized for: Download&lt;br /&gt;
  Compressor Quality: Best&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sound Settings&#039;&#039;&#039;&lt;br /&gt;
  Format: AAC&lt;br /&gt;
  Channels: Stereo (L R)&lt;br /&gt;
  Rate: 44.100 kHz&lt;br /&gt;
 Render Settings:&lt;br /&gt;
  Quality: Best&lt;br /&gt;
 AAC Encoder Settings:&lt;br /&gt;
  Target Bit Rate: 64 kbps&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Movie Settings&#039;&#039;&#039;&lt;br /&gt;
  Video&lt;br /&gt;
   Compression: MPEG-4 Video&lt;br /&gt;
   Quality: Best&lt;br /&gt;
   Bitrate: 436 kbits / sec&lt;br /&gt;
   Dimensions: 320 x 240&lt;br /&gt;
  &lt;br /&gt;
  Sound&lt;br /&gt;
   Format: AAC&lt;br /&gt;
   Sample Rate: 44.100 kHz&lt;br /&gt;
   Channels: Stereo (L R)&lt;br /&gt;
   Bit Rate: 64 kbps&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Prepare for Internet Streaming&#039;&#039;&#039;&lt;br /&gt;
   Fast Start&lt;br /&gt;
&lt;br /&gt;
At this point the program will start encoding the video and will produce an .MOV file. It is now ready to place on your web server.&lt;br /&gt;
&lt;br /&gt;
== Web Server Configurations ==&lt;br /&gt;
You will need to have access to a web server, either a normal website or a specialized streaming server that is configured to support http access. Once the file is in place determine the URL address to access the file. If you can play the video in Quicktime on your computer using the URL address, chances are good it will also play in SL.&lt;br /&gt;
&lt;br /&gt;
== Parcel Settings ==&lt;br /&gt;
To set up land parcel for video requires that you either be a land owner or member of a group that has the privileges to set the Media for streaming video. This option can be accessed by right clicking on the ground in the parcel and selecting the About Land menu. Open the Media Tab.&lt;br /&gt;
&lt;br /&gt;
There are two items to set here for video. A texture that will be replaced by the video when it plays and the URL address for the video file. The texture can be any picture texture, but I find it useful to set a texture that indicates what video is available. It is my opinion that the texture should advertise the video as well as provide some instruction on how to start the program. Once the texture and URL are in place you are ready to start the show.&lt;br /&gt;
&lt;br /&gt;
All devices that can play a video can only display the URL set in the Land Media settings. If any change is made to that URL all playing devices in that parcel are immediately changed. Each visitor does not see the same portion of the video that anyone else may be seeing. This is the result of each client independently connecting to the URL. If the video is started using the display device, all present and equipped to see it will all start seeing it at the same time. Confused? I certainly was at first! See article [http://secondlife.com/app/help/guides/streamingmedia.php Streaming Media] for more information on how video is implemented in SL.&lt;br /&gt;
&lt;br /&gt;
== Scripting a Display ==&lt;br /&gt;
There are a number of free, and paid, &amp;quot;TV&amp;quot; (or video display) devices available in SL, but if you wanted to create your own display device here are some tips in getting it done!&lt;br /&gt;
&lt;br /&gt;
The size of the video does not control how big you can make your display unit in SL, it establishes a standard ratio between width and height. Any multiple of those numbers will have the correct aspect ratio and will display undistorted video. Anything not matching that ratio will cause the video to display stretched or squished. A convenient size can be made by making your display prim from a cube set to X=2.0, Y=1.5 (This is four 0.5m units by three 0.5m units!) The z value can be set to whatever your device will need for depth. This resulting arrangement has the display facing up. The display surface just happens to be face 0 (zero) of the cube. This is important in having a correct orientation so your picture is not showing sideways! Remove any texture on face zero and set to a dark gray or black color. This will be the &amp;quot;off&amp;quot; setting for the TV. Now you are ready for a bit of simple scripting to start showing the movie!&lt;br /&gt;
&lt;br /&gt;
=== Basic Video Display Script ===&lt;br /&gt;
&lt;br /&gt;
The following script will run but you will soon find it inconvenient to use. It is to illustrate these commands:&lt;br /&gt;
{|&lt;br /&gt;
| [[llParcelMediaQuery]]()&lt;br /&gt;
| Get Land parcel media settings for video&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetPrimitiveParams]]()&lt;br /&gt;
| To display the video on a surface making the device appear to turn on and off.&lt;br /&gt;
|-&lt;br /&gt;
| [[llParcelMediaCommandList]]()&lt;br /&gt;
| To control activating the media stream through the device.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script would be used in the prim that will show the video on surface zero.&lt;br /&gt;
// Touching the prim will start or stop the video display set in Land Media: Video.&lt;br /&gt;
 &lt;br /&gt;
// Global Variable declarations&lt;br /&gt;
key DefTexture;&lt;br /&gt;
vector DefColor;&lt;br /&gt;
list data;&lt;br /&gt;
key texture;&lt;br /&gt;
 &lt;br /&gt;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        DefTexture = llGetTexture(0);                   // Save default texture set on prim surface zero.&lt;br /&gt;
        DefColor = llGetColor(0);                       // Save default color of prim surface zero&lt;br /&gt;
        IsPlaying = FALSE;                              // Set playing flag to FALSE.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number) {&lt;br /&gt;
        // Read land parcel media settings&lt;br /&gt;
        data = llParcelMediaQuery([PARCEL_MEDIA_COMMAND_TEXTURE, PARCEL_MEDIA_COMMAND_URL]);&lt;br /&gt;
        texture = (key) llList2String(data, 0);         // Get texture for parcel to display&lt;br /&gt;
        if (IsPlaying) {                                // Player has video active&lt;br /&gt;
            llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);     // Stop streaming to the device.&lt;br /&gt;
            llSetPrimitiveParams([PRIM_TEXTURE,0,DefTexture,&amp;lt;1,1,0&amp;gt;,ZERO_VECTOR,0.0,PRIM_COLOR,0,DefColor,1.0,PRIM_FULLBRIGHT,0,TRUE]);&lt;br /&gt;
            IsPlaying = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
        else {                                          // Check if Parcel Video is available&lt;br /&gt;
            if (llList2String(data, 0) == &amp;quot;&amp;quot;) {         // Not a landowner or land group member error display&lt;br /&gt;
                key ErrTexture = llGetInventoryKey(&amp;quot;ErrMsg&amp;quot;);         // Get texture by name from inventory&lt;br /&gt;
                llSetPrimitiveParams([PRIM_TEXTURE,0,ErrTexture,&amp;lt;1,1,0&amp;gt;,ZERO_VECTOR,0.0,PRIM_COLOR,0,&amp;lt;1,1,1&amp;gt;,1.0,PRIM_FULLBRIGHT,0,TRUE]);&lt;br /&gt;
            }&lt;br /&gt;
            else {                                      // Set texture&lt;br /&gt;
                llSetPrimitiveParams([PRIM_TEXTURE,0,texture,&amp;lt;1,1,0&amp;gt;,ZERO_VECTOR,0.0,PRIM_COLOR,0,&amp;lt;1,1,1&amp;gt;,1.0,PRIM_FULLBRIGHT,0,TRUE]);&lt;br /&gt;
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]); // Start media playing to this device&lt;br /&gt;
                IsPlaying = TRUE;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; The use of the ErrMsg texture is is a useful reminder if the device cannot function due to permissions not available to the owner. This is the text I used in white on blue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  You are not a land owner or land group member; or parcel does not have media set. Cannot connect to parcel media.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It gives the basic idea as to why the video is not playing.&lt;br /&gt;
&lt;br /&gt;
[[Category:LSL Library]]&lt;/div&gt;</summary>
		<author><name>Vinhold Starbrook</name></author>
	</entry>
</feed>