Red5 RTMP Protocol


Hits: 3544  

rtmp protocol

RTMP: Real Time Messaging Protocol

It is TCP based protocol developed by Adobe System for streaming Audio/Video between Flash Player and Media server.

RTMPT: Real Time Messaging Protocol with Tunnel

It is a variation of RTMP which works behind the firewalls.

RTMPE: Real Time Messaging Protocol with Encryption

It is a new encrypted protocol developed by Adobe systems for securing (lightweight than SSL) the streams between flash client and Media server. It provide DRM solution from Adobe for flash.

RTMPS: Real Time Messaging Protocol Secure

It is a variation of RTMP which works over secure HTTPS connection.

RTMPTE: Real Time Messaging Protocol with Encryption and Tunnel

It is a RTMPE tunneling over HTTP.

How to enable rtmpt on Red5 Server?

/usr/local/red5/conf/jee-container.xml uncomment full section

<!– RTMPT (dedicated server) –>

<bean id=”rtmpt.server” class=”org.red5.server.tomcat.rtmpt.RTMPTLoader” init-method=”init” lazy-init=”true”>

 

MP3 waveforms with PHP


Hits: 6580  

If you are thinking how soundcloud.com generates the waveform for sound MP3 player?

soundcloud-waveform

There are some audio processing libraries used to process MP3 files to WAV and then PNG / SVG images..

MP3 to WAV to PNG

1. LAME MP3 encoder/decoder

$ lame input.mp3 -f -m m -b 16 –resample 8 resampled.mp3 && lame –decode resampled.mp3 output.wav

2. SOX – Sound eXchange

$ sox output.wav −n spectrogram
$ sox output.wav -n spectrogram -Y 140 -l -r -o output.png

3. wav2png – Creates waveform pngs out of audio files

$ sox mp3-song.mp3 -c 1 -t wav – | wav2png -o mp3-song.png /dev/stdin
$ wav2png –foreground-color=2e4562ff –background-color=00000000 -o  output.png   input.wav

WaveForm generated using SOX

WaveForm Generator using SOX

Links:

https://github.com/afreiday/php-waveform-png
https://github.com/afreiday/php-waveform-svg
https://github.com/beschulz/wav2png
https://github.com/beschulz/wav2json
http://www.rarewares.org/mp3-lame-bundle.php

Liquidsoap GStreamer


Hits: 5578  

LiquidSoap Liquidsoap is a programming language to manage audio and video source streams for Icecast Radio server.

Liquidsoap is a powerful and flexible language for describing, creating or transforming streams. It offers rich operators and library that you can be used for making Icecast Radio Server.

Now Play Your Favorite Radio FM Stream in HTML5 Player…..
Live Audio Streaming, Internet Radio Player

Features

* It can play icecast stream from files, playlists, directories or scripted playlists.
* Liquidsoap used for scheduling of source streams.
* It help to Mix sources streams.
* It allows queuing of user requests.
* It allows sound compression, normalization, echo, volume, Blank detection.
* It is useful for rewriting and inserting Metadata in Radio Stream.
* It can play live stream play files and streams like Last.fm.
* It can output to Radio Server Icecast/Shoutcast (MP3/Ogg).
* It also support Video streams generation.

You can use it to stream RTMP MP3 stream to Icecast/Shoutcast using mplayer, rtmpdump or gstreamer …

GStreamer- open source multimedia framework

GStreamer provide a rich library to manage streaming audio/video with complex audio (mixing) and video (non-linear editing) processing.

#!/usr/bin/liquidsoap
set(“log.file.path”,”logs/gs.log”)
set(“log.file”,true)
set(“log.stdout”,true)
….
….
gst = input.gstreamer.audio(pipeline=”playbin uri=rtmp://server.com/livestream.mp3″)
output.icecast(%mp3(), host = “localhost”, port = 8000, password = “xxxxxx”, mount = “gst stream”, fallible=true, gst)

Common Errors

File format problem can display ^M characters

😉 : set ff=unix and then : x in vi editor

init: security exit, root euid (user)

😉 you need to run liq file with non root user

the variable input.gstreamer.audio used here has not been previously defined

😉 Define variable “input.gstreamer.audio” .. .find here https://github.com/savonet/liquidsoap/tree/master/scripts

Stay connected for more Audio / Video Programming ….

Install Airtime – open source radio automation software


Hits: 7890  

Airtime is open source radio automation software (GPL v3) for GNU/Linux platforms. It’s recommend installing on Ubuntu Linux 12.04 LTS or Debian Squeeze on a computer with at least a 1 GHz processor and 512 MB of RAM for a Server Edition OS or 1GB of RAM for a Desktop Edition OS.

Download airtime-easy-setup

$ sudo wget http://apt.sourcefabric.org/misc/airtime-easy-setup.deb
$ sudo apt-get install gdebi

$ sudo gdebi airtime-easy-setup.deb

Airtime-Icecast
Airtime-Icecast

Unpacking airtime-easy-setup (from airtime-easy-setup.deb) …
Setting up airtime-easy-setup (2.3.0-1) …
Installing Sourcefabric package signing key…
OK
Setting up Airtime for Etc/UTC timezone…
Setting Icecast and Airtime domain names to ip-10-xxx-yy-74.ec2.internal…
Setting defaults for non-interactive installation…
Checking that the server has a UTF-8 locale…
en_US.UTF-8 is the default locale on this server and appears to support UTF-8 encoding.

Now please run the commands:

sudo apt-get update
sudo apt-get install airtime

After that, installation of Airtime should be complete in a couple of minutes.

You should then be able to log in to Airtime at http://ip-10-xxx-yy-74.ec2.internal/
Processing triggers for man-db …

Install Airtime

$ sudo apt-get update
$ sudo apt-get install airtime

*** Verifying your system environment, running airtime-check-system ***
AIRTIME_STATUS_URL = http://ip-10-xxx-yy-74.ec2.internal:80/api/status/format/json/api_key/%%api_key%%
AIRTIME_SERVER_RESPONDING = OK
KERNEL_VERSION = 3.5.0-21-generic
MACHINE_ARCHITECTURE = x86_64
TOTAL_MEMORY_MBYTES = 604072
TOTAL_SWAP_MBYTES = 0
AIRTIME_VERSION = 2.3.0
OS = Ubuntu 12.10 x86_64
CPU = Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
WEB_SERVER = Apache/2.2.22 (Ubuntu)
PLAYOUT_ENGINE_PROCESS_ID = 19766
PLAYOUT_ENGINE_RUNNING_SECONDS = 32
PLAYOUT_ENGINE_MEM_PERC = 2.6%
PLAYOUT_ENGINE_CPU_PERC = 0.9%
LIQUIDSOAP_PROCESS_ID = 19801
LIQUIDSOAP_RUNNING_SECONDS = 31
LIQUIDSOAP_MEM_PERC = 3.4%
LIQUIDSOAP_CPU_PERC = 7.9%
MEDIA_MONITOR_PROCESS_ID = 19701
MEDIA_MONITOR_RUNNING_SECONDS = 38
MEDIA_MONITOR_MEM_PERC = 2.4%
MEDIA_MONITOR_CPU_PERC = 0.0%
RABBITMQ_PROCESS_ID = 16705
RABBITMQ_RUNNING_SECONDS = 427
RABBITMQ_MEM_PERC = 4.8%
RABBITMQ_CPU_PERC = 0.9%
— Your installation of Airtime looks OK!

******************************* Install Complete *******************************
Setting up liquidsoap-plugin-faad (1.0.1+repack1-1) …
Processing triggers for libc-bin …
ldconfig deferred processing now taking place

Airtime
Airtime

Help: http://en.flossmanuals.net/airtime-en-2-3/easy-setup/

Install Admin Panel in Red5


Hits: 16807  

Hope you already read our previous articles for installing Red5 on different cloud based servers…

You can access Red5 Admin Panel after successful install of Red5 Server using

http://your-ip-address:5080/demos/adminPanel.html

Check if you have access to http://your-ip-address:5080/admin/ ??

Red5 Admin Panel
Red5 Admin Panel

You must double check admin application is installed in Red5 Home (i.e. /usr/share/red5/webapps) or not?

Red5 Home Folder
Red5 Home Folder

If you could not find Red5 Admin Application in /usr/share/red5/webapps .. then you need to install admin panel ….

Install Admin Panel in Red5

# cd /usr/local/red5
# mkdir plugins
# cd plugins
# wget http://red5.googlecode.com/files/AdminPlugin-1.0.zip
# unzip -d /usr/local/red5/plugins AdminPlugin-1.0.zip

Download admin.jsp

# cd /usr/local/red5/webapps
# mkdir admin
# cd admin
# wget http://red5.googlecode.com/files/admin.jsp

Restart Red5 Server
# cd /usr/local/red5
# ./red5.sh &

Or

# service red5 restart (if you have red5 service enabled)

Register admin user here

http://your-ip-address:5080/admin/admin.jsp

Red5 Admin First Time
Red5 Admin First Time

Login to Red5 admin panel

http://your-ip-address:5080/demos/adminPanel.html

Red5 Admin Panel Live Application
Red5 Admin Panel Live Application
Red5 Admin Live Application Clients
Red5 Admin Live Application Clients

Install Streaming Audio Server With Icecast 2.3.3


Hits: 10512  

I need to install streaming audio server with Icecast (OGG/MP3) for one of my great client in service of http://html5.svnlabs.com/. Icecast was designed to stream any audio file using ices and icegenerator for MP3 and OGG/Vorbis audio files.

HTML5 MP3 Player with Playlist
HTML5 MP3 Player with Playlist

I already did lot of work using Shoutcast, SAMCast and SAM Broadcaster, Its very easy to use audio casting server online.

Today we will try to install Icecast 2.3.3 on CentOS x86_64 Server…

icecast is free server software for streaming multimedia.
icecast is free server software for streaming multimedia.

Setup Icecast Server

Download source and rpm needed

# yum groupinstall “Development Tools”
# yum install -y curl-devel libtheora-devel libvorbis-devel libxslt-devel speex-devel libxslt
# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# cd /home
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# mkdir -p /usr/src/icecast
# cd /usr/src/icecast
# wget http://downloads.xiph.org/releases/icecast/icecast-2.3.3.tar.gz

Unzip Icecast source

# tar xf icecast-2.3.3.tar.gz
# cd icecast-2.3.3

Configure, Compile and Install

# ./configure –prefix=/opt/icecast/2.3.3
# make
# make install

You might find icecast binary .. please confirm 😉

# ls /opt/icecast/2.3.3/bin/

Configure icecast with icecast.xml
# cd /opt/icecast/2.3.3/etc
# vi icecast.xml

Find more help here to setup xml file http://icecast.org/docs/icecast-2.3.1/icecast2_config_file.html

Create icecast user & group

# groupadd -g 200 icecast
# useradd -d /var/log/icecast -m -g icecast -s /bin/bash -u 200 icecast

Before start icecast server check permission and make log folder
# mkdir -p /var/run/icecast
# chown -R icecast:icecast /var/run/icecast

Start the icecast server

# /opt/icecast/2.3.3/bin/icecast -c /opt/icecast/2.3.3/etc/icecast.xml -b   (background)

You will find Icecast server running here
http://Server-IP:8000/

Icegenerator – MP3 streaming client

Compile libshout and lib3lib (ID3 support), run ldconfig

# cd /usr/src/icecast
# wget http://downloads.us.xiph.org/releases/libshout/libshout-2.3.1.tar.gz

# tar xf libshout-2.3.1.tar.gz
# cd libshout-2.3.1

# ./configure –prefix=/opt/icecast/2.3.3
# make
# make install

Install icegenerator

# cd /usr/src/icecast
# wget http://netcologne.dl.sourceforge.net/project/icegenerator/icegenerator/0.5.5-pre2/icegenerator-0.5.5-pre2.tar.gz
# tar xfz icegenerator-0.5.5-pre2.tar.gz
# cd icegenerator-0.5.5-pre2

# ./configure
# make
# make install

Now configure icegenerator to create MP3 radio station

# vi /usr/local/etc/svnlabs

IP=127.0.0.1
PORT=8000
SERVER=2
MOUNT=/svnlabs
PASSWORD=password***
FORMAT=1
MP3PATH=m3u:/var/www/html/svnlabs.m3u
LOOP=1
SHUFFLE=1
NAME=SVNLabs MixStreams
DESCRIPTION=SVN Labs Softwares
GENRE=svnlabs
URL=http://Server-IP:8000/
LOG=2
LOGPATH=/var/log/icecast/icegen.log
BITRATE=48000
SOURCE=source

You can even use MP3 folder path

MP3PATH=pth://var/www/html/songs

Create playlist file

# vi /usr/local/etc/svnlabs.m3u

/var/www/html/songs/svnlabs1.mp3
/var/www/html/songs/svnlabs2.mp3

Or try ….

# find /var/www/html/songs/ -name “*.mp3” > /var/www/html/svnlabs.m3u

Make sure you have setup all paths
# su – icecast -c “export LD_LIBRARY_PATH=/opt/icecast/2.3.3/lib:$LD_LIBRARY_PATH; /usr/local/bin/icegenerator -f /usr/local/etc/svnlabs”

Get more help from here for icegenerator variables http://www.becrux.com/index.php?page=projects&name=icegenerator

http://Server-IP:8000/svnlabs

Start other radio station using Running Icecast Server

# /usr/local/bin/icegenerator -f /usr/local/etc/indie

Icecast Streaming Media Server
Icecast Streaming Media Server

Kaltura Red5 iOS Live Streams Setup


Hits: 7459  

We have a plugin that can be used for streaming kaltura live red5 rtmp to mobile devices.

Kaltura Red5 Live Plugin take below data to segment live video stream

– Red5 Live Video RTMP Stream Link
– Red5 Stream Name
– Publishing Folder
– Publishing Link

Configure Live Stream for Mobile on Kaltura Red5
Configure Live Stream for Mobile on Kaltura Red5

The Main feature of this plugin to show live RTMP streams using Adobe FMLE, on computers using the Kaltura Player and HTML5 player on mobile devices using M3U8 video iOS compatible format.

– Capture Red5 live kaltura stream for FFMpeg Segmentation
– Manage Segmented Clips in M3U8 format
– Stream iOS compatible video to iPhone / iPad in HTML5 Player
– Track Analytic / Stats for live stream in HTML5 Player
– Embed code for HTML5 Player
– Track process log

Live Stream for Mobile on Kaltura Red5
Live Stream for Mobile on Kaltura Red5
KMC - content - manage
KMC – content – manage

Process Log Live Stream for Mobile on Kaltura Red5

Process Log Live Stream for Mobile on Kaltura Red5
Process Log Live Stream for Mobile on Kaltura Red5

Embed Code Live Stream for Mobile on Kaltura Red5

Embed Live Stream for Mobile on Kaltura Red5
Embed Live Stream for Mobile on Kaltura Red5

Related Articles
* VOD to iOS
* Record Audio from Websites
* Red5 Media Server iOS Android Setup

Kaltura Live Red5 CAM RTMP to iOS (iPhone or iPad). Get more help for HTTP Live Video Stream Segmenter and Distributor Contact Us

RTMP (Red5) -> FFMpeg -> Segementer -> .ts files -> iOS (m3u8)

Create Website Thumbnails using PhantomJS


Hits: 9124  

Hope you read my old article “Create WebThumb using LAMP”, it used for creating web thumbnails from Xvfb virtual framebuffer that is more time and resource consuming.

Shell Script with Xvfb try to open web browsers in real remote server to capture web-thumbs…

That whole setup might take a full day and image quality is very bad….

Thanks to PhantomJS

PhantomJS is a headless WebKit with JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

Simple Javascript example

console.log(‘Loading a web page’);
var page = require(‘webpage’).create();
var url = ‘http://www.svnlabs.com/’;
page.open(url, function (status) {
//Page is loaded!
phantom.exit();
});

Features:

– Headless Website Testing
– Screen Capture
– Page Automation
– Network Monitoring

Fork on Github https://github.com/ariya/phantomjs

PhantomJS is using WebKit for a real layout and rendering engine, it can be used to capture web page as screenshot or PDF files. PhantomJS can render anything on the web page, it can be used to convert contents in HTML/CSS, SVG and Canvas.

URL2PNG-URL2PDF-HTML2JPG-URL2IMAGE
URL2PNG-URL2PDF-HTML2JPG-URL2IMAGE
// Thumbnail of Webpage using webthumb.js

var page = require('webpage').create(),
    system = require('system'),
    weblink,
    fname;

if (system.args.length !== 3) {
    console.log('Usage: webthumb.js webURL filename');
    console.log('Usage: webthumb.js http://www.svnlabs.com svnlabs.png');
    phantom.exit(1);
} else {
    weblink = system.args[1];
    fname = system.args[2];    
    page.viewportSize = { width: 320, height: 480 };
    page.open(weblink, function (status) {
    if (status !== 'success') {
        console.log('Unable to open webpage!');
    } else {
        page.render(fname);
    }
    window.setTimeout(function () {
      phantom.exit();
    }, 3000);
    });
}

Download webthumb.js

# phantomjs webthumb.js http://www.svnlabs.com svnlabs.png
# phantomjs webthumb.js http://www.svnlabs.com svnlabs.pdf

You can even capture webpage as good quality PDF file 😉

Output:

svnlabs.png
svnlabs.pdf

You can also use examples/rasterize.js for same sort of functions 😉

# phantomjs examples/rasterize.js http://www.svnlabs.com/ svnlabs.png
# phantomjs examples/rasterize.js ‘http://www.svnlabs.com/’ svnlabs.pdf

rasterize.js – rasterizes a web page to image or PDF
render_multi_url.js – renders multiple web pages to images
technews.js – captures Google News as a PNG image

Free Cloud Server Hosting


Hits: 7801  

Benefits of Free Cloud Hosting

* Self-Managed with Console
* Free storage
* Easy application deployment
* Production ready apps
* Cloud hosts (IaaS)
* Automatic backup & recovery
* Server resizing
* Migration facility
* Portability
* Cloud portability
* Free bandwidth
* Enhanced performance
* High availability of resources
* Data storage redundancy
* Growth flexibility
* Economical

AWS Free Usage Tier

Deploy a Sample Web Application in the Free Usage Tier
Deploy a Sample Web Application in the Free Usage Tier

Google App Engine – Easy to build, Easy to scale, Easy to maintain
Try Free … Google Cloud Storage, Google BigQuery and Google Cloud SQL

Google App Engine — Google Developers
Google App Engine — Google Developers

PHPCloud – Zend Developer Cloud, as its name suggests, a cloud-based environment designed to help you code more quickly and more efficiently. It includes a robust PHP stack, advanced debugging capabilities, collaboration tools and much more. Zend Developer Cloud is only a few clicks away and does not require any installation. To make it even better, it’s absolutely free!

PHP Cloud
PHP Cloud

HP Cloud – Open source-based public cloud computing HP tailored for developers and enterprise. Ready-to-use Storage, PaaS, IaaS, solutions from a rich partner community.

Cloud Computing - HP Cloud Services - Storage
Cloud Computing – HP Cloud Services – Storage

AppFog – The Best Public Cloud PaaS, Now Available on Private Clouds Simple, elegant, and modern way to develop and deploy apps. Unlimited apps within 2GB RAM, Up to 8 service instances 100MB per MySQL or PostgreSQL instance.

https://phpfog.com/ Rock-solid Cloud Platform for PHP by AppFog.

AppFog- PaaS for Public and Private Clouds
AppFog- PaaS for Public and Private Clouds

Xeround – A ridiculously simple, seriously powerful CLOUD DATABASE Xeround is an elastic, always-on database-as-a-service for your MySQL applications.

Cloud Database
Cloud Database

ClearDB is a reliable, fault tolerant database-as-a-service for your MySQL powered applications.

ClearDB - The Ultra Reliable, Globally Distributed Cloud Database For Your MySQL Applications
ClearDB – The Ultra Reliable, Globally Distributed Cloud Database For Your MySQL Applications

Gozure is cloud hosting built for website and blog owners. Run WordPress, Joomla, Drupal, and many other web applications on our powerful platform and get started for free. Gozure uses a simple control panel so no technical experience is necessary.

Gozure - Free Cloud Hosting
Gozure – Free Cloud Hosting

BitNami provides free, ready to run environments for your favorite open source web applications and frameworks, including Drupal, Joomla!, WordPress, PHP, Rails, Django and many more. And with BitNami Cloud Hosting, enjoy automatic backups, monitoring, and more.

BitNami- Open Source. Simplified
BitNami- Open Source. Simplified

PagodaBox is a relatively new Cloud PaaS provider, accessed at PagodaBox.com. PagodaBox markets itself is a PHP specialist. This is proven by the fact that PagodaBox features popular PHP projects like PyroCMS, WordPress, Kohana and CodeIgniter for easy 1-click installations.

Premier Cloud Hosting
Premier Cloud Hosting

OpenShift is Red Hat’s free, auto-scaling Platform as a Service (PaaS) for applications. As an application platform in the cloud, OpenShift manages the stack so you can focus on your code.

OpenShift by Red Hat
OpenShift by Red Hat

Cloud Foundry – Deploy and scale applications in seconds, without locking yourself into a single cloud.

Cloud Foundry
Cloud Foundry

Apprenda is an Open Platform as a Service (PaaS) stack that enables any organization to transform their existing infrastructure into a self-service cloud application platform.

Open Platform as a Service (PaaS) for .NET - Apprenda
Open Platform as a Service (PaaS) for .NET – Apprenda

The CloudBees Platform as a Service (PaaS) architecture provides a powerful foundation for cloud development and deployment services.

CloudBees- The Java PaaS Company
CloudBees- The Java PaaS Company

Orchestra is a Platform as a Service for deploying (PHP Hosting), scaling and managing PHP applications. Built on Amazon Web Services, it integrates with your workflow, autoscales up and down and gives you extra capabilities with powerful add-ons. Engine Yard provides a portfolio of options that let you begin deploying for your applications for free and then allows you to upgrade to elastic, dedicated resources when you’re ready to go into production. Think Orchestra PHP hosting for PHP development.

Ruby On Rails and PHP Cloud Hosting PaaS - Managed Rails Development - Engine Yard Platform as a Service
Ruby On Rails and PHP Cloud Hosting PaaS – Managed Rails Development – Engine Yard Platform as a Service

Jelastic Java Host – Rock-solid Java in the Cloud Auto-scales. Easy to deploy. Runs ANY Java app.

Jelastic — Top Java Host, Rock-Solid Java in the Cloud, Java Server Hosting, Java Cloud Computing
Jelastic — Top Java Host, Rock-Solid Java in the Cloud, Java Server Hosting, Java Cloud Computing

dotCloud – Build your ideal application stack by combining powerful cloud services. Experiment for free, then go live and only pay for what you need.

dotCloud - One home for all your apps
dotCloud – One home for all your apps

Cloudflare – Give us five minutes and we’ll supercharge your website.

CloudFlare - The web performance & security
CloudFlare – The web performance & security

And Many More ……..

If you are really interested in Cloud Computing, you can find more “Free PaaS” or “Free Cloud” to take advantage of free cloud hosting 😉

Cross Browser Flash Detection in Javascript


Hits: 6826  

Option 1:

<script type="text/javascript">

      $(document).ready(function(){

      if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
      {
        alert("Flash is not insalled on your Web browser.");
      }
      else
      {
        alert("Flash is insalled on your Web browser.");
      }

      });
</script>

 

Option 2: JavaScript Flash Detection Library (Flash Detect)

<script src="flash_detect.js"></script>
<script type="text/javascript"> 
    if(!FlashDetect.installed){
        alert("Flash is not insalled on your Web browser.");         
    }else{
        alert("Flash is insalled on your Web browser.");
    }
</script>

 

Option 3: SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file

SWFObject
SWFObject

To detect whether a browser has the flash plugin, first load the SWFObject library, then:

<script>
    if (swfobject.getFlashPlayerVersion().major) {
        alert("Flash is insalled on your Web browser.");
    } else {
        alert("Flash is not insalled on your Web browser.");
    };
</script>

Other SWFObject functions:
swfobject.getFlashPlayerVersion().major is the major version
swfobject.getFlashPlayerVersion().minor is the point release
swfobject.getFlashPlayerVersion().release is the build number

 

Option 4: jQuery SWFObject

if (!$.flash.hasVersion('9')) {
 //has Flash
 alert("Flash is insalled on your Web browser.");
}
else {
 //no_flash
 alert("Flash is not insalled on your Web browser."); 
}