Helix media activity: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
Line 131: Line 131:
|}
|}


<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Controls == {| class="wikitable" |- | Icon | Name | Description | Keybinding |- |[[Image:watch-listen-previous.svg|55px|center|]] |Previous |Skips to the previous track in the playlist |- |[[Image:watch-listen-play.svg|55px|center|]] |Play |Starts playback when video is stopped or in the paused state.</span> Controles == == (| class = "wikitable" | - | Icono | Nombre | Descripción | Keybinding | - | [[Imagen: ver-escuchar-previous.svg | 55 px | centro |]] | Previo | saltan a la anterior pista en la lista de reproducción | - | [[Imagen: ver-escuchar-play.svg | 55 px | centro |]] | Juega | Inicia la reproducción de vídeo cuando está detenido o en pausa en el estado.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">This button toggles with pause |- |[[Image:watch-listen-pause.svg|55px|center|]] |Pause |Pauses playback at the current position in the file.</span> Este botón se alterna con pausa | - | [[Imagen: ver-escuchar-pause.svg | 55 px | centro |]] | Pausa | pausas de reproducción en la posición actual en el archivo.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">This button toggles with play.</span> Este botón se alterna con el juego.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">|- |[[Image:watch-listen-stop.svg|55px|center|]] |Stop |Stops playback |- |[[Image:watch-listen-next.svg|55px|center|]] |Next |Skips to the next track in the playlist |- |[[Image:watch-listen-norepeat.svg|55px|center|]] |No Repeat |Causes the media file to stop when it finishes.</span> | - | [[Imagen: ver-escuchar-stop.svg | 55 px | centro |]] | Stop | Detiene la reproducción | - | [[Imagen: ver-escuchar-next.svg | 55 px | centro |]] | Siguiente | Se saltan a la pista siguiente en la lista de reproducción | - | [[Imagen: ver-escuchar-norepeat.svg | 55 px | centro |]] | No Repetir | Hace que el archivo de medios para detener cuando se termina.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">This button toggles with Repeat |- |[[Image:watch-listen-repeat.svg|55px|center|]] |Repeat |Causes the media file to play again after it finishes.</span> Este botón se alterna con Repita | - | [[Imagen: ver-escuchar-repeat.svg | 55 px | centro |]] | Repite | Hace que el archivo de medios para volver a jugar después de que termine.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">This button toggles with No-repeat |- | |Progress bar |Shows the current time and total duration of the clip.</span> Este botón se alterna con repetir-n | - | | Progress bar | Muestra la hora actual y la duración total del clip.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">You can also seek through a media clip by clicking and dragging.</span> También puede buscar los medios de comunicación a través de un clip, haga clic y arrastrar.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">|- |[[Image:watch-listen-fullscreen.svg|55px|center|]] |Full Screen |Controls are hidden and video enlarges to full size of screen.</span> | - | [[Imagen: ver-escuchar-fullscreen.svg | 55 px | centro |]] | Pantalla completa | Los controles están ocultos y vídeo amplía a tamaño completo de pantalla.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Escape exits.</span> Escape salidas.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">|- |[[Image:watch-listen-native.svg|55px|center|]] |Native Size |Scales the video to its original size.</span> | - | [[Imagen: ver-escuchar-native.svg | 55 px | centro |]] | Tamaño nativos | Escalas el vídeo a su tamaño original.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Toggles with Fit-To-Screen |- |[[Image:watch-listen-fittoscreen.svg|55px|center|]] |Fit-To-Screen |Scales the video to the largest size that will fit within the window.</span> Alterna con Fit-To-Pantalla | - | [[Imagen: ver-escuchar-fittoscreen.svg | 55 px | centro |]] | Fit-To-Pantalla | Escalas el vídeo al tamaño más grande que caben dentro de la ventana.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Toggles with Native Size.</span> Alterna con el tamaño original.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">|- | |Buffering/Stats |The text at the bottom displays buffering status, as well as title and author of the currently playing clip.</span> | - | | Buffering / Estadísticas | El texto en la parte inferior muestra la condición de amortiguación, así como título y autor de la imagen se está reproduciendo.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">|}</span> |)</span>
== Controls ==

{| class="wikitable"
|-
| Icon
| Name
| Description
| Keybinding
|-
|[[Image:watch-listen-previous.svg|55px|center|]]
|Previous
|Skips to the previous track in the playlist
|-
|[[Image:watch-listen-play.svg|55px|center|]]
|Play
|Starts playback when video is stopped or in the paused state. This button toggles with pause
|-
|[[Image:watch-listen-pause.svg|55px|center|]]
|Pause
|Pauses playback at the current position in the file. This button toggles with play.
|-
|[[Image:watch-listen-stop.svg|55px|center|]]
|Stop
|Stops playback
|-
|[[Image:watch-listen-next.svg|55px|center|]]
|Next
|Skips to the next track in the playlist
|-
|[[Image:watch-listen-norepeat.svg|55px|center|]]
|No Repeat
|Causes the media file to stop when it finishes. This button toggles with Repeat
|-
|[[Image:watch-listen-repeat.svg|55px|center|]]
|Repeat
|Causes the media file to play again after it finishes. This button toggles with No-repeat
|-
|
|Progress bar
|Shows the current time and total duration of the clip. You can also seek through a media clip by clicking and dragging.
|-
|[[Image:watch-listen-fullscreen.svg|55px|center|]]
|Full Screen
|Controls are hidden and video enlarges to full size of screen. Escape exits.
|-
|[[Image:watch-listen-native.svg|55px|center|]]
|Native Size
|Scales the video to its original size. Toggles with Fit-To-Screen
|-
|[[Image:watch-listen-fittoscreen.svg|55px|center|]]
|Fit-To-Screen
|Scales the video to the largest size that will fit within the window. Toggles with Native Size.
|-
|
|Buffering/Stats
|The text at the bottom displays buffering status, as well as title and author of the currently playing clip.
|}


=Sample Media=
=Sample Media=

Revision as of 15:46, 22 July 2008

  english | 한국어 HowTo [ID# 146815]  +/-  
TST {{{1}}}
Trac print.png Tickets all - active - new
Translate-icon-55px.svg Localization
.POT file NEEDED

OlpcProject.png Peter Krenesky, Josh Schonstal, Justin Gallardo, Brad Morgan

see more templates or propose new


  For the general public

Description & Goals

Summary

Watch & Listen is a media player based on the Helix Media Engine. The Helix engine uses a plugin system to provide compatibility with a wide array of formats. By default Watch & Listen will ship with only free codecs, separate bundles are available for non-free codecs.

Currently, the activity is bundled with the Helix media engine all in one package for easy installation. Eventually this engine, and the python bindings providing access to it will be moved to a location allowing any activity to easily use the media engine.

Goals

Give children access to multimedia content

Licensing & Versions

This activity uses the Helix Media Engine. The Helix was formally known as RealPlayer until they released the code under the GPL and RPSL. All core parts of the Helix engine related to playback are released under the GPL and can be used royalty free. Most codecs are also released under the GPL. However, not all codecs are royalty free. RealNetworks has waived royalty fees for RealMedia codecs when used on the XO.

The default bundle will only include only Free codecs. For ease of use, bundles containing non-free codecs are available.

Name Description Current Bundle
Free Only free codecs watch-listen-14.xo
RealMedia Free codecs plus RealMedia codecs. watch-listen-realmedia-14.xo
NonFree All codecs that can be distributed by RealNetworks without royalty watch-listen-nonfree-14.xo
must be downloaded from HelixCommunity.org

Supported Media Formats

Watch & Listen can play any format that has a Helix Plugin. Not all plugins are GPL and patent free. By default only the free codecs will be shipped. Packages including non-free codecs will also be available.

Free Codecs

All of these codecs are completely open source and patent free.

  • Ogg Vorbis and Ogg Theora
  • Uncompressed PCM from .wav, avi, .aiff or .au files and standard RTP streams
  • PCM a-law and u-law from .wav, avi or .au files and standard RTP streams
  • SMIL 1.0/2.0 multimedia
  • Still images (JPEG, GIF, PNG, WBMP)
  • Text - plain from .txt files

RealMedia Codecs

RealNetworks has waived royalty fees for RealMedia codecs when used on the XO.

  • RealAudio/RealVideo Codecs
  • RealAudio and RealVideo playback from RealMedia file format and RealMedia streams.
  • RAM metafile parsing and playback
  • RealEvents and RealImageMap from .rm files and RealMedia streams
  • RealText from .rt files and RealText streams

Non-Free Codecs

Helix Plugins are available for these formats but they have patents associated with them.

  • I420 video rendering
  • MJPEG video playback from .avi files
  • MP3 audio playback from .mp3 files, standard RTP streams and shout-cast streams
  • MP3 playlist parsing and playback
  • Helix MP3 Decoder
  • Helix MP3 Encoder
  • AMR-NB and AMR-WB audio playback from .3gp and .amr files and 3GPP streams
  • RGB video from .avi files
  • H.261 video from standard RTP streams
  • H.263 video from .3gp files and standard RTP streams
  • H.264 video from .3gp files and standard H.264 RTP streams
  • MPEG1/2 file parsing
  • MPEG4 audio (no video) playback from .mp4 or .3gp files and ISMA or 3GPP streams
  • 3GPP-Rel6 file parsing and 3GPP-Rel6 audio and video playback
  • 3G2 audio depacketizers and QCelp decoder hooks
  • AAC and aacPlus decoder - More info
  • AAC and aacPlus playback from .3gp, .m4a, .aac or .ra files and 3GPP, ISMA or ice-cast streams
  • SDP file parsing
  • TimedText from .3gpp files

Collaboration

Collaboration is not available with Watch & Listen at this time due to technical limitations. The collaboration scenario envisioned is multiple children viewing the same media in sync. The XO lacks the CPU power and bandwidth for this to be practical


Visual Design

Screenshots

Watch-listen-example.png
== Controls == {| class="wikitable" |- | Icon | Name | Description | Keybinding |- |
Watch-listen-previous.svg
|Previous |Skips to the previous track in the playlist |- |
Watch-listen-play.svg
|Play |Starts playback when video is stopped or in the paused state.
Controles == == (| class = "wikitable" | - | Icono | Nombre | Descripción | Keybinding | - | 55 px | centro | | Previo | saltan a la anterior pista en la lista de reproducción | - | 55 px | centro | | Juega | Inicia la reproducción de vídeo cuando está detenido o en pausa en el estado.
This button toggles with pause |- |
Watch-listen-pause.svg
|Pause |Pauses playback at the current position in the file.
Este botón se alterna con pausa | - | 55 px | centro | | Pausa | pausas de reproducción en la posición actual en el archivo.

This button toggles with play. Este botón se alterna con el juego.

|- |
Watch-listen-stop.svg
|Stop |Stops playback |- |
Watch-listen-next.svg
|Next |Skips to the next track in the playlist |- |
Watch-listen-norepeat.svg
|No Repeat |Causes the media file to stop when it finishes.
| - | 55 px | centro | | Stop | Detiene la reproducción | - | 55 px | centro | | Siguiente | Se saltan a la pista siguiente en la lista de reproducción | - | 55 px | centro | | No Repetir | Hace que el archivo de medios para detener cuando se termina.
This button toggles with Repeat |- |
Watch-listen-repeat.svg
|Repeat |Causes the media file to play again after it finishes.
Este botón se alterna con Repita | - | 55 px | centro | | Repite | Hace que el archivo de medios para volver a jugar después de que termine.

This button toggles with No-repeat |- | |Progress bar |Shows the current time and total duration of the clip. Este botón se alterna con repetir-n | - | | Progress bar | Muestra la hora actual y la duración total del clip. You can also seek through a media clip by clicking and dragging. También puede buscar los medios de comunicación a través de un clip, haga clic y arrastrar.

|- |
Watch-listen-fullscreen.svg
|Full Screen |Controls are hidden and video enlarges to full size of screen.
| - | 55 px | centro | | Pantalla completa | Los controles están ocultos y vídeo amplía a tamaño completo de pantalla.

Escape exits. Escape salidas.

|- |
Watch-listen-native.svg
|Native Size |Scales the video to its original size.
| - | 55 px | centro | | Tamaño nativos | Escalas el vídeo a su tamaño original.
Toggles with Fit-To-Screen |- |
Watch-listen-fittoscreen.svg
|Fit-To-Screen |Scales the video to the largest size that will fit within the window.
Alterna con Fit-To-Pantalla | - | 55 px | centro | | Fit-To-Pantalla | Escalas el vídeo al tamaño más grande que caben dentro de la ventana.

Toggles with Native Size. Alterna con el tamaño original. |- | |Buffering/Stats |The text at the bottom displays buffering status, as well as title and author of the currently playing clip. | - | | Buffering / Estadísticas | El texto en la parte inferior muestra la condición de amortiguación, así como título y autor de la imagen se está reproduciendo. |} |)

Sample Media

  • You can download a packet of videos to go along with it. If you're downloading something larger than 15MB, you should do it from the command line via wget; downloads via the browser currently go to /tmp and use up memory. Use the open location button (see below) to browse to these files. A good place to find some ogg videos to test with is wikimedia:
    http://commons.wikimedia.org/wiki/Category:Video


Tips and tricks

Running the Helix activity from the command line

It is often useful to directly launch the media player from the command line. In particular, many programs (web browsers, file managers, etc.) can be configured to use this command for opening media files, which does not work with sugar's activities. The command line tool can also be used directly to play streaming media by passing to it the URL of the media stream.

Follow the below steps to achieve that (note that, using a three-button USB mouse, you can paste selected texts to the terminal with the middle button):

  • Install the Helix media activity as described above
  • Open a terminal activity.
  • Execute the following command:
nano helixplay
  • In the text editor window, paste the following content (using the middle-button of your USB mouse after selecting this text in the browser window):
#!/bin/sh
#
# helixplay
#
# Runs the Watch & Listen Activity from the command line. A specified URI
# is used.  The activity is run in the background.
#
# Usage:
# helixplay [URI]
#
# Example:
# helixplay http://www.radioparadise.com/musiclinks/rp_128-1.ram
#
# This script is basically a shortcut for the following command:
# SUGAR_BUNDLE_PATH=/home/olpc/Activities/Watch\ \&\ Listen.activity sugar-activity MediaPlayerActivity.MediaPlayerActivity -b org.osl.MediaPlayerActivity -a fakeactivityid -u [uri] &

SUGAR_BUNDLE_PATH=/home/olpc/Activities/Watch\ \&\ Listen.activity
_ACTIVITY=MediaPlayerActivity.MediaPlayerActivity
_BUNDLE=org.osl.MediaPlayerActivity
_ACTIVITY_ID=fakeactivityid

sugar-activity ${_ACTIVITY} -b ${_BUNDLE} -a ${_ACTIVITY_ID} -u $@ &
Take care not to introduce line breaks when copying. Afterwards, press CTRL+X and confirm the file safe.
  • Execute the following command to make that file an executable script:
chmod 775 helixplay

This finishes the setup. You can test the activity by executing

./helixplay http://www.radioparadise.com/musiclinks/rp_128-1.ram

(or whatever radio you like). If you followed the above steps, your file helixplay now resides in our home directory (/home/olpc/). The full path is needed to launch the program from another application.

Playing streaming media in web browsers

After enabling the command-line execution of helix, it can also be used as a streaming media plugin in the Opera web browser, so that you can just click on stream URLs to play them, as usual. To do that, first install the Helix command-line script as described above, and install Opera as described on its page in this wiki. Once Opera has been installed, you need to configure the streaming audio player:

  1. Click the O in the upper-left hand corner of the screen.
  2. Go to Tools\Preferences\
  3. Click the "Advanced" Tab
  4. Click "Downloads"
  5. Click the "Add..." button.
  6. Enter "audio/x-pn-realaudio" under MIME type (do not enter the quotes)
  7. Enter "ram,ra" under "File extension(s)"
  8. Click the radio button to the left of "Open with other application"
  9. Enter the following data in the text box beneath "Open with other application": /home/olpc/helixplay
  10. Click the check box next to "Pass web address directly to application".
  11. Click OK twice to close all dialogs

Clicking on a real media stream URL should now launch the Helix player to play it. In addition to real media streams, you can also configure further content types to be played with Helix. In general, it might often suffice to click on a new media type: Opera then asks you what to do with it and you can use similar settings above.


Development

Feature Requests

  • Key bindings - require changes to the helix engine to be made upstream.
  • a two second "It works" ogg recording