/**
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
*
* The Apereo Foundation licenses this file to you under the Educational
* Community License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License
* at:
*
* http://opensource.org/licenses/ecl2.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
*/
package org.opencastproject.capture;
/**
* Contains properties that the ConfigurationManager refer. These properties should exist in the configuration file on
* the local machine as well as the centralised server.
*/
public interface CaptureParameters {
/** The number of milliseconds in a second */
long MILLISECONDS = 1000;
/** The base unit of measurement, 1 second */
long SECONDS = 1;
/** The number of seconds in a minute */
long MINUTES = 60 * SECONDS;
/** The number of seconds in an hour */
long HOURS = 60 * MINUTES;
/** The default time to poll the server for calendar information **/
long DEFAULT_STATE_PUSH_TIME = 10 * SECONDS * MILLISECONDS;
/** Matterhorn Core URL */
String CAPTURE_CORE_URL = "org.opencastproject.capture.core.url";
/**
* Settings which control the configuration service
*/
/** Location of the centralised configuration file */
String CAPTURE_CONFIG_REMOTE_ENDPOINT_URL = "capture.config.remote.endpoint.url";
/** The time to wait between updating the local copy of the configuration */
String CAPTURE_CONFIG_REMOTE_POLLING_INTERVAL = "capture.config.remote.polling.interval";
/** The full path to the cached server config */
String CAPTURE_CONFIG_CACHE_URL = "capture.config.cache.url";
/**
* Settings which control the filesystem
*/
/** The URL of the caching directory under the root directory */
String CAPTURE_FILESYSTEM_CACHE_URL = "capture.filesystem.cache.url";
/** The URL of the volatile directory under the root directory */
String CAPTURE_FILESYSTEM_VOLATILE_URL = "capture.filesystem.volatile.url";
/** The root URL where the captures should be stored prior to ingest */
String CAPTURE_FILESYSTEM_CAPTURE_CACHE_URL = "capture.filesystem.cache.capture.url";
/**
* Settings which control the scheduler
*/
/** The remote URL where the capture schedule should be retrieved */
String CAPTURE_SCHEDULE_REMOTE_ENDPOINT_URL = "capture.schedule.remote.endpoint.url";
/** The time between attempts to fetch updated calendar data */
String CAPTURE_SCHEDULE_REMOTE_POLLING_INTERVAL = "capture.schedule.remote.polling.interval";
/** The local URL of the cached copy of the capture schedule */
String CAPTURE_SCHEDULE_CACHE_URL = "capture.schedule.cache.url";
/**
* Settings which control the agent state service
*/
/** The name of the agent */
String AGENT_NAME = "capture.agent.name";
/** The URL of the remote state service */
String AGENT_STATE_REMOTE_ENDPOINT_URL = "capture.agent.state.remote.endpoint.url";
/** The time between attempts to push the agent's state to the state service */
String AGENT_STATE_REMOTE_POLLING_INTERVAL = "capture.agent.state.remote.polling.interval";
/** The time between attempts to push the agent's capabilities to the state service */
String AGENT_CAPABILITIES_REMOTE_POLLING_INTERVAL = "capture.agent.capabilities.remote.polling.interval";
/**
* Settings which control the recording state service
*/
/** The URL of the remote recording state service */
String RECORDING_STATE_REMOTE_ENDPOINT_URL = "capture.recording.state.remote.endpoint.url";
/** The ID of a capture */
String RECORDING_ID = "capture.recording.id";
/** A directory which contains a capture */
String RECORDING_ROOT_URL = "capture.recording.root.url";
/** Time at which to stop the capture */
String RECORDING_END = "capture.recording.end";
/** The duration of the recording in seconds */
String RECORDING_DURATION = "capture.recording.duration";
/** The number of seconds to wait before force-killing the pipeline */
String RECORDING_SHUTDOWN_TIMEOUT = "capture.recording.shutdown.timeout";
/** The recording's properties */
// TODO: I shouldn't live here, but where should I live?
String RECORDING_PROPERTIES = "org.opencastproject.capture.agent.properties";
/**
* Settings which control the ingest jobs
*/
/** The URL to send the capture data to during ingest */
String INGEST_ENDPOINT_URL = "capture.ingest.endpoint.url";
/** Number of attempts the capture agent will attempt to ingest before waiting on the next attempt. **/
String INGEST_RETRY_LIMIT = "capture.ingest.retry.limit";
/** The length of time to wait between trying to retry to ingest. **/
String INGEST_RETRY_INTERVAL = "capture.ingest.retry.interval";
/** The length of time to wait until trying to ingest again after failing the number of times in INGEST_RETRY_LIMIT. **/
String INGEST_PAUSE_TIME = "capture.ingest.pause.time";
/** The key for the workflow definition, if any, in the capture properties attached to the iCal event */
String INGEST_WORKFLOW_DEFINITION = "org.opencastproject.workflow.definition";
/**
* Settings which control the capture hardware and outputs
*/
/**
* The maximum length, in seconds, which should be captured regardless of scheduled length. This is to catch user
* input errors in the scheduler, and also to stop infinite captures from an unscheduled capture.
*/
String CAPTURE_MAX_LENGTH = "capture.max.length";
/**
* The maximum amount of time to wait for our gstreamer pipeline to start capturing before we decide to kill the
* process and report a failure. Set in seconds.
*/
String CAPTURE_START_WAIT = "capture.start.wait";
/** A comma delimited list of the friendly names for capturing devices */
String CAPTURE_DEVICE_NAMES = "capture.device.names";
/*
* Specification for configuration files are discussed in MH-1184. Properties for capture devices are specified by
* CAPTURE_DEVICE_PREFIX + "$DEVICENAME" + CAPTURE_DEVICE_* where DEVICENAME is one of the devices specified in
* CAPTURE_DEVICE_NAMES. For instance, the source of a capture device for a device named SCREEN is
* CAPTURE_DEVICE_PREFIX + SCREEN + CAPTURE_DEVICE_SOURCE
*/
/** String prefix used when specify capture device properties */
String CAPTURE_DEVICE_PREFIX = "capture.device.";
/** Property specifying the type of the source for this device e.g. V4L2_Src **/
String CAPTURE_DEVICE_TYPE = ".type";
/** Property specifying the source location of the device e.g., /dev/video0 */
String CAPTURE_DEVICE_SOURCE = ".src";
/** Property specifying the flavor of the device */
String CAPTURE_DEVICE_FLAVOR = ".flavor";
/** Property specifying the GStreamer like syntax for a Custom Producer either Video or Audio **/
String CAPTURE_DEVICE_CUSTOM_PRODUCER = ".customProducer";
/** Property specifying the GStreamer like syntax for a Custom Consumer **/
String CAPTURE_DEVICE_CUSTOM_CONSUMER = ".customConsumer";
/** Property specifying the name of the file to output */
String CAPTURE_DEVICE_DEST = ".outputfile";
/** Property specifying a codec for the device */
String CAPTURE_DEVICE_CODEC = ".codec";
/** Property specifying the media container to use */
String CAPTURE_DEVICE_CONTAINER = ".container";
/** Property appended to CAPTURE_DEVICE_CODEC to specify that codec's bitrate */
String CAPTURE_DEVICE_BITRATE = ".bitrate";
/** Property appended to CAPTURE_DEVICE_CODEC to specify that codec's quantizer value (codec=x264enc only) */
String CAPTURE_DEVICE_QUANTIZER = ".bitrate";
/** The framerate in frames per second to force on the video */
String CAPTURE_DEVICE_FRAMERATE = ".framerate";
/** Property prefixing properties involving the capture buffers */
String CAPTURE_DEVICE_BUFFER = ".buffer";
/** Property appended to CAPTURE_DEVICE_BUFFER specifying the maximum number of buffers in the queue */
String CAPTURE_DEVICE_BUFFER_MAX_BUFFERS = ".size";
/** Property appended to CAPTURE_DEVICE_BUFFER specifying the maximum number of bytes in the queue */
String CAPTURE_DEVICE_BUFFER_MAX_BYTES = ".bytes";
/** Property appended to CAPTURE_DEVICE_BUFFER specifying the maximum length of time to store buffers in the queue */
String CAPTURE_DEVICE_BUFFER_MAX_TIME = ".time";
/** Property appended to CAPTURE_DEVICE_BUFFER specifying the maximum length of time to store buffers in the queue */
String CAPTURE_DEVICE_VOLUME = ".volume";
/** Time interval between confidence updates (in seconds) */
String CAPTURE_DEVICE_CONFIDENCE_INTERVAL = ".confidence.interval";
/** Time interval between executions of the capture cleaner */
String CAPTURE_CLEANER_INTERVAL = "capture.cleaner.interval";
/** Threshold used for determining when deleting archived captures needs to happen */
String CAPTURE_CLEANER_MIN_DISK_SPACE = "capture.cleaner.mindiskspace";
/** Maximum number of days to archive a capture after its been ingested before cleaning up */
String CAPTURE_CLEANER_MAX_ARCHIVAL_DAYS = "capture.cleaner.maxarchivaldays";
/** Name of the zip file ingested by the capture agent, containing all the relevant files for a recording **/
// TODO: I shouldn't live here, but where should I live?
String ZIP_NAME = "media.zip";
/** Default name for the manifest file */
// TODO: I shouldn't live here, but where should I live?
String MANIFEST_NAME = "manifest.xml";
/**
* Settings that control the capture agent confidence monitoring
*/
/** Flag to turn confidence monitoring on off (boolean) */
String CAPTURE_CONFIDENCE_ENABLE = "capture.confidence.enable";
/** Directory which contains confidence monitoring images */
String CAPTURE_CONFIDENCE_VIDEO_LOCATION = "capture.confidence.video.location";
/** Maximum number of seconds of audio monitoring data to store in memory */
String CAPTURE_CONFIDENCE_AUDIO_LENGTH = "capture.confidence.audio.length";
/** Flag to turn confidence monitoring debugging on or off (boolean) */
String CAPTURE_CONFIDENCE_DEBUG = "capture.confidence.debug";
/**
* Settings which control the capture agent's handling of scheduling data.
*/
/**
* Controls the behaviour of the agent when two scheduled events overlap or are within X of one another. Setting this
* value to true will cause the cronologically second event to be dropped from the schedule. Any other setting will
* have the agent shorten the second event to fit. Note that if the length drops below the minimum capture length then
* the capture will not be scheduled.
*/
String CAPTURE_SCHEDULE_DROP_EVENT_IF_CONFLICT = "capture.schedule.event.drop";
/**
* The length of time to require between capture events. Specified in minutes. Note that this is a limitation of your
* hardware: It takes a certain length of time for the hardware to stop and then be ready to capture again. Setting
* this to less than 1 will *not* make this happen any faster, and will in fact cause you more problems when the agent
* tries to start a second capture while the first is still in progress.
*/
String CAPTURE_SCHEDULE_INTEREVENT_BUFFERTIME = "capture.schedule.event.buffertime";
/**
* Host, where to send the RTP stream (default: 127.0.0.1).
*/
String CAPTURE_RTP_CONSUMER_HOST = ".rtpConsumer.host";
/**
* Port, where to send audio RTP stream. Schould be set for each device.
*/
String CAPTURE_RTP_AUDIO_CONSUMER_RTP_PORT = ".rtpConsumer.audio.rtpPort";
/**
* Encoder property can be used to choose a different audio encoder (default: faac)
* or set encoder-properties (by adding .propertyName=value).
*/
String CAPTURE_RTP_AUDIO_CONSUMER_ENCODER = ".rtpConsumer.audio.encoder";
/**
* payloader propery can be used to choose a different audio payloader (default: rtph264pay)
* or set payloader-properties (by adding .propertyName=value).
*/
String CAPTURE_RTP_AUDIO_CONSUMER_PAYLOADER = ".rtpConsumer.audio.payloader";
/**
* Port, where to send video RTP stream. Schould be set for each device.
*/
String CAPTURE_RTP_VIDEO_CONSUMER_RTP_PORT = ".rtpConsumer.video.rtpPort";
/**
* Encoder property can be used to choose a different video encoder (default: x264enc)
* or set encoder-properties (by adding .propertyName=value).
*/
String CAPTURE_RTP_VIDEO_CONSUMER_ENCODER = ".rtpConsumer.video.encoder";
/**
* payloader propery can be used to choose a different video payloader (default: rtph264pay)
* or set payloader-properties (by adding .propertyName=value).
*/
String CAPTURE_RTP_VIDEO_CONSUMER_PAYLOADER = ".rtpConsumer.video.payloader";
/**
* The framerate in frames per second to force on the RTP video stream.
*/
String CAPTURE_RTP_VIDEO_CONSUMER_FRAMERATE = ".rtpConsumer.video.framerate";
}