Open Media System Documentation

Documentation Guidelines

The documentation on this server is used by several locations. When adding or editing content, please do not include specific station names, channel numbers, etc. These are the master documents.  Station specific instructions can be added before or after the om_localize_documentation function.

Creating a handbook page

All changes to documentation made at om.civicpixel.com are automatically propagated to all stations using OM Handbooks. In order to create a new page to for a handbook, the page must be added to om.civicpixel.com and the same child page must be created on the station's website with some specific PHP code.

At om.civicpixel.com.
Navigate to Handbooks.
Create a child page, add a title and content, save content.
Please take note of page's URL.

At station's website.
Navigate to Handbooks.
Create a child page, add a title.
Add <?php om_localize_documentation('PAGE_URL'); ?> to page body.

Example of body text for handbook page on station's website;
<?php om_localize_documentation('http://om.civicpixel.com/handbooks/content-administration-guide/importing-equipment'); ?>

Adding Images to Handbook Pages

Images need to be uploaded into a common directory so that each location can eventually download that directory and 'delocalize' the documentation.  When uploading images using IMCE, select the handbooks directory before uploading.

Scale images inserted into Handbook pages to approximately 75% so they aren't confused with actual HTML.

Version specific documentation

When adding documentation that only applies to a specific version of a module, wrap the documentation in the following code.

<div class="v2"><div>
This does x,y, and z.
</div></div>

Until the new version becomes the supported version, it will appear formatted like this.

This does x,y, and z.

There is also a series of checkboxes for versions.  Items marked as Version 2 show up in this View.

Installation

This section will explain how to go about installing the Open Media Project modules without using the install profile. You should consider using the install profile if you are starting with a new Drupal installation.

Equipment Reservations

About

Managing access to equipment is a large part of public access. Using Drupal for managing video workflow, classes and equipment checkout allows integration that saves staff time while ensuring users and abusing the access to equipment.

Because nothing existed that did everything the initial Open Media Project partners wanted well, a new module was developed from scratch borrowing the best ideas from Facil, Manhattan Neighbor Network's Drupal 4.7 solution, phpLabMan, and ORS. While every solution we looked at other than Facil was already open source, they didn't leverage the latest features of Drupal.  That module was named MERCI which stands for Manage Equipment Reservations, Checkout and Inventory.

MERCI relies heavily on Content Construction Kit (CCK) and Date API allowing every location to customize their workflow and generate reports leveraging standard Drupal interfaces that are already well documented. MERCI also relies on several submodules to add functionality. This not only makes it easier to get started without being overwhelmed with options, but makes it easier for developers to contribute.  While MERCI was developed with the public access workflow in mind, it was designed to be usable outside the Open Media System so that groups with similar checkout needs (Univerisities, Computer Technology Centers, etc) might contribute to developing new features.  MERCI is also designed to support commercial rentals.  A great source of revenue for stations struggling to pay staff, but sitting on hundreds of thousands of dollars of equipment.

Build Requirements and Environment

This page is In Progress. Please check back later for this page of the handbooks.

Terminology and Definitions

Resource - Individual items that are unique.  Example: Studio A vs. Studio B

Bucket - Items that are identical or so similar that users don't care which one they get.  Example: DV Cameras

Accessories - Items that you don't track other than to ensure that if someone takes one or more with other equipment, it is returned.  Examples: Batteries, lens cap, usb cable.

Hybrid CCK Module Development - Building a dependency on CCK fucntionality with a module.  MERCI adds merci_date to Reservations which leverages all the effort put into Date API.

Locked CCK Fields - Because MERCI includes queries that expect merci_date to be a specific format, the field is locked so it cannot be manipulated by the CCK UI.

Installation

Requirements

Skills
There are no additional system administration skills required to configure the Equipment features of the Open Media System. Equipment Installation and Configuration documentation assumes a basic understanding of Drupal content types, permissions, and Views.

MERCI
content
date
date_api
date_popup
date_timezone
views
taxonomy (in Drupal 6 core)

MERCI Inventory
Node

MERCI Permissions
Node

MERCI Role Rule Override
Node

MERCI Template
None

MERCI Settings

After enabling the MERCI module, the first thing you need to do is set the hours of operation for your checkout. You will find a link to MERCI's settings in the Site configuration are of your Administer area.

For each day, enter military time for both opening and closing time, separated by a dash, in the format hh:mm-hh:mm
ex. 09:00-17:00 would be open at 9AM, close at 5PM. Leave blank to indicate not being open.
In addition to setting the hours for each day the checkout is open, you can indicate dates the checkout is closed for holidays by simply adding one date per line, in the format mm-dd. 07-04 would mean July 4th is always closed, regardless of what day of the week it falls on. No year is entered so most holidays only have to be entered once. Holidays that shift dates each year need to be updated each year. If your checkout is closed on holidays like Labor Day, Martin Luther King Day, Memorial Day, etc, those need to be adjusted.
Closed dates indicates that the checkout is closed for the entire day. MERCI does not support closing early this way, but the daily hours could be adjusted 6 days in advance and then reverted back.

MERCI Submodules

MERCI consists of the main MERCI module and several submodules. The reason for submodules is to break functionality up into more manageable parts. Everything necessary to operate an equipment checkout is included in the main MERCI module.

MERCI Inventory - Makes it easier to manage custom CCK fields between content types. Using MERCI Inventory to directly add common fields to the all of the content types managed in MERCI, creating custom reports in Views is much easier.

MERCI Permissions - Makes it much easier to understand MERCI's permissions. Instead of manually editing the Edit Own and Delete own settings in Drupal default permission grid, users are only click one checkbox for each role they want to have access to the equipment. Users in that role then see the equipment while making a Reservation and are by limited to the content type's default settings for max hours, cost, weekends, etc. After giving a role access to the equipment, MERCI Role/Rule Override can be used to customize the rules for that role.

MERCI Role/Rule Override - Adds a role to rule relation that will allow different rates or max durations for users in different roles. An obvious use for that would be charging users in the member role a lower rate. A less obvious would be to have a role called "Active Projects" that is populated in the background similar to how User Karma works. Users who are listed as contributing members of a project that has added new video in the last 3 weeks (or whatever duration is appropriate at your location) are kept in the Active Project role. If the project isn't contributing video back to the station, the user would either have to pay the commercial rate or convince a staff member to temporarily add them back to the Active Project role to get the lower rate.

MERCI Template - Groups to prepopulate a Reservation form. An example is reserving a studio or an entire computer lab for a class. Reporting is more accurate because each items is actually reserved, but it saves time for the person teaching the class. It is also helpful to know for an instructor to learn a camera or edit station is unavailable because it is reserved or temporarily unavailable while being repaired.

MERCI Template

This page is In Progress. Please check back later for this page of the handbooks.

Configuration

Adding Equipment to MERCI

After enabling MERCI you must create content types for the equipment that will be managed. MERCI extends the core content type settings with additional settings.  Depending on the modules you have installed, you will find MERCI's settings with Location, Organic Groups, Fivestar, Workflow, and others under the content type description.

Clicking on MERCI expends all of MERCI's options.

Reservable item type allows users to define a content type as a Bucket or a Resource.  This is an important decision because it cannot be changed once nodes have been added to the content type.  If you are having trouble determining whether something should be a Resource or a Bucket, please refer to the Resource or Bucket section of the documentation.

For checkout MERCI allows equipment to be configured 3 ways on the content type using Automatic Checkout, Automatic Checkin and/or Self Checkout.

If none of these items are checked, the default "initial status" is used for the item when a reservation is first created.

If the Reservation is set to Unconfirmed, staff will need to review those Reservations and confirm them. Unconfirmed reservations still prevent other users from making a conflicting Reservation. To review the list of Reservations that require staff review, [??navigate to path of View http://YOURSITE/admin/merci/reservations/today]

Importing Equipment

MERCI has it's own import feature to create MERCI enabled content types and basic items.  More advanced imports require Node Import or Feed API/Feed Element Mapper/CSV Parser.

To use MERCI's basic import, first copy the merci_import.php, content_types.csv, and items.csv found in the Import directory to the root level of your Drupal install.  Then open http://<YOUR-SITE>/merci_import.php in a browser.

Resource or Bucket

MERCI is designed to be very flexible. There is no single right or wrong way to configure the content types. You want to find the configuration that works best for your workflow. Here are some tips for determining how many content types to create and whether to configure those content types as Buckets or Resources.

STILL NEED TO ADD TIPS

Reservations Made to Individual Resources

Same Number of Reservations made to Items in Buckets

While buckets are more complicated to configure, they enable MERCI to provide users who need to make longer reservations the space to do that.

 

CiviCRM Integration

You can sync roles between CiviCRM and Drupal to share useful information. Using the setup detailed below, you could for instance create a group of all your members in CiviCRM that you synced to a Member role in Drupal. You would then easily be able to set permissions in Drupal for all members based on the information updated automatically from CiviCRM.

The civicrm_group_roles and civicrm_member_roles modules are included with the CiviCRM module.

IMPORTANT NOTE: The New, Current, and Grace setting do not override Expired and Pending.  There is another status of Canceled that can be used to when a user with one type membership let it expire and rather than renew, creates a new membership that's a different kind.  If there is one expired membership, it will remove the user from the role.

While you can manually and automatically sync CiviMember_roles there is no option to do so for CiviGroup_roles which will only sync when a user logs into their Drupal account.

Defining Permissions

Defining permissions for your MERCI installation is an important step is getting your online equipment reservation system up and running. To begin, you will need to create Roles in the Drupal interface. Consider Drupal Roles for your MERCI configuration the same as certifications at your organization (i.e., studio certification, field certification and editing certification). To create roles in Drupal, navigate to Administer > User Management > Roles and add the Roles appropriate for your organization's needs. Now you will need to give each role access to specific pieces of equipment. These permission are based on the Content Types you previously created. To define the access permissions for each role, navigate to Administer > Site Configuration > MERCI > MERCI Permissions. Once on the MERCI Permissions pages, check the appropriate box in the grid to provide access for user to create reservations for the items listed.

create reservations - This is the most basic permission level. This alone is not enough to reserve equipment. Without Adding Edit Own and Delete Own permissions to specific content types, users will see empty select lists of the equipment available to them.

create confirmed reservations - This permission sets the status to Confirmed by default when users to submit the initial reservation as confirmed. This skips the Uncofirmed and Pending statuses. In most cases this permission would be given to staff.

membership discount - This permission indicates that the user gets the membership discount when charging for a rental.

suspend MERCI access - This permission blocks users for creating new reservations or altering existing reservations.

create reservations outside hours of operation - This permission gives user the ability to book equipment or rooms outside the normal checkout hours. This is often given to other groups in a building who have access to meeting rooms or other shared spaces. This configuration can also be achieved with the Rule Role Override submodule.
manage MERCI - This permission grants users access to Views and Reports to check equipment in and out. Manage MERCI also allows users to alter the status to Checked Out, Checked In, Canceled, and No Show.

administer MERCI - This permission allows users to book any item managed by MERCI at any time and

Migrating from Facil

Portland Community Media hired raSANTIAGO (a consultancy in Portland, Oregon that does a lot of work with CiviCRM) to develop this process for migrating their membership data from Facil to CiviCRM.

That code is available from GitHub at http://github.com/rasantiago/Portland-Community-Media/

In addition to the SQL, raSANTIAGO recommended ??? to move data from Microsoft Access to MySQL. Once the tables are in MySQL, using the Table Wizard + Migrate apporach Brad Bowman outlines here will save a lot of time moving your inventory between systems.

How to Create and Manage Reservations

Create a Reservation

Reservation are associated to a Project so first navigate to the Project page.  The easiest way to do this is clicking on the My Projects menu item on the right under My Member Tools. You should see a list of projects that looks like this.

If you are not a member of any Projects, that needs to be corrected before you will be able to reserve any equipment.  Under Member Tools you should see *CREATE A PROJECT. Click on it and fill out the form about your project. If you need information about filling out the form click here.

*If you do not see CREATE A PROJECT, please complete the Report a Problem form at the bottom of the site.

Once you are on your Project's page, you will see an additional menu of tools on the right under My Project Tools.

This menu will list the types of content you can create for this Project.  In addition to Reservations, many Projects allow Shows, Blogs, Events and Wikis.

Click Create Reservation to start the reservation process.

Enter the From date and To date for the Reservation

The next step is to click the Check the Availability button to check the availability of the equipment during that time period.  If the equipment is not available it will not show up in the drop-down lists.

Next, select the actual equipment you'd like to reserve.  These list are limited based on each users membership level and certifications.

 

Errors could be generated for a number of reasons including:

  • An item can't be checked out as early as you want it because the checkout isn't open
  • An item can't be returned as late as you want because the checkout is closed
  • An item can't be checked as long as you'd like
  • The item, or all of that type of item in the case of a Bucket, have been reserved

IF YOU DON NOT CLICK THE CHECK AVAILABILITY BUTTON FIRST AND YOU SELECT AN ITEM THAT IS NOT AVAILABLE YOU WILL SEE A GRID LIKE THIS:

Correct any errors in the reservation and check the availability again.  If the Reservation doesn't return any error, click submit.

It should look something like this:

That's it.  Your Reservation has been made.  If you'd like to update or cancel your Reservation, you'll find all your Reservations listed by clicking the My Reservations link under the My Member Tools menu.

Modifying a Reservation

Members can modify or delete their own Reservation up until the start of the Reservation. To view your upcoming Resevations, simply click the My Reservation link under your My Member Tools.

After a Reservation start time, the reservation can only be changed by Staff.

Management

Checking Equipment Out and In

For configuring the workflow for checking out and in equipment refer to adding equipment to MERCI.

Once a reservation is made it will be in one of the following states depending upon the configuration.

Unconfirmed - In this state the equipment items are held and can not be booked by others. Staff will then need to edit the reservation and select the specific bucket items to be reserved. Staff can then change the status to Pending.

Pending - A reservation can only be in this state if specific bucket items have been chosen. A reservation in this state is ready for check out.

Checked Out - To check out a reservation, edit the reservation and change the status to Checked Out. A reservation with status Unconfirmed can be changed to Checked Out without the intermediate Pending status by making sure you choose specific bucket items for the reservation. After saving you can print out the "Printable Contract" and have them sign it.

Checked In - To check in a reservation, edit the reservation and change the status to Checked In.

Canceled - Edit the reservation and change the status to Canceled.

No Show - Edit the reservation and change the status to No Show.

Users in a Role with manage MERCI permission can access Views of upcoming Reservations and items currently Checked Out at Admin > Manage Equipment

Reports

Creating Basic Reports

This page is In Progress. Please check back later for this page of the handbooks.

Creating Complex Reports with Inventory Submodule

The MERCI Inventory sub module pushes shared fields from the MERCI Inventory Master content type to other content types managed by MERCI. The MERCI Inventory Master comes with several common fields, but you can add/edit the fields you need. Once you have the fields you want added to the Master, go to the main MERCI admin menu.

STILL NEED MORE INSTRUCTIONS

Planned Features

This page is In Progress. Please check back later for this page of the handbooks.

Recipes

Denver Open Media

Denver Open Media uses MERCI combined with CiviCRM to manage a self service checkout. Leveraging CiviGroup Roles Sync and CiviMember Roles Sync modules to add and remove the members from roles in Drupal as the pay for memberships online or complete a class frees up staff time for other projects.

Membership Levels

Certifications Levels

Creative Commons Requirement - Denver uses a customized version of the Creative Commons Lite module. At DOM, members who use the station's equipment are required to submit Shows with a Attribution, Noncommercial, Share-Alike license. I've added to 2 permission settings; restrict to default cc license and override cc license restriction. Members in roles that have access to check out field equipment or use our studios through MERCI are also given the restrict to default cc license. That should really use the creativecommons_lite_default_license variable, but I just hard coded the Attribution, Noncommercial, Share-Alike license as the default. Members can opt to pay the commercial rate for equipment and then be added to a role called cc override. The cc override role is given the override cc license restriction permission. So even if that member is in a role that normally restricts their licenses, they have access to all the enabled licenses because a staff member approved the override.

Social Networking

Configuration

Configure Organic Groups: Part 1

View a related screencast at:

http://www.screencast.com/users/JohnMontgomery/folders/Jing/media/aa154b...

Required Modules

  • Organic Groups. Enables users to create and mange their own projects
  • Open Media Project. Creates three content types for the Open Media tool set.
  • CCK. Enables administrators to create and manage nodes fields.
  • FileField. Provides a universal file field for CCK.
  • Location. Allows nodes to be associated with geographical information.
  • String Overrides. Allows administrators to replace any text on a site.
  • Creative Commons Lite. Enables users to add a CC license to a node.

Enable Modules. Be sure to enable the Content and Content Copy. This will allow the Open Media Project module to create its related content types without errors.

Navigate to Administer > Site Building > Modules and enable CCK's Content and Content Copy.

Enable Module.
Enable the Open Media Project module, all other required modules will be enabled.

Navigate to Administer > Site Building > Modules and enable Open Media Project.

Review Content Types.
Check and make sure that the Open Media Project module has created the Project, Project Type, Timeslot Theme content types. Project will be set as Organic Group's group node.

Navigate to Administer > Content Management > Content Types to do this review.

PLEASE NOTE: The current development snapshot of this module does not create Project correctly. To import the Project contect type manually, on the web server, navigate to sites > all > modules > om_project > includes > content_types > om_project_content_type.inc. Copy everything between,
$result = _om_project_install_import_content_type("

and

);

return;

On the website, navigate to Administer > Content Management > Content Types > Import. Set the content type to <Create>, paste the content  just copied from  om_project_content_type.inc into the Import Data field and hit the Import button.

Set Permissions. Enable 'create om_project content' for the approriate role(s).

Navigate to Administer > User Management > Permissions to manage user permissions.

Configure String Overrides.
Import "stringoverride-import".

On the web server, navigate to sites > all > modules > om_project > installs > stringoverride_import. Save this file locally.

Navigate to Administer > Site Configuration > String Overrides > Import to import the stringoverride_import file.

Additional Content Type.
Create additional content types for other items we you like posted to a project, i.e., blogs, events, wikis. On each newly created content type, select Standard Post or Wiki Post in the Organic Group area.

 

Configure Pesonal Project

The Open Media Project module includes the option creating a "personal project" for each new user that signs up for an account.  By default those projects are not listed in the project directory and named <username>'s Videos.  Navigating to a personal project will redirect to the project owner's profile page.  This solves the problem of user who aren't working on a series and just want to quickly upload a few videos.

Configuring Permissions

 

In addition to the access to create, delete, and edit both any and nodes the user authored, CCK's Content Permissions module takes this a step further and defines view and edit permissions on every field.  By default, no role has access to new fields.

Find a Crew

When logged in to the site look under your user name for FIND A CREW and click on it:

When you get to the page you will see sliders that allow you to look for the exact type of crew you need. Set each slider at the level of experience you need in a crew member. Remember the higher you set it the less results you will get.

You will see a list of members who have indicated that they want to volunteer for other members' shows. Click on the various members to view their profile and see their skills and interests.

If the member is someone who seems to be a fit for your show you can click on the contact tab to the right of the view tab along the top of the profile.

Then you can send an email to each person to let them know what your project is about and to see if they'd be interested in volunteering for your show. This method allows us to protect your personal information.

 

How to Change Email Notification Settings

1. Log in on the website

2. Click on MY PROFILE

3. Click on the NOTIFICATIONS tab

4. Then click on GROUPS:

Groups
Content type in group
Thread
Content type
Author

5. A list of all the "groups" (projects) you are involved in will appear. Decide which, if any updates you want:

S.O.S (Spolight on Students)

Type Send interval Send method
Type Send interval Send method
All posts in this group
om_show posts in this group
project_blog posts in this group
project_event posts in this group
project_wiki posts in this group

6. Click Save

 

7. If there are any other nodes you are subscribed to (the number to the right indicates the number of subscriptions you have for each type):

Groups 4
Content type in group 3
Thread 133
Content type 1
Author

Click on each of them and decide if you want to be subcribed to those notifications.

8. Save.

How to Find a Crew

How to Manage Your Projects

Adding a Member to Your Project

The process of adding other members to your Project is easy and allows your group to collaborate in a number of ways. To add an existing member to an existing Project, first navigate to the Project's page. You can find the Project by searching the project listing or clicking on My Projects under Member Tools on the right.

Once you are on the Project page, Project managers or admins will see an additional Project Tools menu for managing. Clicking on the link on the right that indicates the current number of Members in the project will initially take you to a view of the profile images of the Project's members. Project managers or admins will see a tab to Add Members.

Add one or more usernames in order to associate users with this project. Multiple usernames should be separated by a comma.

If you are unsure of a member's username, Search by User.

Creating a New Project

In order to take advantage of most of the member-specific features on our site, users will need to create projects, which are associated with their work.  Projects can be thought of as over-encompassing folders that hold related content or video.  For instance, if you produce a weekly cooking show, you would have one project (perhaps named the same as your show) and then all of the various episodes would be associated with this project.

These projects allow members to reserve equipment, upload content, create project blogs, wikis and event, as well as request a crew.

Here are the steps in order to do this:

1.  Log-into your account on the Denver Open Media homepage.

2.  Under My Member Tools (in the upper right-hand side) select Create Project.

3.  You will now be directed to the Create Project page.

4.  Under Title, type the title of your project.

5.  Under Description, type a short description of your project.

6.  Choose the appropriate project type from the drop-down menu.

7.  Enter a Full Description of your project.

8.  Add a project icon/image if desired.

9.  Add a public email and website address if desired (this info will be displayed to the public on your project page.)

10.  IGNORE the Vocabularies box (i.e. PBCORE Genre 05.01; Open Media Genre DRAFT; and News Type.)

11.  Choose how you would like members to be added to your project.

12.  Select the default Language and Audience for all of the shows in this project (Please note: You can always tweak this and the following information on all individual show pages, but for now you are just choosing the default.)

13.  Check whether or not the default for the shows in this project will be Safe for all ages (if a show is submitted and this box is not checked, the show will only air after 10pm local time.)

14.  Choose the default Primary Theme Block for shows in this project.

15.  Choose the default Secondary Theme Block for shows in this project.

16.  Check whether or not you would like to share this project with other stations participating in the Open Media project.

17.  Ignore the questions regarding estimated episodes and frequency for now.

18.  Press Save.

19.  This will now bring you to your newly created Project page (Please note: This page is under development and looks somewhat confusing.)

For information on how to create a reservation, please click here.  If you would like to upload content, please click here.

 

 

 

Inviting Non-Members to Join Your Project

 

When a Project is created, the Project's Manager has the option of setting the Project as Open, Moderated, Invite only, or Closed.

The status of each Project is listed on the Projects page.

Users can either instantly Join Projects configured to be Open or Request Membership to Projects configured to be Moderated.  Projects that are Open, Moderated, or Invite Only will see a menu item named Invite friend.

The Project Managers can invite users with their email address or username with a customize message.  The message users recieve will include a URL that links them directly to Project's subscription page.  If the user doesn't have an account, they will need to sign up.  Access to a Project DOES NOT automatically give users the ability to add Shows or make Reservations.

Personalize Your Project

Your Project page can help users understand more about your project as well as search for your show or join a crew for your show through the Crew Connect tool.  On the Create Project page you have various options to personalize your Project.

  1. Choose a Title to designate a unique identifier for your project.  This title will appear in the directory of all project groups.
  2. Under Description, type a short description of your project.  The project description will also appear in the directory of all project groups and can assist users in finding your show.
  3. Choose a Project Type from the drop-down menu.  You choose to group your project as a promo, a PSA, a series or a single show.  ***More About Project Type***  Selecting a project type helps the autoscheduler select the correct content for any given timeslot.  If the project type for your show is "Series" then the autoscheduler will know to choose the most recent episode.  If you want to run short videos such as PSAs or Promos you should always create a new project for them to be in even if they are a part of a regular series. The reason for this is that when the autoscheduler looks for a new show in your project it can't distinguish between what you want to air in that timeslot based on length. So your 2-minute promo may get scheduled instead of your full-length show. For this reason it would be best to create a new project and label it "Same Project Title Promos".
  4. Enter a Full Description of your project.
  5. Add a project icon/image if desired.
  6. Add a public email and website address if desired (this info will be displayed to the public on your project page.)

Private Project Content

If there is a Show that you don't want to appear on the website for some reason, you can change the default Public setting under the Show's Project settings.  The show will still be available to members of the Project, but will be hidden from other users.  It is still possible to schedule this Show to air.

The Public option is available for all Project related posts including blogs, wikis, and events.

Profiles

Project Homepage

Promos and PSAs

If you want to run a short videos such as PSAs or Promos you should always create a new project for them to be in if they are a part of a regular series. The reason for this is that when the autoscheduler looks for a new show in your project it can't distinguish between what you want to air in that timeslot based on length. So your 2-minute promo may get scheduled instead of your full-length show. For this reason it would be best to create a new project with the same title + promos. In the future you will also be able to add trailers and leaders from this new project.

You now also have the option when creating a Project Page to select the program type as PSA or Promo. Promos are for things promoting some event or show that is likely to have a limited airtime. A PSA is a short program that could be an ongoing announcement or campaign.

Type of project

When creating one of these types of programs that will have an expiration date you should be sure to edit the  SCHEDULING OPTIONS and set it to UNPUBLISH using this DATE/TIME FORMAT: 2009-03-10 20:56:25.

 

Adding Users to Your Project

Let Users Join Your Project

 

When you set up your your project, you will be prompted choose from four options regarding how other members can interact with your show.

Project Member Options

Once you set up the membership permissions, this action will define how users can interact with your project from here on out until you change it again.

Add Users to Your Project

 

The process of adding other members to your Project is easy and allows your group to collaborate in a number of ways. To add an existing member to an existing Project, first navigate to the Project's page. You can find the Project by searching the project listing or clicking on My Projects under Member Tools on the right.

Once you are on the Project page, Project managers or admins will see an additional Project Tools menu for managing. Clicking on the link on the right that indicates the current number of Members in the project will initially take you to a view of the profile images of the Project's members. Project managers or admins will see a tab to Add Members.

Project Inviting Users

Add one or more usernames in order to associate users with this project. Multiple usernames should be separated by a comma.

How to Rate Your Skills

Installation

Merging Projects

Multiple Projects are created for a number of reasons; the user forgets a Project already exists, the user needs to add a video to a Project they aren't a member of, etc.

Merging Projects can be used to move all of the Shows, Reservations, Blogs, Wiki and any other content you've enabled to be managed by Orgnaic Groups to another group.  The author, post date, and all other information about the posts remain the same, but the group of users with permission to modify the project changes.

To merge a project, while logged in a user with Content Administration privledges, navigate to the Project you'd like to merge.  Click the Edit tab.  Click Delete at the bottom of the page.  You will then be presented with 4 options for dealing with the posts in that group...

 

Do nothing - Do not use this option.  It will eventually be removed.  Nodes will be orphaned.

Delete all group posts which don't also belong to another group. - Only use this option if the Project's Producer requests it and the stations has approved it.  Since most content is licensed with a Creative Commons Share-alike license, a station is under no legal obligation to remove it.

Move all group posts to the group listed below. - This moves the content and the information about who authored it, but the author won't necessarily have access to the group.

Move all group posts and memberships to the group listed below. - This moves all content and adds authors of the nodes being moved as members of the Project the nodes are merged into.

Video File Management

This chapter covers video file management, including video ingest, metadata collection and archive management.

About

When fully configured the Open Media System provides a user-driven video ingest and distribution workflow designed to meet the needs of most public access and community media centers. This includes taking raw content in the form of MPEG2 (or any format supported by FFMPEG) via a local network share or online upload, collecting metadata associated with the video, encoding the video into multiple formats for both online and television broadcast, and archive management.

Terminology and Definitions

This page is In Progress. Please check back later for this page of the handbooks.

Build Requirements and Environment

This page is In Progress. Please check back later for this page of the handbooks.

Installation

Requirements

Skills:

Before attempting enable video encoding using the Open Media modules, you will need a basic understanding of following system administration skills:

  • Samba file sharing and permissions
  • Mounting SMB shares
  • Configuring fstab
  • Formatting and maintaining a RAID
  • Installing FFMPEG
  • Basic understanding of codecs

The Video Installation and Configuration documentation assumes at least basic competency in these areas.

Media Specific Modules:

  1. Open Media Show -- generates the Open Media show content type, including fields for metadata collection as well as fields to hold the MPEG2, Flash & screen captures.
  2. Media Mover -- This module is the heart of media file management in the Open Media System. Created and maintained by Arthur Foelsche, Media Mover provides a framework for designing a video management workflow including steps for harvesting, processing, storage and completion.
  3. Media Mover Remove -- Adds a file removal step to the Media Mover workflow. By default Media Mover keeps a copy of all original files processed, which creates a storage problem when the source files happen to be raw, 10 gig MPEGS.
  4. FFMPEG Wrapper -- allows for Media Mover to integrate with FFMPEG
  5. Filefield -- Drupal's standard CCK field type for handling file storage.
  6. Filefield Local -- A custom module developed specifically for the OMP, allows files to be attached from a network share in addition to uploading from a user's local drive. This is required at many stations due to the prohibitive filesize of raw MPEG2s frequently exceeding 10GB (too large for normal uploading)
  7. Filefield Paths -- Allows for configuration of advanced rules for file paths, necessary to create video archives organized by project, and for managing specific naming conventions required by some playback servers.
  8. Creative Commons -- Handles licensing for content sharing
  9. Location -- for geotagging of content
  10. Transliteration -- for manipulating & cleaning file names as content is submitted. This is particularly important for many public access and community television stations with playback servers that require specific filename conventions.

Other Module Dependencies:

  1. Organic Groups
  2. Content Construction Kit (CCK)
  3. Views
  4. Token
  5. Computed Field
  6. Voting API
  7. ImageCache
  8. ImageField
  9. ImageAPI
  10. Views Carousel
  11. JCarousel

Module Installation

First:

  1. Download ALL of the required modules and place them in the standard sites/all/modules directory
  2. Enable Content and Filefield
  3. Enable Show

Show will manage creating all of the necessary content types and fields. After show is installed, a few more modules need to be enabled:

  1. FFmpeg Media Mover module
  2. Media Mover Auto Run
  3. Media Mover Node

That's it for the installation. On to configuration.

Setting up a Video Encoding Environment

This page is In Progress. Please check back later for this page of the handbooks.

Setting up a File Repository

This page is In Progress. Please check back later for this page of the handbooks.

Configuration

Configuring Genre, Rating, and Language

The Open Media System uses Public Broadcasting Metadata Dictionary (PBCore) when exchanging content between locations, but allows each location to customized the items and disable items to meet their local needs.  Currently items are activated, weighted, and customized using phpMyAdmin until an interface is added to the PBCore module.

Configuring a Video Encoder

At the moment, all operational Open Media System installs are using FFmpeg for encoding. Setting up FFmpeg will vary based on what operating system you are running. Ubuntu is the current recommended linux distribution for the Open Media project due to the large user base and generous documentation available. For those who are using Ubuntu and FFmpeg, this thread is frequently updated and includes instructions for compiling FFmpeg on the most common versions: http://ubuntuforums.org/showthread.php?t=786095

Some stations are planning on using third party encoders -- as solutions are developed for these alternatives, documentation should be posted here.

Using a server other than your local web server to encode video is supported by the ffmpeg_remote module included with the Open Media System. For more information on setting up remote encoding, please see the relevant handbook page in this chapter.

Using Rsync to store Archive on external host

Some external webhosts provide the option of adding smb mounts. Because the size of the MPEG2 files and the need to move them to the playback server, those files need to remain on a server on the same network as the playback server. The flash and thumbnails can be served externally. One way to serve both those needs is rsync.

The om_show module has an option to set an alternative directory for the flv and thumbnail. Using an rysnc command like...

rsync -avz --stats --exclude "*.mpg, *.mpeg, *.m2p" /mnt/[YOUR MOUNT]/archive /var/www/[PATH TO SITE]/files/archive_local

will create a local copy of directory structure of all the project directories in /archive along with the .flv and .jpg, but ignores the large MPEGs.

If the remote webhost does not provide the option of adding a smb mount but does provide ssh access you can set up the rsync command as follows:

On the local machine create a public/private key if you don't already have one:

ssh-keygen -t dsa

It will ask for a pass phrase but just hit enter.

Once you have the key pair. Copy the public key over to the remote host and add it to the authorized key file.

scp .ssh/id_dsa.pub remoteusername@remoterhost:

#login to the remote machine
ssh remoteusername@remotehost

#add the public key to the list of authorized keys
mkdir .ssh
cat id_dsa.pub >> .ssh/authorized_keys

#Return to the localhost
exit

Now use the following command to sync your files:

rsync -avz --stats --exclude "*.mpg, *.mpeg, *.m2p" /var/www/[PATH TO SITE]/files/archive_local/ remoteusername@remoterhost:/[PATH TO ARCHIVED FILES]/

The closing slashes matter. Don't leave them out.

Tips:

Use the -n option to rsync for testing. (-n means do a dry-run).
Read man rsync to learn what the other options do.
Remove the -v option and copy the command into your crontab. Run it every night at 3am.

Defining a Video Workflow

Step 1: Adding Media Mover Configurations

Media Mover allows significant flexibility in regards to your video work flow through the use of user defined 'Configurations'. Configurations are managed in the Media Mover administration area, accessible in the general administration area under Site Building. If you have been following the installation guide up to this point, you should have no configurations -- so the first step is to add at least one (and probably more). You can add them manually in the Media Mover administration area by clicking "Add Config" and then working through the configuration screen. Each Media Mover configuration is broken down into four phases:

Harvest: defines where the system should look for new media files to be processed (ex: the "...Or Upload a new video" filefield on the show content type)
Process: configures how new media files should be processed, this is where you choose the encoding type (ex: MP2), set audio and video bitrate, and manipulate other command line options available from FFMPEG or your encoder of choice.
Storage: tells media mover where to store the newly encoded file (ex: the "Archival MPEG2" filefield on the show content type)
Complete:any operation that you would like run after the media file has been encoded and stored. (ex: MM Remove, remove harvest and processed files leaving only the final stored MPEG2)

There are numerous choices to make in this process, and far too many possible combinations too document here. In order to provide an example of a working configuration, I have included exports of Denver Open Media's Media Mover configurations below. At Denver Open Media three configurations are defined and run in this order:

  1. Archival MPEG2: this configuration harvests new media files attached to the show content type on the "...Or Upload a new video" filefield (This filefield has an unusual name to make it easier on the end user when the form is displayed). It then processes them using a custom FFMPEG command that produces files compatible with TelVue/Princeton playback servers:
    -i %in_file -acodec ac3 -ar 48000 -ab 448k -vcodec mpeg2video -f dvd -copyts -s 720x480 -g 18 -b 8000000 -maxrate 9000000 -minrate 0 -bufsize 835008 -packetsize 2048 -muxrate 10080000 %out_file
    This encoded file is then stored in the "Archival MPEG2" filefield on the show content type, while the original file on the "Upload a new video" is deleted along with any temporary files produced during the encoding process.
  2. Flash: this configuration harvests new media files attached to the show content type on the "Archival MPEG2" filefield. It then processes them using a standard FFMPEG flash configuration (Audio bitrate 64k, Audio sample rate 22khz, libmp3lame audio library, 320x240 aspect ratio, 25 frames per second, 750kps video bitrate). This encoded file is stored back on to the "Flash" filefield on the show content type, while any temporary files produced during the encoding process are deleted.
  3. Screen Capture: this configuration harvests new media files attached to the show content type on the "Archival MPEG2" filefield. It then processes them using FFMPEG to generate a 704x576 pixel screen shot which is stored back on to the "Screen Capture" filefield on the show content type, while any temporary files produced during the encoding process are deleted.

WARNING REGARDING USING THE EXPORTS: While Media Mover will import most of the information properly, it does not pick up the proper storage location on each import. For the MPEG2 import the storage step regarding "Save the file to this CCK field" needs to be changed to store the file in the "Archival MPEG2" field. For the Flash import, adjust the same setting to store on the "Flash" field. For the Screen Capture import, adjust it to store on the "Screen Capture" field.

Step 2: Adjusting file storage locations

Where the media files are stored (when originally uploaded, as well as after they are encoded) is set on the relevant filefields on the om_show content type. Navigate to the content types via the administration area, then click manage fields on the Show content type to get to the appropriate area.

There are three fields inside of the Video group you can adjust, plus a fifth field at top "...or upload a new video" which controls where newly uploaded files or files selected from your local ingest folder are stored. To set the storage path, configure each field and look for the collapsed fieldset titled "Path settings". Expanding this fieldset will show the default path set by the show module, something like "archive_new/[ogname-raw]". Thanks to the filefield paths module, this setting allows for tokens. At Denver Open Media, and most of the Access stations using the Open Media suite, this default setting is in use. Basically it stores all files inside of the sites/default/files/archive_new folder, inside of a subfolder with the name of its associated project (organic group). This allows a station to browse media files by project. You could easily adjust this to whatever storage scheme you prefer. For instance, if you wanted to store files organized by user accounts you could adjust it to "archive_new/[user]", or you could use any of the other dozens of tokens available listed under the fieldset.

Denver Open Media MPEG2 Media Mover Configuration Export

$configuration = new stdClass;
$configuration->required = array('mm_cck', 'mm_ffmpeg', 'mm_cck', 'mm_remove');
$configuration->name = 'Archival MPEG2';
$configuration->cid = '4';
$configuration->description = 'Archival MPEG2';
$configuration->start_time = '1239988773';
$configuration->last_start_time = '1239988473';
$configuration->status = 'stopped';
$configuration->settings->mma_file_perm = '0';
$configuration->settings->mma_file_mask = '0644';
$configuration->settings->mma_node_edit_item_show = '0';
$configuration->settings->mma_node_item_delete = '1';
$configuration->settings->mma_node_config_rss = '0';
$configuration->settings->mma_cron_notify = '0';
$configuration->settings->mma_cron_notify_email = '';
$configuration->settings->mma_cron_notify_time = '10';
$configuration->settings->mma_process_num = '1';
$configuration->settings->mma_storage_num = '1';
$configuration->settings->mma_complete_num = '1';
$configuration->storage->module = 'mm_cck';
$configuration->storage->action = '2';
$configuration->storage->configuration = array(
'mm_cck_field_save_2' => 'field_om_show_mpeg2',
'field_cck_file_path' => 'archive_new/[ogname-raw]',
'field_cck_file_transliterate' => '1',
'field_save_list' => '0',
'cid' => '4',
'module' => 'mm_cck',
'action' => '2',
'verb' => 'storage'
);
$configuration->storage->cid = '4';
$configuration->complete->module = 'mm_remove';
$configuration->complete->action = '3';
$configuration->complete->configuration = array(
'mm_remove_files' => array(
'harvest' => 'harvest',
'process' => 'process'
),
'cid' => '4',
'module' => 'mm_remove',
'action' => '3',
'verb' => 'complete'
);
$configuration->complete->cid = '4';
$configuration->process->module = 'mm_ffmpeg';
$configuration->process->action = '1';
$configuration->process->configuration = array(
'ffmpeg_output_type' => 'mp2',
'ffmpeg_audio_advanced' => '0',
'ffmpeg_audio_ab' => '64k',
'ffmpeg_audio_ar' => '44100',
'ffmpeg_audio_acodec' => '0',
'ffmpeg_video_advanced' => '0',
'ffmpeg_video_size' => '128x96',
'ffmpeg_video_size_other' => '',
'ffmpeg_video_fps' => '25',
'ffmpeg_video_br' => '250k',
'ffmpeg_video_br_other' => '',
'ffmpeg_video_vcodec' => '0',
'ffmpeg_time_advanced' => '0',
'ffmpeg_time' => '30',
'ffmpeg_video_custom' => '1',
'ffmpeg_video_custom_command' => '-i %in_file -acodec ac3 -ar 48000 -ab 448k -vcodec mpeg2video -f dvd -copyts -s 720x480 -g 18 -b 8000000 -maxrate 9000000 -minrate 0 -bufsize 835008 -packetsize 2048 -muxrate 10080000 %out_file',
'ffmpeg_output_perms' => '0644',
'cid' => '4',
'module' => 'mm_ffmpeg',
'action' => '1',
'verb' => 'process'
);
$configuration->process->cid = '4';
$configuration->harvest->module = 'mm_cck';
$configuration->harvest->action = '1';
$configuration->harvest->configuration = array(
'mm_config_harvest_field' => array(
'field_om_show_original' => 'field_om_show_original'
),
'file_types' => 'avi mov wmv mpeg mp4 mpeg2 dv 3gp 3g2 mpeg4 mp2 m2p mpeg',
'cid' => '4',
'module' => 'mm_cck',
'action' => '1',
'verb' => 'harvest'
);
$configuration->harvest->cid = '4';
$configuration->hierarchy->parent = '0';

Denver Open Media Flash Media Mover Configuration Export

$configuration = new stdClass;
$configuration->required = array('mm_cck', 'mm_ffmpeg', 'mm_cck', 'mm_remove');
$configuration->name = 'Flash';
$configuration->cid = '5';
$configuration->description = 'Flash';
$configuration->start_time = '1239988773';
$configuration->last_start_time = '1239988473';
$configuration->status = 'stopped';
$configuration->settings->mma_file_perm = '0';
$configuration->settings->mma_file_mask = '0644';
$configuration->settings->mma_node_edit_item_show = '0';
$configuration->settings->mma_node_item_delete = '1';
$configuration->settings->mma_node_config_rss = '1';
$configuration->settings->mma_cron_notify = '0';
$configuration->settings->mma_cron_notify_email = '';
$configuration->settings->mma_cron_notify_time = '10';
$configuration->settings->mma_process_num = '1';
$configuration->settings->mma_storage_num = '1';
$configuration->settings->mma_complete_num = '1';
$configuration->storage->module = 'mm_cck';
$configuration->storage->action = '2';
$configuration->storage->configuration = array(
'mm_cck_field_save_2' => 'field_om_show_flash',
'field_save_list' => '0',
'cid' => '5',
'module' => 'mm_cck',
'action' => '2',
'verb' => 'storage'
);
$configuration->storage->cid = '5';
$configuration->complete->module = 'mm_remove';
$configuration->complete->action = '3';
$configuration->complete->configuration = array(
'mm_remove_files' => array(
'process' => 'process'
),
'cid' => '5',
'module' => 'mm_remove',
'action' => '3',
'verb' => 'complete'
);
$configuration->complete->cid = '5';
$configuration->process->module = 'mm_ffmpeg';
$configuration->process->action = '1';
$configuration->process->configuration = array(
'ffmpeg_output_type' => 'flv',
'ffmpeg_audio_advanced' => '1',
'ffmpeg_audio_ab' => '64k',
'ffmpeg_audio_ar' => '22050',
'ffmpeg_audio_acodec' => 'libmp3lame',
'ffmpeg_video_advanced' => '1',
'ffmpeg_video_size' => '320x240',
'ffmpeg_video_size_other' => '',
'ffmpeg_video_fps' => '25',
'ffmpeg_video_br' => '750k',
'ffmpeg_video_br_other' => '',
'ffmpeg_video_vcodec' => 'flv',
'ffmpeg_time_advanced' => '0',
'ffmpeg_time' => '30',
'ffmpeg_video_custom' => '0',
'ffmpeg_video_custom_command' => '-i %in_file %out_file',
'ffmpeg_output_perms' => '0644',
'cid' => '5',
'module' => 'mm_ffmpeg',
'action' => '1',
'verb' => 'process'
);
$configuration->process->cid = '5';
$configuration->harvest->module = 'mm_cck';
$configuration->harvest->action = '1';
$configuration->harvest->configuration = array(
'mm_config_harvest_field' => array(
'field_om_show_mpeg2' => 'field_om_show_mpeg2'
),
'file_types' => 'avi mov wmv mpeg mp4 mpeg2 dv 3gp 3g2 mpeg4 mp2 m2p',
'cid' => '5',
'module' => 'mm_cck',
'action' => '1',
'verb' => 'harvest'
);
$configuration->harvest->cid = '5';
$configuration->hierarchy->parent = '0';

Denver Open Media Screen Capture Media Mover Configuration Export

$configuration = new stdClass;
$configuration->required = array('mm_cck', 'mm_ffmpeg', 'mm_cck', 'mm_remove');
$configuration->name = 'Screen Capture';
$configuration->cid = '6';
$configuration->description = 'Screen Capture';
$configuration->start_time = '1239988773';
$configuration->last_start_time = '1239988473';
$configuration->status = 'stopped';
$configuration->settings->mma_file_perm = '0';
$configuration->settings->mma_file_mask = '0644';
$configuration->settings->mma_node_edit_item_show = '0';
$configuration->settings->mma_node_item_delete = '1';
$configuration->settings->mma_node_config_rss = '0';
$configuration->settings->mma_cron_notify = '0';
$configuration->settings->mma_cron_notify_email = '';
$configuration->settings->mma_cron_notify_time = '10';
$configuration->settings->mma_process_num = '10';
$configuration->settings->mma_storage_num = '10';
$configuration->settings->mma_complete_num = '10';
$configuration->storage->module = 'mm_cck';
$configuration->storage->action = '2';
$configuration->storage->configuration = array(
'mm_cck_field_save_2' => 'field_om_show_capture',
'field_cck_file_path' => 'archive_new/[ogname-raw]',
'field_cck_file_transliterate' => '1',
'field_save_list' => '0',
'cid' => '6',
'module' => 'mm_cck',
'action' => '2',
'verb' => 'storage'
);
$configuration->storage->cid = '6';
$configuration->harvest->module = 'mm_cck';
$configuration->harvest->action = '1';
$configuration->harvest->configuration = array(
'mm_config_harvest_field' => array(
'field_om_show_mpeg2' => 'field_om_show_mpeg2'
),
'file_types' => 'avi mov wmv mpeg mp4 mpeg2 dv 3gp 3g2 mpeg4 mp2 m2p',
'cid' => '6',
'module' => 'mm_cck',
'action' => '1',
'verb' => 'harvest'
);
$configuration->harvest->cid = '6';
$configuration->process->module = 'mm_ffmpeg';
$configuration->process->action = '2';
$configuration->process->configuration = array(
'thumb_dimensions' => '704x576',
'thumb_dimensions_other' => '',
'thumb_time' => '00:00:02',
'thumb_format' => 'jpg',
'cid' => '6',
'module' => 'mm_ffmpeg',
'action' => '2',
'verb' => 'process'
);
$configuration->process->cid = '6';
$configuration->complete->module = 'mm_remove';
$configuration->complete->action = '3';
$configuration->complete->configuration = array(
'mm_remove_files' => array(
'process' => 'process'
),
'cid' => '6',
'module' => 'mm_remove',
'action' => '3',
'verb' => 'complete'
);
$configuration->complete->cid = '6';
$configuration->hierarchy->parent = '0';

Configuring Remote Video Encoding

Encoding on an external LAMP server setup with FFmpeg can be accommodated via the FFmpeg Wrapper Remote module. Steps are as follows:

  1. Mount the sites/default/files folder from the primary web server on your encoding box. On Ubuntu you will typically do this by setting up a samba share on your primary web server, and then mounting this share on your remote encoding box. You need to be careful that permissions are setup correctly, and that the encoding box has all of the necessary privileges to read/write to the share. This can get complicated in a hurry if you are already dealing with an external RAID which is mounted by your web server which is mounted by your encoding box..... good luck!
  2. Enable the FFmpeg Wrapper Remote Module on the primary web server
  3. On the encoding boxes web root, add encode.php available from the Open Media Project repository: http://openmediaproject.org/code/encodephp-installed-when-using-ffmpeg-w.... This is a simple script that accepts http commands from the ffmpeg wrapper module on your primary web server.  When correctly configured, your remote encoder should be accessible from the main Drupal box and display a page like the following image.

    If your server doesn't have a graphic interface and/or browser, you can check this from the commandline using wget http://[YOURSERVER]/encode.php

  4. Go to the FFmpeg Wrapper configuration page via the normal Drupal admin area in the Site Configuration section.  Check the Use FFMPEG Wrapper Remote option (requires patch to FFMPEG Wrapper)

  5. Go to the FFmpeg Wrapper Remote configuration page via the normal Drupal admin area in the Site Configuration section. Fill in all of the fields on this configuration page, defaults are provided as examples in each field.
  6. Once this page is saved with the correct settings, the two fieldsets at bottom should be expandable and should show valid information returned by FFmpeg on the remote server. If this is the case, you're done. If not, keep checking paths and permissions until it works.

Codecs That Work

This page is In Progress. Please check back later for this page of the handbooks.

How to Add a Video

Before You Submit a Video

If you are submitting a video to your local open media station, the open media system makes it easy for a producer to create a project for their show and schedule their show for its appropriate theme block.  If you want to learn how to successfully air your show for the world to see, continue reading this section.

Creating a Profile
The Open Media system was created to allow an administrator to easily manage different types of users with minimal oversight.  Once a person decides to become a member of an Open Media organization, they will need to create a profile. Based on the membership types that each organization offers, a member will be able to log in and follow through with specific actions on their profile page and with their member tools. With a member profile, you can:

  • Upload your profile picture
  • List your projects
  • Show others the projects you like

Create a Project

About

In order to streamline the process for producers who are submitting content for a series and station managers who want to effectively manage their station's schedule, the Open Media System requires that all shows belong to a Project.  This allows multiple producers to collaborate on a show and web viewers can also easily watch a series from beginning to end.  With this Project-based user system you can:

  • Create a Project
  • Personalize Your Project
  • Add Users to Your Project and Let Users Join Your Project
  • Submit shows
  • Schedule your show within a community-based timeslot scheduler

What is a Project?

A project uses the available information submitted by a member when they create their profile to group together all relevant information associated with that member's content.
The Open Media tool set uses a Drupal Module called Organic Groups to make it easy for producers and members of public access stations to manage their projects. 
Steps for creating a new Project:

  1. Log into your account on the homepage.
  2. Under My Member Tools select Create Project; you will now be directed to the Create Project page.

Submitting a New Video

Preparing Video

This process will likely be station specific.

Handbrake

Download the GUI version of Handbrake from http://handbrake.fr/?article=download

GUI stands for Graphic User Interface.  The commandline version is only for advanced users.

Select the source you want to convert.  In most case this will be a DVD.

For DVD's you can select the specific chapters you'd like to convert.

 

Mpeg StreamClip

Mpeg StreamClip Downloading and Installing Tutorial

 

This Tutorial is to help you find, download, and install Mpeg StreamClip onto your Mac or PC to allow you to ingest at home.

MAC TUTORIAL for downloading MPEG Streamclip 1.9.1

1. Go to www.apple.com/downloads/macosx/video/mpegstreamclip.html

2. Make sure your Mac has all of the necessary system requirements

3. Then at the bottom of the page hit the download button:

4. A window opens that asks you to save the file. Hit the Save file button

 

5. A window opens and shows the downloading progress. Once downloaded There will be an icon labeled MPEG_Streamclip_1.9.1dmg. Double click that icon.

6. Your Mac will launch MPEG and will open a window that resembles your finder. This is where you can access your MPEG software icon that you can drag from the open window, down to your dock to display MPEG Streamclip.

7. Once the icon is in your dock you can drag the MPEG icon that resembles a hard drive to the trash. It may appear again once you open MPEG Streamclip but can be dragged to the trash after exiting MPEG each time.

 

You now have MPEG streamclip for your at home use.

 

PC TUTORIAL for downloading MPEG Streamclip (the only versions available for PC are MPEG Streamclip versions 1.1 and 1.2)

1. Go to www.squared5.com/svideo/mpeg-streamclip-win.html

2. Review the requirments needed to download MPEG Streamclip by scrolling to the bottom of the page and read REQUIREMENTS listing.

3. Once you have fulfilled the requirements to download MPEG streamclip, choose the version which best suits your PC. The download for PC's come with a tutorial that is included in the zip folder which appears after you click on one of the colored arrows that is pointing down next to the version name. (Note that if you choose to download MPEG streamclip 1.2b2 beta you will have to refer to the previous versions tutorial).

4. If you want to skip reading the tutorial hit the green downward arrow and a window appears that asks you if you want to save or run the program.

5. Click save and that opens another window where you will choose where your program will be saved.

6. It will then download the program to where ever you have saved it. Click the open button once the download is complete.

7. When the window opens which shows all of your MPEG files, click on the icon that is intitled MPED_Streamclip. If you recieve any warnings after clicking on that icon just hit run.

8. This takes you into MPEG Streamclip where a window appears that asks for license agreement. Hit Agree and you have MPEG Streamclip! Congratulations!

 

Uploading Content from a DVD

Getting Started

IMPORTANT:

When ingesting content ALWAYS log on to the editing system as DOM INGEST ONLY, the password is DOM

*Double-click the "START HERE" icon in the center of the screen before you begin *

You should see both the "ingest" server and the DOM site should load the user guide directory:

http://www.denveropenmedia.org/handbooks/user-guides/uploading-content

Go ahead and log in to your account on our website.

Import

1. Insert your DVD into the editing station. (if it starts autoplay, Stop and Quit DVD Player)
2. Open Mpeg Streamclip from the dock or applications folder.
Next you will want to open your media files in Mpeg Streamclip. You can do this one of two ways: a) The fastest way is to simply click and drag your DVD icon from the desktop to the center of Mpeg Streamclip. If you have more than one video on the DVD it will ask you which one you want to open. Once finished with this step skip down to step 5.
<-- Drag DVD icon to the center box in MPEG Streamclip -->

Or

b) From Mpeg Streamclip choose File>Open Files and select the DVD. (You may need to wait a minute or so for the DVD to be recognized).

c) Select the VIDEO_TS folder. You may see many VIDEO_XX.VOB files. Click on each one starting from the top most until you find the largest first file that is greater than 1000MB (1Gig) in size, then select OPEN.

If there is no file greater than 1GB, choose the file with the largest size. If a message “Would you like to open all files of the stream together?” appears, select OPEN ALL FILES.

5. You may see "Warning: the stream may contain Timecode breaks." Choose FIX NOW and then click PROCEED. If you are not prompted to do this, go to Edit>Fix Timecode Breaks. Select PROCEED. This will take a few minutes to complete. Your video is now loaded on the editing station.

Trim & QC

6. You can now play the video by either touching the space bar or “L” key. You can also drag the play head using the mouse. Verify that there are no color bars and that the program begins and ends with NO MORE THAN a frame or two of black or begins or ends on the first or last frame of the program. If no trimming is needed go to step 8.

7. Trimming the beginning and end of the program is simple: Set the IN POINT by pressing "I" and set the OUT POINT by pressing "O".

Starting from the beginning of the program either play or move the playhead to the location where the program should start, then press the “I” key for IN. Then move the playhead to where the program should end and press the “O” key for OUT.

For Fine Tuning: go frame by frame and use the right and left arrow keys on the keyboard.

Press Command and "T" or go to EDIT< TRIM in the Menu bar.

***Make sure that you have cut out (trimmed) all black, bars or anything else that is not part of your actual show.

Export & QC

8. Now export the program by going to File>Convert to MPEG with MP2 Audio.

 

Save As: Should be the name of the program and episode number (if applicable) VERY IMPORTANT: Do not use any symbols when naming your program.


Where: From the drop down menu, select the edit station you are at (ie DOMEDIT1) then select INGEST. Click Save.

9. A small window with a progress indicator should pop up. When completed, quit MPEG Streamclip and eject your DVD.

10. QC!!! Quality Control! Please check your video file after you ingest, no one will do this but you! If it doesn't look right you don't want it to go on air.

**Please note your show will be under whatever it is you named it when you saved**

Open the INGEST folder on your desktop< find your file< Hold down CTRL Key and click on your file< select OPEN with MPEG STREAMCLIP. This will reopen Mpeg Streamclip and allow you to scan through the audio and video of your file. Make sure the whole video is there, it looks and sounds good and that there with no black or color bars before or after it (less a frame or two of black).

 

 

YOU ARE NOT DONE YET!!! You still need to create a show and attach your video to a show page.

 

Uploading your Video onto the Website

Log on the main website (denveropenmedia.org), click onto "my projects." which is on the right hand column.

Click on the project/video that you want to be uploaded on to the website.

Once you click on your project, the right hand column will have a "create a show" option.

Click on "create a show" and it will lead you to the form that you must fill out when creating or uploading the show on to the website. It is is simple and easy, just follow the directions and fill out the form.

Step by Step:

Select the video that you uploaded or you also have the option to upload one at that moment.

Create a title and the epsiode number

Write a full description about the show and maybe some exciting tidbits.

Choose the specific theme/category that your video falls into.

Choose the timeslot. For example, Latino or General Youth timeslot.

Make sure you choose the right audience and whether it is suitable for all ages.

After filling out the entire form, click on save and your video will be uploaded onto the website in the next 4-8 hours.

SUCCESS you are finished!! Its easy, its simple, and you have now completed uploading your video!!!

Create a Show

In order to upload a new show, you will need to go to the Project Page.

  1. A new list of menu options, choose Create Show and you will be directed to the Create Show page.
  2. Select a previously uploaded video: Select your video file from the drop-down menu.
  3. Add a show Title.
  4. Enter an Episode Number (if applicable)
  5. Enter a show or program Description

 

Choose a Themeblock for Your Show

Timeslot Theme: Pick a theme block that best applies to your show. All scheduling is determined by themeblocks.

Theme Blocks

Also, you can select a specific Location for your program. The Location field allows you to geotag your content. Be specific as possible, but all fields are not required. This feature can be useful for stations that wish to focus on regional topics, issues or content.

Location

Show Metadata

Fill out the Create Show form. See the list of fields below for further information.

Select a previously uploaded video: Select your video file for the drop down if you previsously uploaded your video to the stations ingest folder.

Basic Info Tab

Title: Enter a human readable title for your show. This is a required field.

Description: Provide a description for the show you are uploading.

Season Number: Specify a season number, if applicable

Episode Number: Specify an episode number, if applicable.

Metadata Tab

Topic: Choose a topic from the list that must accurately describes your show. This is a required field.

Language: Choose the language that is mostly used in your show.

Rating: Select the rating that must accurately describes your show. The rating you slecet may impact the time your program plays. For more information about ratings, please see: http://en.wikipedia.org/wiki/TV_Parental_Guidelines#Ratings

Timeslot Theme: Choose a timeslot theme for your show to be scheduled into.

Locally Produced: Select this option if your show was produced, shot and edited by a local producer.

Share with Other Location: Select this option if you would like your show to be shared with other non-commercial media outlets.

Location Tab

Location: Specific a location, if applicable. Location allows you to geotag your content. This features can be helpful got show focuses on regional topics, issues or content.

Creative Commons Tab

Creative Commons: Specific a license type. This is a required field. Creative Commons licenses help you share your work while keeping your copyright. Other people can copy and distribute your work provided they give you credit, don't use it commerically, and anyother conditions you specify here. For more an explanation of the different licenses, please visit the Creative Commons website at:

http://creativecommons.org/about/licenses/meet-the-licenses

Once you have filled out the form completely, click the Save button. If there is a problem, you will see a description of the problem at the top of the page.

If necessary, correct any errors in your form and click Save again. If you continue to have problem, please complete the Report a Problem form.

Aftering clicking save, your show will be processed through the system. A thumbnail, web quality version (Flash video) and broadcast quality verison (MPEG) of you show will be generate and placed in the appropriate repositories.


Creative Commons Licensing

This page is In Progress. Please check back later for this page of the handbooks.

Scheduling Options

This page is In Progress. Please check back later for this page of the handbooks.

Editing or Deleting Existing Videos

This page is In Progress. Please check back later for this page of the handbooks.

Other Fun Stuff You Can Do With Your Video

This page is In Progress. Please check back later for this page of the handbooks.

Management

External Resources

External Resources are playback server specific resources that can be attached to a om_show instead of a video or used on their own.

Currently the Open Media modules don't contain the code necessary to attach External Resources to a Show. The content type was structured based solely on the options available to schedule switches, overlays, and interstitial on Telvue Princeton servers.

Most External Resources will have to be created by staff members who understand the settings. By making a producer the author of an External Resource, that producer could schedule a switch event for a live show at a specific time based on their Project's Timeslot Events.

These are all the option available on a Princeton:
Output,Date,Time,Type,Source ID,Source Name,Offset,Duration,Output Name,Program Code,Episode Code,Program,Title,Episode,Description,Preroll,Postroll,OSD,OSD Path,OSD File,Include In Guide,Track Content Attributes,Overlay Alpha Blend,Overlay Chroma Key,Overlay X Coordinate,Overlay Y Coordinate,Overlay Width,Overlay Height,Program Number,Switch Command

The Encoding Control Panel

This page is In Progress. Please check back later for this page of the handbooks.

Reporting on Your Video Library

This page is In Progress. Please check back later for this page of the handbooks.

Troubleshooting

This page is In Progress. Please check back later for this page of the handbooks.

Other Resources

This page is In Progress. Please check back later for this page of the handbooks.

Planned Features

Video Reporting with More Functionality

This page is In Progress. Please check back later for this page of the handbooks.

Metadata Workflow for Sharing Videos Between PEGs

This page is In Progress. Please check back later for this page of the handbooks.

Recipes

This page is In Progress. Please check back later for this page of the handbooks.

Community-based Scheduling

About

This page is In Progress. Please check back later for this page of the handbooks.

Installation

This page is In Progress. Please check back later for this page of the handbooks.

Configuration

Configuring Timeslot Scheduler for Your Playback Server

Timeslot Scheduler is designed to generalize scheduling so the same workflow can be used with any playback server. Functions for specific playback servers are handled by submodules that are included with Timeslot Scheduler. Currently Timeslot Scheduler only includes support for Telvue Princeton and Tightrope Cablecast servers.

To register a playback server go to Create content > Playback Server

Server Name: This is a human readable name.

Server Type:Currently Scheduling is only supported on Telvue Princeton or Tightrope Cablecast servers. This requires the appropriate submodule be enabled.

Channel: This lists displays the channels registered in your Channel vocabulary. Playback servers are NOT required to be registered to a Channel. Multiple servers can be registered to the same channel. If you register multiple servers to a channel, any scheduling activity will happen on both servers. This is helpful when transitioning to a new playback server. Playback servers DO NOT need to be the same type to be registered on the same channel. Similarly, a single server can be registered to multiple channels.

URI: This is the URL or IP address of the server. The playback server specific submodules are configured to use the correct port. So if you access a Princeton using http://123.ourchannel.org:3000, you'd enter 123.ourchannel.org.

Mount: These are mounted shares directly from a playback server or to another server the playback server is connected to. Mounts are created as part of the Video Configuration.

Username: If the playback server requires a username to access its status or add scheduling information. This is not the connection information for the Mount. That information should be stored in the web server's fstab file.

Password: Password for the Username entered above. WARNING: This is currently stored in cleartext.

Database Settings: These settings are optional. Only use them if your playback server allows direct connectivity to the database.

Creating a Timeslot Event

 

A Timeslot Event can be scheduled to occur every Wednesday or with a pattern like the first Friday of every month. A Timeslot Event requires a Title. The Title only appears on calendars used by the scheduling staff so it should be something useful to them to refer to like Sunday Morning International Issues Timeslot. Timeslots are normally tied to a specific Channel or a Timeslot could be shared between multiple Channels.

 

Timeslot Theme

Timeslot Themes are used to group similar content. Users select from the Timeslot Themes when creating new Project and Shows. The shows that are selected for Timeslot Event are based on the rules applied to the Autoscheduler and whether the Timeslot Event is user schedulable. User-schedulable timeslots can be filled on a first come, first served basis when users add a new Show as that Show's first run. Once the first run has been scheduled, the Airing date and time will appear on the Show and Project pages.

 

Administering Your Timeslot Events

When logged under an administration account, one can create a Timeslot event. When you are on the webpage (shown exactly above) you can enter your desired timeslot name, theme, date and time. You can always refer back to the main calendar in order to see whether your timeslots and themes are correct and if you are entering them correctly. It is helpful to keep a separate tab open that shows your updated calendar and that you can continously refresh as you go through the scheduling process. This helps avoid mistakes and overlooked details.

When entering a Themeslot name, it is easier to organize your timeslots by their specific time of day in which they are being aired and the subject it is under. For example, Monday Early Am International Issues Timeslot or Friday Evening Music Timeslot. This helps organize scheduled programs according to the time of day and it's theme. You then have the choice of placing it under a specific channel and specific theme. For example, Moday Early Am International Issues Timeslot can be placed under channel 57 and under the theme "International Issues." This helps out with the scheduling and organization of the calendar and the shows.

You then must fill out what exact time the Timeslot will be scheduled to air and it's date. Timeslot Events use the 24 hour time format for their From date and To date. The Timeslot Event will likely start at an hour like 14:00:00 and end at 14:29:59. The allows the next Timeslot to start the following second at 14:30:00. Becareful with placing your timeslot in the correct time, it is crucial when scheduling out your events in your calendar.

A Timeslot Event can be scheduled to occur every Wednesday or with a pattern like the first Friday of every month. An Until time must be added for repeating Timeslot Events. For example, if one of your timeslot events happen to occur every Monday, Tuesday, and Wednesday, you can highlight those days in the "Advanced" section, so that you do not have to manually schedule it in each time. It makes life easier when organizing a large schedule and is easy to use. Make sure you fill in the section that asks you until what date you want this program to run in the course of the year.

It is always good to keep open several tabs, so that you can go back and forth when checking the schedule.  These tips only help make the process less tedious and quick!

 

Under Scheduling, a Timeslot can be configure as User Scheduled AND Auto Scheduled OR tied to a specific Project. The Rules for which Show airs when a Timeslot is tied to a specific Project are configured on the Project.

Defining Permissions

access scheduling options of own shows - This permission will add the Scheduling Options tab to shows the user is the author of. If the show has already aired, that message will appear when the user clicks the Scheduling Options tab.

access scheduling options of aired shows - This permission will allow user to schedule a show that has already aired.

manage scheduling - This permission allows user access to administrative views of scheduling information to view Timeslot Events. In addition to this permission, user need to be given permission to create and edit Timeslot Events to effectively manage scheduling.

administer scheduling - This permission allows user to change the administrative scheduling settings like Default Airing on Channel, Number of Airing options producers are shown, Minimum hours between Airing options, Maximum Minutes Since Cron, and the Cron error shown to Producers.

administer Open Media System -

Designing a Theme Based Schedule

Timeslot Themes enable the audience of the station to maintain some level of consistency and predictability in programming, while allowing for diverse content to always have a place on Public Access.  Viewers will not always know exactly which show will be on at a given time, but they can always know what thematic category is on. This also enables us to send consistent info to TV Guide and other Electronic Programming Guides such that the EPG does not simply read "Public Access Programming".

The duration of each themed Timeslot Event should relate, in-part, to the total number of hours of content submitted in that category, which ensures that shows in popular categories have as much repeat airings as shows in categories/themes with minimal submissions.  Because the amount of content in a given theme/category can vary significantly over relatively short periods of time, Timeslot Themes can be grouped in pairs using the Timeslot Pairing submodule, which ensures more consistency in the daily schedule. In this manner, the total time allocated for the pair is consistent, while the distribution between the two paired themes can change.

Pairs are set up with a minimum of 2 hours, and the switch from the first to the second category in each pair must take place on the hour or half-hour, to improve the viewer experience. With the Open Media system, this information can be exported for Electronic Programming Guides and for dynamic interstitial content that announces the beginning and end of each theme/category slot.

FOLLOWING IS STILL DOM SPECIFIC

Following is the logic of the code which distributes time within each theme block pair.
-Calculate the total duration of content in each category annually.
The category with the most combined duration (most hours of content, not most shows) becomes "category1" and is paired with the shortest category (in DOM's case, "Category 12")

On the Premium Channel, blocks are divvyd up as such:
Because we are on the premium channel, and we only want to show videos above average for that category, we ask.
-what is the ratio of
"the combined duration of all content in category 1 with a Score/rating above "R"(The variable defined in the bayesian equasion below)"
to
"the combined duration of all content in category 12 with a score/rating above R"?

Being that this is a 2-hour slot, shared between the two categories, if the ratio is less than .25, the slot is split up 25/75 with (in this case) 30 mins allotted to Cat1 and 90mins allotted to cat2.  If the ratio is between .25 and .75, the slot is split in half, 60-mins each.  If the ratio is over .75, the slot is split up with 90mins allotted to cat1 and 30mins allotted to cat b.

Then, in scheduling the "Featured" day for that group/pair, we take the top-rated show in cat 1.
Is it marked for late-night airing?  If yes, place it first in the 11pm slot for that day. 
If no, determine the remaining time allotted for cat1 in the first time slot (taking into account anything that is already programmed in the princeton server). Is the available time is greater than show's duration?
If yes, schedule the show at the first available slot. 
If no, skip the show.

Do the same for the second rated show in that category, and so on.

In filling a block, the system should not stray from the selected category, and can be set to use shows listing the category as a "secondary" category, or based on other metadata, repeat shows, or even switch to continuity files.

Any open time on the basic channel 56 can be autoscheduled following the same rules, but without the requirement that the rating is above "R", so whereas on 57 we start repeating shows once we hit shows with a rating below the average for the category, on 56 we don't start repeating until we run out of shows.

Playback Server Specific Submodules

Princeton

The Princeton submodule enables the transfer of video files, show metadata, and scheduling information to Telvue's Princeton playback servers. The Princeton submodule also includes a status check feature. This feature disables scheduling when a playback server is unresponsive or at capacity.

The Princeton status check in run on cron. Once the problem is resolved, you may need to manually refresh the status of that check in Princeton (http://YOURSERVER:3000/system_health/index) and then rerun Drupal's cron or refresh Admin > Open Media System > Princeton Server Status.

DEVELOPMENT IN PROGRESS: The current release of om_timeslot_princeton set status variables for each server, but lack a UI to override those settings. The server status variables are found in Drupal variable table and formatted as om_timeslot_server_[nid]_status. The value of that variable will be i:1; if the status is good. i:0; if the server has an issue.

Adding mount and symbolic link to Princeton playback

First, mount the playback server in a way that allows the account used by the Apache service to read and write files.  It is unlikely that this can be done on an shared web host.  In most cases you will need complete control of a web server that is on the same network as the Princeton.

On Ubuntu, the mount command for our Princeton looks like this...

sudo mount -t cifs //INTERNTAL_PRINCETON_IP/vol1 /mnt/DOM57 -o username=smbuser,gid=www-data,uid=www-data

Other operating systems will require slightly different syntax for creating mounts.  Consult the documentation for the operating system you are using.

The internal IP address is used in most cases because the SMB protocol is not normally routed between subnets.

Once the volume is mounted manually, add that mount command to your server's fstab file so the mount is recreated if the server is rebooted. Again, consult the documentation for the specific operating system you are using.

Transfer to Princeton

 

Rule-Based Scheduling and Programming

The Open Media Project Timeslot Scheduler Module is designed to simplify or democratize the scheduling process for any noncommercial media operation.  The system is flexible enough to enable the station director to apply any mix of rules (from freshness to popularity to theme) to automatically generate the programming schedule.

One of the most innovative and democratic variables stations can use to drive the program schedule is viewer ratings.  Votes or ratings can be generated on the website or via phone or SMS, then applied together with other variables set by the station to determine the programming schedule.  Because the options and variables are so extensive, we'll explain one way this system can work by explaining the structure in one station, Denver Open Media.

Denver Open Media's Rule-Based Scheduling:ThemeBlock Form

To give viewers a more stable and predictable viewing experience, all scheduling is done within theme-blocks. In Denver, when a producer submits a show the producer selects the theme block (also known as category or Daypart), along with all other metadata.

Denver has 12 theme blocks, though we recommend 10 categories, which is easier to distribute fairly across weekdays.  Themes are paired, with the theme block containing the most hours of content paired with the theme block containing the fewest hours of content, and so on.

 

DOM56SchedueLayout

 

 

 

 

On our basic channel, theme blocks are distributed such that they appear 4 times during the weekedays (one early morning, one late morning, one early afternoon, and one late-night) and one weekend slot. Every show is guaranteed to air once on this basic channel, with producers free to select an open time-slot for the theme block they've selected for the initial airing.  On the day when the theme block does not appear on our basic Channel, that theme pair is "featured" on our premium channel 57, with the morning and evening prime-time, and late-night slot (which has proven to be the most popular viewing time for Public Access) filled with that theme pair.

DOM57ScheduleGroups

Time within the theme pair is split between the two theme categories based on the compared amount of total content in each category.  The slot is divided into 30-minute blocks, with the blocks being distributed in a ratio matching the ratio of content for each category in the pair.  A more detailed description of this 30-minute chunk distribution can be found in the Developer Notes.

 

Scheduling Within ThemeBlocks:

When desiging a user-driven scheduling system, it was important to us that the viewers have as much control as possible.  At the same time, we want to ensure that there is room for everything on the channel.  So, while we wanted viewer votes/ratings to drive the scheduling on our "premium" channel 57, we designed the system such that videos are only competing within their theme-block, and thus a video about child abuse need not compete with a rock video.  This approach has ensured that there is room available for the different types of content that may be less popular, but deemed significant to the community.  The theme-blocks are to be reviewed by a community board each year.

While many video sites use a straight-average rating system, this results in misleading ratings, where a show with a single perect review has a higher average than a show with hundreds of perfect ratings and one low rating.  Thus, instead of a straight average, we use what is called a "Bayesian Estimate".  The equasion is borrowed from IMBD's rating system.

Show Score= (v / (v+m)) * R + (m / (v+m)) * C
where:
R = average for the show (mean) = (Rating)
v = number of votes for the show= (votes)
m = minimum votes required to be listed in top 25 (currently 6)
C = the mean for that Theme/category
This formula normalizes scores, that is it pulls a particular score (R) to the mean (C) if the number of votes is not well above m. In other words, if a particular design has only a few votes above the minimum required votes to be listed in top 25 (m), the average score is decreased a little if it is above the mean, or increased a little if it is below the mean in accordance with the normal distribution rule of statistics.

Improvements to this system include series or producer scores, which are averaged with show scores to ensure that new shows from producers or series with a strong track-record have preference.  We also hope to date votes, where in scheduling for the premium channel, recent votes carry more weight than older votes.

 

Sample Timeslot Rules

Timeslot Rules fall somewhere between normal SQL and Views.  After the list of the shows that could potentially be scheduled is generated, additional processing is done to rule shows out from the list to be scheduled based on other settings like it aired since the Days Since Last Airing setting, a show from the same project had already been scheduled, or this show is rated Adult and being scheduled within a block that airs at a time adult content isn't allowed.

Before reading the rest of this page, it would be helpful to read Wikipedia article about JOINS.

Many of the example queries use the {tablename} syntax.  This isn't required.  The reason is for compatibility with Drupal's Database Abstraction Layer.  If you want to preview the query using a tool like phpmyadmin, you would need to remove the {} before running the query.

POST SQL PROCESSING OPTIONS:

Days Since Last Airing - This eliminates shows as candidates to be scheduled based on the latest om_airing nodes.  This will eliminate both shows that have aired X days ago as well as shows scheduled to air in the future.

Do Not Air Shows from the Same Project Concurrently - This prevents shows form the same project from running back to back.  Useful when ordering by the date the show was added.  If a member adds 10 shows at once, only the one show would air each time the Rule was processed.  If another member added show after the first 5, the 6th show from the first project would air as well.

Adult Content - The hours adult content is removed from the pool of schedulable shows isn't configured on Timeslot Rule or Events, but is processed if hours are set in the Admin > Open Media > Scheduling Configuration.

If the Limit Pool by Rating, this must be included in the SQL result.  Add this join to your SQL...

JOIN content_field_om_rating  ON content_field_om_rating.vid = <vid of original table>

Do Not Air Shows from the Same Project in Rule - This is a more restrictive configuration and should only be used by stations with a large archive.

If the Limit Rules to Scheduling by Project the Organic Group must be included in the SQL result.  Add this join to your SQL...

JOIN {og_ancestry} ON og_ancestry.nid = <nid of original table>

Custom Variables:

Anyone familiar with Views will recognize this syntax.  While the longer term goal is to generate Rule from Views, this release of om_timeslot_scheduler lays the foundation for that development.

***CURRENT_THEME*** - When the Rule is processed, this code is replaced by the nid of the Theme (or Paired Theme when using om_timeslot_pairings) Attempting to Preview a Rule that utilizes this variable directly will return this error...

This Rule utilizes a Theme. Results can only be previewed from a Timeslot Theme or Event.

It will also return a list of Timeslot Themes that can be used to preview the Rule's results.

***NOW_-7_DAYS*** - This variable will be converted to a time using PHP's strtotime function.  Any string PHP can process can be used; -1_Week, Last_Monday, ect.

SQL to Order by Alternative Ratings:

Rules using the Bayesian score provided by alternative_ratings module should add this SQL...

JOIN {alternative_rating} ON alternative_rating.nid = node.nid

and...

ORDER BY score

SQL to Order by Voting API averages:

This SQL will return the shows rated 5 of 5 if you are using five stars or thumbs up/like with that configuration where the vote was made in the last 7 days.  This creates a nearly immediate feedback for viewers who rate shows.  If they rate a show, it will very likely be scheduled the next time Rule is processed.

WHERE field_om_show_theme_nid = ***CURRENT_THEME*** AND value = 100 AND votingapi_vote.timestamp > ***NOW_-7_DAYS*** GROUP BY nid ORDER BY total_votes

SQL for Limits:

Limiting the number of results is important for performance.  The number of shows that should be returned in a query varies based on the duration of the Timeslot Event, number of Rules applied to an Event, and amount of content matching that criteria that will be ruled out based on post SQL processing.  The SQL for a limit is...

LIMIT 0, 100

SQL for Random:

When getting started with Rule based scheduling, Random is useful option to add variety to a small amount of content.  To randomize the results, simply add this ORDER BY statement to your query...

ORDER BY RAND()

SAMPLE RULES:

Locally Produced - Top-rated by Alternative Rating

SELECT *  FROM {content_field_om_locally_produced}
JOIN {node} ON content_field_om_locally_produced.vid = node.vid
JOIN {og_ancestry} ON og_ancestry.nid = node.nid
JOIN {alternative_rating} ON alternative_rating.nid = node.nid
WHERE field_om_locally_produced_value = 1 AND status = 1
ORDER BY score DESC
LIMIT 0, 100

Because that Rule doesn't rely on a theme, it is standard SQL.  A more complicated Rule would be...

Most Popular for Theme That Hasn't Aired in 14 Days

SELECT * FROM {content_field_om_theme}
JOIN {node} ON content_field_om_theme.vid = node.vid
JOIN {og_ancestry} ON og_ancestry.nid = node.nid
JOIN {alternative_rating} ON alternative_rating.nid = node.nid
WHERE field_om_theme_nid = ***CURRENT_THEME*** AND status = 1
ORDER BY score DESC
LIMIT 0, 100

This Rule utilizes both the Days Since Last Airing option and the ***CURRENT_THEME*** variable in the SQL.  The same SQL could be used with a higher Days Since Last Airing number and run after the 14 day version.  Because using the Days Since Last Airing option rules out shows based on both past and future airings, shows scheduled in the first rule would not be scheduled by the 21 or 30 day version of the Rule.

Random Shows in Theme

SELECT * FROM {content_type_om_show}
JOIN {node} ON node.vid = content_type_om_show.vid
JOIN {content_field_om_theme} ON content_field_om_theme.vid = content_type_om_show.vid
WHERE field_om_show_mpeg2_fid IS NOT NULL AND node.status = 1 AND field_om_theme_nid = ***CURRENT_THEME***
ORDER BY RAND()

 

Timeslot Pairings

Timeslot Pairings are an attempt to give equal access to the channel to all types of content.  Popular Themes are "paired" with less popular themes.

 

 

 

How Producers Self Schedule

Users who have permission to self schedule see a Scheduling Options tab on Shows they are the author of.  Users with administer scheduling permissions see that tab on all shows.

If a show has already aired, non-admin users see a message telling them only admins can schedule the show again.

If the show hasn't aired or the user is an admin, the published Timeslot Events for both the matching Project and Theme are displayed.

 

Autoscheduling

Current Limitations:

  • Autoscheduling does not check previously scheduled airing like Self Scheduling.  Currently an Event should be Self Scheduled OR Autoscheduled.  NOT BOTH.
  • Rules must be applied to Events.  While the structure is designed to allow default rules on the Playback Server and Theme, Rules must be applied to Time Slot Events.
  • Only the first Rule is processed.  While the structure supports adding multiple rules can be added to an Event, the current code is only processing the first rule.
  • No cron support.  It seems logical to finish the other features in Preview before running the functions via cron.

When a Rule is applied to a Timeslot Event, the schedule link appears next to the Lead Theme and the Paired Theme.  The Rule is processed separately with the start and end time of each theme.  The start and end time or the lead and pair is adjusted based on the amount of content for that theme.

Clicking schedule will preview the results of that Rule.  Shows that are ruled out in post SQL processing appear crossed off with the reason in parentheses next to the show's title.  Shows that are not ruled out are prepared for TRANSFER and CSV export.

The TRANSFER option can take several minutes to complete depending on how many shows are already on the server, the size of the MPEG, and the speed of the connection between the archive and the playback server.

Once the shows have been transferred, you are ready to generate the CSV. Clicking the CSV icon will display a page that looks like this...

Save that files as a .csv.  IMPORTANT! Do not save the file as HTML.  That will fail to import into the Princeton.  Once the file has been saved, go to the Princeton Progamming Tab.  Use the Browse to file and Import.  If everything works, you should see a message like this...

Video Sharing

Staff Training

This section provides a curriculum outline for training staff and others about the Open Media Project tools. This is a draft in development.

Goal: This training curriculum is directed toward the staff of community television stations. The goal is to provide staff with knowledge about the Open Media Project tool sets from the perspective of end users as well as a staff administrators.

Part A: Open Media Project Introduction

  1. Open Media Project: What is the Open Media Project?
  2. Drupal: What is it and how does the Open Media Project use it?
  3. CiviCRM: What is it and how does the Open Media Project use it?
  4. Resources: OMP Handbooks, GDO, IRC

Part B: Getting Into The Site

  1. User Accounts and Login
  2. Menus and site navigation for authenticated users (non-member public)
  3. Menus and site navigation for staff users
  4. Overview of other roles, permissions, and access to the site

Part C: Using The Tools

  1. Transactions: How do users pay and become members?
  2. Classes: How do users sign up for a class?
  3. Project: What are projects for? How do users create a project?
  4. MERCI: How do users make reservations?
    1. MERCI Handbook: Create A Reservation
  5. Show: How do users submit a show to the program schedule?

Part D: Administering The Tools

  1. Transactions: How do staff administer online transactions?
  2. Classes: How do staff administer classes?
  3. MERCI: How do staff administer MERCI?
  4. Show: How do staff administer program schedules?
  5. CiviCRM: How do staff administer and use other components of CiviCRM?

Part E: Maintaining & Developing The Tools

  1. The Drupal Way: Overview of the Open Source development process
  2. Upgrades: Why are they necessary?
  3. Bugs: How to report bugs or problems?
  4. Feature & Support Requests: How to submit requests for new features and support?
  5. Documentation: How to contribute to improving OMP documentation?

Part F: Expanding the Open Media Project

  1. The Open Media Project Network
  2. Sharing Content
  3. Sharing Information, Resources, Knowledge