Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Discussion: FreeView - Picture Viewer & Video Control

CrystalShard Foo
1+1=10
Join date: 6 Feb 2004
Posts: 682
04-02-2005 16:34
---------------------------------------------------------
IMPORTANT NOTE!

This is an OLD version of FreeView! This thread is out-dated. For the latest version, please check this thread: /15/d3/53495/1.html
---------------------------------------------------------


So SL 1.6 is finally here, and with it, streaming video.

To help celebrate the occasion, I'd like to give the following script to the community:

FreeView is an all-in-one video controller and picture viewer. It supports all the basics in both modes, includes an auto-parcel configuration function, and a comfy advance bookmarks function that works off a notecard as a source.

The bookmarks notecard is required to be called "bookmarks" by default. To add a URL, just add the name, followed by the URL, with a | char as a separator. Please only add one URL per line, and try to avoid putting blank lines without text. (The script can handle such lines, but its still recommended not to). For example:

name|url
name|url
name|url


... and so on.

If you find a bug in this script, feel free to fix and post. But please keep the credit list intact. You may add your own name to the credits on scripts that you modify.

Those of you who'd like to get it in-world instead, you can buy a copy for 1L$ at Script-Foo! at Apukohai 165,11.


Here's the script. Happy viewing!
CrystalShard Foo
1+1=10
Join date: 6 Feb 2004
Posts: 682
04-02-2005 16:37
CODE

//FreeView 1.0 - By CrystalShard Foo
//Multifunctional Picture viewer and Video control script
//This script is distributed for free and must stay that way. DO NOT SELL THIS SCRIPT UNDER ANY CIRCUMSTANCE.

//Feel free to modify this script and post your improvement. Leave the credits intact but feel free to add your name at its bottom.


//Constants
float PICTURE_ROTATION_TIMER = 30; //In whole seconds

integer DISPLAY_ON_SIDE = ALL_SIDES; //Change this to change where the image will be displayed

key VIDEO_DEFAULT = "6e0f05ad-1809-4edc-df29-fae3d2a6c9b8"; //Test pattern - Used as default video texture when one is missing in parcel media
key BLANK = "5748decc-f629-461c-9a36-a35a221fe21f"; //Blank texture - Used when there are no textures to display in Picture mode
string NOTECARD = "bookmarks"; //Used to host URL bookmarks for video streams


integer mode = 0; //Freeview mode.
//Mode 0 - Power off
//Mode 1 - Picture viewer
//Mode 2 - Video

integer listenHandle = -1; //Dialog menu listen handler
integer listenurl = -1; //listen handler for channel 1 for when a URL is being added
integer listenTimer = -1; //Timer variable for removing all listeners after 2 minutes of listener inactivity
integer numberofnotecardlines = 0; //Stores the current number of detected notecard lines.
integer notecardline = 0; //Current notecard line

integer loop_image = FALSE; //Are we looping pictures with a timer? (picture mode)
integer current_texture = 0; //Current texture number in inventory being displayed (picture mode)
integer chan; //llDialog listen channel
integer notecardcheck = 0;
key video_texture; //Currently used video display texture for parcel media stream

key tempuser; //Temp key storge variable
string tempurl; //Temp string storge variable

pictures() //Change mode to Picture Viewer
{
//Change prim to Light material while coloring face 0 black to prevent light-lag generation.
llSetPrimitiveParams([PRIM_BUMP_SHINY,DISPLAY_ON_SIDE,PRIM_SHINY_NONE,PRIM_BUMP_NONE,PRIM_COLOR,DISPLAY_ON_SIDE,<1,1,1>,1.0,PRIM_MATERIAL,PRIM_MATERIAL_LIGHT]);
llSetColor(<0,0,0>,0);

//Initilize variables
current_texture = 0;

//Set to first texture if available
integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
if(check > 0)
display_texture(check);
else
{
llSetObjectDesc("No pictures found.");
llSetTexture(BLANK,DISPLAY_ON_SIDE);
}
}

video() //Change mode to Video
{
llSetObjectDesc("Video mode: Stopped");
if(finditem(NOTECARD) != -1)
tempuser = llGetNumberOfNotecardLines(NOTECARD);
video_texture = llList2Key(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_TEXTURE]),0);
if(video_texture == NULL_KEY)
{
video_texture = VIDEO_DEFAULT;
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_TEXTURE,VIDEO_DEFAULT]);
llSay(0,"No parcel media texture found. Setting texture to default: "+(string)VIDEO_DEFAULT);
if(llGetLandOwnerAt(llGetPos()) != llGetOwner())
llSay(0,"Error: Cannot modify parcel media settings. "+llGetObjectName()+" is not owned by parcel owner.");
}
//Change prim to Light material while coloring face 0 black to prevent light-lag generation.
llSetPrimitiveParams([PRIM_BUMP_SHINY,DISPLAY_ON_SIDE,PRIM_SHINY_NONE,PRIM_BUMP_NONE,PRIM_COLOR,DISPLAY_ON_SIDE,<1,1,1>,1.0,PRIM_MATERIAL,PRIM_MATERIAL_LIGHT,PRIM_TEXTURE,DISPLAY_ON_SIDE,video_texture,<1,1,0>,<0,0,0>,TWO_PI]);
llSetColor(<0,0,0>,0);
}

off()
{
llSetObjectDesc("Click to power on.");
llSetPrimitiveParams([PRIM_BUMP_SHINY,DISPLAY_ON_SIDE,PRIM_SHINY_LOW,PRIM_BUMP_NONE,PRIM_COLOR,DISPLAY_ON_SIDE,<0.1,0.1,0.1>,1.0,PRIM_MATERIAL,PRIM_MATERIAL_PLASTIC,PRIM_TEXTURE,DISPLAY_ON_SIDE,BLANK,<1,1,0>,<0,0,0>,TWO_PI]);
}

integer finditem(string name) //Finds and returns an item's inventory number
{
integer i;
for(i=0;i<llGetInventoryNumber(INVENTORY_NOTECARD);i++)
if(llGetInventoryName(INVENTORY_NOTECARD,i) == NOTECARD)
return i;
return -1;
}

seturl(string url, key id) //Set parcel media URL
{
string oldurl = llList2String(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL]),0);
if(oldurl != "")
llOwnerSay("Setting new media URL. The old URL was: "+oldurl);
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,url]);
menu(id);
llOwnerSay("New media URL set.");
}

string mediatype(string ext) //Returns a string stating the filetype of a file based on file extension
{
ext = llToLower(ext);
if(ext == "swf")
return "Flash";
if(ext == "mov" || ext == "avi" || ext == "mpg" || ext == "mpeg" || ext == "smil")
return "Video";
if(ext == "jpg" || ext == "mpeg" || ext == "gif" || ext == "png" || ext == "pict" || ext == "tga" || ext == "tiff" || ext == "sgi" || ext == "bmp")
return "Image";
if(ext == "txt")
return "Text";
return "Unknown";
}

browse(key id) //Image browser function for picture viewer mode
{
integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
string header;
if(check > 0)
header = "("+(string)(current_texture+1)+"/"+(string)check+") "+llGetInventoryName(INVENTORY_TEXTURE,current_texture);
else
header = "No pictures found.";
llDialog(id,"** Monitor Control **\n Picture Viewer mode\n- Image browser\n- "+header,["Back","Next","Menu"],chan);
extendtimer();
}

extendtimer() //Add another 2 minute to the Listen Removal timer (use when a Listen event is triggered)
{
if(listenHandle == -1)
listenHandle = llListen(chan,"","","");
listenTimer = (integer)llGetTime() + 120;
if(loop_image == FALSE)
llSetTimerEvent(45);
}

config(key id) //Configuration menu
{
extendtimer();
llDialog(id,"Current media URL:\n"+llList2String(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL]),0),["Set URL","Align ON","Align OFF","Menu"],chan);
}

menu(key id) //Dialog menus for all 3 modes
{
list buttons = [];
string title = "** Monitor control **";

extendtimer();

if(mode != 0)
{
if(mode == 1) //Pictures menu
{
title+="\n Picture Viewer mode";
// buttons+=["Back","Next"];
buttons+=["Browse"];
if(loop_image == FALSE)
buttons+=["Loop"];
else
buttons+=["Unloop"];
buttons+=["Video","Power off"];
}
else //Video menu
{
title+="\n Video display mode";
buttons+=["Configure","Bookmarks","Power off","Pause","Unload","Pictures","Play","Stop","Loop"];
}
}
else
buttons += ["Pictures","Video"];

llDialog(id,title,buttons,chan);
}

display_texture(integer check) //Display texture and set name in description (picture mode)
{ //"Check" holds the number of textures in contents. The function uses "current_texture" to display.
string name = llGetInventoryName(INVENTORY_TEXTURE,current_texture);
llSetTexture(name,DISPLAY_ON_SIDE);
llSetObjectDesc("Showing picture: "+name+" ("+(string)(current_texture+1)+"/"+(string)check+")");
}


next() //Change to next texture (picture mode)
{ //This function is used twice - by the menu and timer. Therefor, it is a dedicated function.
current_texture++;
integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
if(check == 0)
{
llSetTexture(BLANK,DISPLAY_ON_SIDE);
current_texture = 0;
llSetObjectDesc("No pictures found.");
return;
}
if(check == current_texture)
current_texture = 0;

display_texture(check);
return;
}

default
{
state_entry()
{
chan = (integer)llFrand(1000) + 1000; //Pick a random listen channel for the listener
if(PICTURE_ROTATION_TIMER <= 0) //Ensure the value is no less or equal 0
PICTURE_ROTATION_TIMER = 1;
llListenRemove(listenHandle);
listenHandle = -1;
off();
}

on_rez(integer i)
{
llResetScript();
}

touch_start(integer total_number)
{
//-------------------------------------------------------------------------------
//Listen only to owner or group member. Edit this code to change access controls.
if(llDetectedKey(0) != llGetOwner() && llDetectedGroup(0) == FALSE)
return;
//-------------------------------------------------------------------------------

menu(llDetectedKey(0));
}

changed(integer change)
{
if(change == CHANGED_INVENTORY) //If inventory change
if(mode == 1) //If picture mode
{
integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
if(check != 0)
{
current_texture = 0;
display_texture(check);
}
else
{
llSetTexture(BLANK,DISPLAY_ON_SIDE);
llSetObjectDesc("No pictures found.");
}
}
else
if(mode == 2) //If video mode
if(finditem(NOTECARD) != -1) //And bookmarks notecard present
tempuser = llGetNumberOfNotecardLines(NOTECARD); //Reload number of lines
}

listen(integer channel, string name, key id, string message)
{
if(message == "Pictures")
{
if(mode == 2)
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);
pictures();
mode = 1;
menu(id);
return;
}
if(message == "Video")
{
video();
mode = 2;
menu(id);
return;
}
if(message == "Power off")
{
if(mode == 2)
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_UNLOAD]);
off();
mode = 0;
return;
}
if(mode == 1)
{
if(message == "Browse")
{
loop_image = FALSE;
browse(id);
return;
}
if(message == "Next")
{
extendtimer();
next();
browse(id);
}
if(message == "Back")
{
extendtimer();
current_texture--;
integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
if(check == 0)
{
llSetTexture(BLANK,DISPLAY_ON_SIDE);
current_texture = 0;
llSetObjectDesc("No pictures found.");
return;
}
if(current_texture < 0)
current_texture = check - 1;

display_texture(check);

browse(id);
return;
}
if(message == "Menu")
{
menu(id);
return;
}
if(message == "Loop")
{
llSetTimerEvent(PICTURE_ROTATION_TIMER);
loop_image = TRUE;
llOwnerSay("Picture will change every "+(string)PICTURE_ROTATION_TIMER+" seconds.");
return;
}
if(message == "Unloop")
{
loop_image = FALSE;
llOwnerSay("Picture loop disabled.");
return;
}
}
if(mode == 2)
{
string header = "Video mode: ";
if(message == "<< Prev")
{
notecardline--;
if(notecardline < 0)
notecardline = numberofnotecardlines - 1;
tempuser = id;
llGetNotecardLine(NOTECARD,notecardline);
return;
}
if(message == "Next >>")
{
notecardline++;
if(notecardline >= numberofnotecardlines)
notecardline = 0;
tempuser = id;
llGetNotecardLine(NOTECARD,notecardline);
return;
}
if(message == "Use")
{
if(tempurl == "** No URL specified! **")
tempurl = "";
seturl(tempurl,id);
return;
}

if(message == "Menu")
{
menu(id);
return;
}
if(message == "Configure")
{
config(id);
return;
}
if(message == "Bookmarks")
{
if(notecardcheck != -1)
{
llDialog(id,"Error: No valid bookmark data found in notecard '"+NOTECARD+"'.",["Menu"],chan);
return;
}
if(finditem(NOTECARD) != -1)
{
tempuser = id;
if(numberofnotecardlines < notecardline)
notecardline = 0;
llGetNotecardLine(NOTECARD,notecardline);
}
else
llDialog(id,"Error: No notecard named "+NOTECARD+" found in contents.",["Menu"],chan);
return;
}

if(llGetLandOwnerAt(llGetPos()) != llGetOwner()) //If we do not have permissions to actually do the following functions
{
llSay(0,"Error: Cannot modify parcel media settings. "+llGetObjectName()+" is not owned by parcel owner.");
menu(id);
return; //Abort
}

if(listenurl != -1 && channel == 1) //Incoming data from "Set URL" command (user spoke on channel 1)
{
llListenRemove(listenurl);
listenurl = -1;
seturl(message,id);
}
if(message == "Play")
{
llSetObjectDesc(header+"Playing");
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]);
return;
}
if(message == "Stop")
{
llSetObjectDesc(header+"Stopped");
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);
return;
}
if(message == "Pause")
{
llSetObjectDesc(header+"Paused");
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PAUSE]);
return;
}
if(message == "Unload")
{
llSetObjectDesc(header+"Stopped");
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_UNLOAD]);
return;
}
if(message == "Loop")
{
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_LOOP]);
return;
}
//URL , Auto-Scale,
if(message == "Set URL")
{
llSetObjectDesc(header+"Stopped");
listenurl = llListen(1,"",id,"");
// llInstantMessage(llGetOwner(),"Please type the URL of your choice with /1 at the begining. For example, /1 www.google.com");
llDialog(id,"Please type the URL of your choice with /1 in thebegining. For example, /1 www.google.com",["Ok"],938);
return;
}
if(message == "Align ON")
{
llSetObjectDesc(header+"Stopped");
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_AUTO_ALIGN,TRUE]);
menu(id);
return;
}
if(message == "Align OFF")
{
llSetObjectDesc(header+"Stopped");
llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_AUTO_ALIGN,FALSE]);
menu(id);
return;
}
}
}

dataserver(key queryid, string data)
{
if(queryid == tempuser) //If just checking number of notecard lines
{
numberofnotecardlines = (integer)data;
notecardcheck = 0;
llGetNotecardLine(NOTECARD,notecardcheck);
return;
}
if(notecardcheck != -1)
{
if(data != EOF)
{
if(data == "")
{
notecardcheck++;
llGetNotecardLine(NOTECARD,notecardcheck);
}
else
{
notecardcheck = -1;
return;
}
}
else
return;
}

if(data == "" && notecardline < numberofnotecardlines) //If user just pressed "enter" in bookmarks, skip
{
notecardline++;
llGetNotecardLine(NOTECARD,notecardline);
return;
}

if(data == EOF)
{
notecardline = 0;
llGetNotecardLine(NOTECARD,notecardline);
return;
}
list parsed = llParseString2List(data,["|","| "," |"," | "],[]); //Ensure no blank spaces before "http://".
string name = llList2String(parsed,0);
tempurl = llList2String(parsed,1);
if(tempurl == "")
tempurl = "** No URL specified! **";

llDialog(tempuser,"Bookmarks notecard ("+(string)(notecardline+1)+"/"+(string)numberofnotecardlines+")\n"+name+" ("+mediatype(llList2String(llParseString2List(tempurl,["."],[]),-1))+")\n"+tempurl,["<< Prev","Use","Next >>","Menu"],chan);
}

timer()
{
if(llGetTime() > listenTimer) //If listener time expired...
{
llListenRemove(listenHandle); //Remove listeneres.
llListenRemove(listenurl);
listenHandle = -1;
listenurl = -1;
listenTimer = -1;
if(loop_image == FALSE || mode != 1) //If we're not looping pictures or are in picture mode at all
llSetTimerEvent(0.0); //Remove timer
}

if(loop_image == TRUE && mode == 1) //If we're looping pictures and and we're in picture mode...
next(); //Next picture
}
}
Torley Linden
Enlightenment!
Join date: 15 Sep 2004
Posts: 16,530
04-02-2005 16:56
w00t Crystal! I have to see this for myself soon... like ya said. So cool to hear about your idea and then know you've brought (brung?) it to life on Second Life. I think this is gonna come in handy for a lot of people. Hehe. :)
_____________________
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
04-02-2005 18:40
I was considering releasing a simple media script, but I'd say this works nicely. Good job. :)
_____________________
---
Csven Concord
*
Join date: 19 Mar 2005
Posts: 1,015
04-02-2005 22:12
thank you. :)
Ursula Madison
Chewbacca is my co-pilot
Join date: 31 Jul 2004
Posts: 713
04-03-2005 04:21
Very cool, indeed. I picked up the copy you had in world because I'm lazy. Works really well. I also picked up the excellent Dance Foo while I was there. :D
_____________________
"Huh... did everything just taste purple for a second?" -- Philip J. Fry
Echo Dragonfly
Surely You Jest
Join date: 22 Aug 2004
Posts: 325
04-03-2005 06:43
Thanks so much Crystal!! Works wonderfully! :D
_____________________
Creativity represents a miraculous coming together of the uninhibited energy of the child with its apparent opposite and enemy, the sense of order imposed on the disciplined adult intelligence.
Norman Podhoretz
......................
If quizzes are quizzical, what are tests? :eek:
............................
Do illiterate people get the full effect of Alphabet Soup? :rolleyes:
Huns Valen
Don't PM me here.
Join date: 3 May 2003
Posts: 2,749
04-03-2005 08:19
Neato.
Kim Charlton
Registered User
Join date: 9 Feb 2005
Posts: 134
04-03-2005 11:15
Excellent! I especially like that it is totally 'dialog controlled'. Very easy, very intuitive! The code is beautifully structured and easy to customize. And browsing the source code seems one of the best ways to understand the new media features of 1.6 fo me:)
Vortex Saito
Quintzee Creator
Join date: 10 Sep 2004
Posts: 73
Group
04-03-2005 15:55
Hi,

Is there a way of making this also useable on groupland ??

Thnx
Siro Mfume
XD
Join date: 5 Aug 2004
Posts: 747
04-03-2005 15:58
make it useable on group land by setting the script, the object, and the bookmark to yes mod/copy/transfer and share with group. Then deed the object to group. Everyone in the group on group land will then be able to edit bookmarks and use the object. Pretty sure anyway.

Very good script CrystalShard, thanks.
Kats Kothari
Disturbingly Cute
Join date: 14 Aug 2003
Posts: 556
04-03-2005 16:34
Thank you Crystal for the script. You r0xx0rz! :D
_____________________
Maker of many kawaii items: Dolls, huggable plushies, and purses with cute critters.
Visit Kats' Kreatures for a better look and feel free to explore! =^_^=
Kats' Kreatures Gualala (140,9)


"The cat is cryptic, and close to strange things which men cannot see..."
- H.P. Lovecraft
Talen Morgan
Amused
Join date: 2 Apr 2004
Posts: 3,097
04-03-2005 20:31
After struggling with media this script was just the thing :D

Very well done!
_____________________
Build a man a fire and he'll be warm for a day...set a man on fire and he'll be warm the rest of his life :D
Kyrah Abattoir
cruelty delight
Join date: 4 Jun 2004
Posts: 2,786
04-04-2005 04:43
i support this beauty of code heavily
_____________________

tired of XStreetSL? try those!
apez http://tinyurl.com/yfm9d5b
metalife http://tinyurl.com/yzm3yvw
metaverse exchange http://tinyurl.com/yzh7j4a
slapt http://tinyurl.com/yfqah9u
Synergy Belvedere
Prim Reaper
Join date: 7 Jul 2004
Posts: 253
04-04-2005 08:10
Great Code, wish I could see it in action :( I'm on group land and tried the steps mentioned above, but still nothing shows. Any ideas? (seem to remember this happening with scripted stereos on my land too)
Newfie Pendragon
Crusty and proud of it
Join date: 19 Dec 2003
Posts: 1,025
04-04-2005 08:20
From: Synergy Belvedere
Great Code, wish I could see it in action :( I'm on group land and tried the steps mentioned above, but still nothing shows. Any ideas? (seem to remember this happening with scripted stereos on my land too)


If it has the same issue as llSetParcelMusicURL, then the issue is that the prim itself has to be group owned. You have to set the group on the prim, and deed it to the group. If you wish to edit it afterwards,make sure you have the appropriate permissions set!


- Newfie
_____________________
Eloise Pasteur
Curious Individual
Join date: 14 Jul 2004
Posts: 1,952
04-04-2005 09:04
I have played with this a little yesterday and I have to say I'm really impressed, congratulations on a lovely bit of code.

Group land things sometimes require the owner to be an officer of the land-holding group to work for things that only work for the land owner normally, I don't know if that applies to you or not.

Recompiling the script AFTER it's group owned might help too, I think you can still do that. I didn't observe it in action, but I do remember a friend saying they'd done something like that and made it work that way.
Miguel Klein
Second Life Resident
Join date: 6 Nov 2004
Posts: 4
04-05-2005 00:00
Do I have to own land to use it? Would I be able to use it on a friend's land?
CrystalShard Foo
1+1=10
Join date: 6 Feb 2004
Posts: 682
04-05-2005 00:54
Hiya. Please check back on the previous posts in this thread. :)

In order for the script to work, the object must be owned by the owner of the land. So if you are on the parcel of a friend, the friend need to own the object.
Rose Portocarrero
Here to look cute
Join date: 23 May 2004
Posts: 168
Need a test stream
04-05-2005 06:12
Hi, I have this set up on my group land, and so far the script appears to be working well. The problem comes in that when I "play" a url (I picked one from archive.org) nothing happens. I get the grey screen after the test pattern, and it just sits there. *yes, I do have media enabled in preferences*

I tried streaming the same url out of SL and my installed quicktime viewed it on the web page, so I'm not sure now if its quicktime persay, SL or the group land issue.

Anyway, does anyone have a url that they have tested *please no porn links ;-) * so I can start eliminating problem sources?

And Crystalshard, thank you so much for this script. I'm sure with some patience I'll get it running on our land and we can finally have a working tv. ;-)

- Rose
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
04-05-2005 06:18
If you are on group land, the media commands will only work if the object is deeded to the group.

In the llSetPrimitiveParams commands the some white space could be used with the comma's, that way the forum won't place spaces in where it likes. Also breaking them across multiple lines would make it easer to read :P

Script looks really good :)
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river.
- Cyril Connolly

Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence.
- James Nachtwey
Rose Portocarrero
Here to look cute
Join date: 23 May 2004
Posts: 168
04-05-2005 12:44
Hello Strife! yes, I have the prim, the script and the notecard all set to full perms and share with group/deeded to group. The script is apparently functioning, as it does set the url for the parcel as it should.

I'm not saying that the group land issue may not be the problem, but that I did infact set to group as I have my stereo system.

Has anyone got thier's to run on group land and if so, do you have a url you know works? I'm not so much looking for a freebie movie here as much as I am just interested in eliminating sources of the problem. ;-)

Thank you again for the troubleshooting help.

- Rose
Vortex Saito
Quintzee Creator
Join date: 10 Sep 2004
Posts: 73
04-05-2005 13:38
I've done it a bit differently, if I deeded mine to the group all my inventory stuff became no copy, no modify, no transfer. So I tore the script apart and put all the land controls in a single prim deeded to the group. And let the 'main' script say all the commands/info from the notecard to do that prim on a high chat channel. ;)
iblindfool Weary
Registered User
Join date: 13 Feb 2005
Posts: 9
Video Stream on Rental Group Property
04-05-2005 16:50
Would that work on a Rental Property?

I would love to e able to configure the video stream via the bookmark card, without having to contact the poor landlord each time.

I created a TV and the Picture viewer works fine, but the video tells me the following:

"Flat Screen Video Stream: No parcel media texture found. Setting texture to default: 6e0f05ad-1809-4edc-df29-fae3d2a6c9b8
Flat Screen Video Stream: Error: Cannot modify parcel media settings. Flat Screen Video Stream is not owned by parcel owner."

Though we have already set a texture previously, which is still active and working, it use's default, wghicg is fine...but the next echo does me in.......


Any guidance is appreciated.
LadyMacbrat Loveless
Registered User
Join date: 15 Oct 2004
Posts: 211
04-05-2005 16:52
From: Rose Portocarrero
Hi, I have this set up on my group land, and so far the script appears to be working well. The problem comes in that when I "play" a url (I picked one from archive.org) nothing happens. I get the grey screen after the test pattern, and it just sits there. *yes, I do have media enabled in preferences*

I tried streaming the same url out of SL and my installed quicktime viewed it on the web page, so I'm not sure now if its quicktime persay, SL or the group land issue.

Anyway, does anyone have a url that they have tested *please no porn links ;-) * so I can start eliminating problem sources?

And Crystalshard, thank you so much for this script. I'm sure with some patience I'll get it running on our land and we can finally have a working tv. ;-)

- Rose


I have found that the videos at archive.org end in .mp4 and even though they play in quicktime on my machine, they don't seem to be recognized in SL. :-(
1 2