# Please note that the intervals and times specified in this file are in *seconds*

# The URL of the central core.  This assumes that all services are running on the same machine.
# The above assumption might not be correct.  If so then replace the appropriate keys below with your urls.
org.opencastproject.capture.core.url=http://kanga-aa5g11.ecs.soton.ac.uk:8080

### Required variables start here (the agent will behave oddly without them) ###

# The URL of the caching directory under the root directory
capture.filesystem.cache.url=${org.opencastproject.storage.dir}/cache/
# The URL of the volatile directory under the root directory
capture.filesystem.volatile.url=${org.opencastproject.storage.dir}/volatile/
# The root URL where the captures should be stored prior to ingest
capture.filesystem.cache.capture.url=${capture.filesystem.cache.url}/captures/

# Image that should be displayed, if no vga-source is connected to the epiphan vga2usb. If no image is set some color-bars are displayed
# capture.fallback.png=images/novideo.png

# The remote URL where the capture schedule should be retrieved
capture.schedule.remote.endpoint.url=${org.opencastproject.capture.core.url}/recordings/calendars
# The time in minutes between attempts to fetch updated calendar data
capture.schedule.remote.polling.interval=5
# The local URL of the cached copy of the capture schedule
capture.schedule.cache.url=${capture.filesystem.cache.url}/schedule.ics

# Location of a centralized configuration file
capture.config.remote.endpoint.url=
# The time in seconds to wait between updating the local copy of the configuration
capture.config.remote.polling.interval=600
# The file to cache the server config, if any
capture.config.cache.url=${capture.filesystem.cache.url}/capture.properties

# The name of the agent
capture.agent.name=yemi_test1
# The URL of the remote state service
capture.agent.state.remote.endpoint.url=${org.opencastproject.capture.core.url}/capture-admin/agents
# The time in seconds between attempts to push the agent's state to the state service
capture.agent.state.remote.polling.interval=10
# The time in seconds between attempts to push the agent's capabilities to the state service
capture.agent.capabilities.remote.polling.interval=10

# The URL of the remote recording state service
capture.recording.state.remote.endpoint.url=${org.opencastproject.capture.core.url}/capture-admin/recordings

# Number of attempts the capture agent will attempt to ingest before waiting on the next attempt. **/
capture.ingest.retry.limit=5
# The length of time to wait between trying to retry to ingest.
capture.ingest.retry.interval=300
# The length of time to wait until trying to ingest again after failing the number of times in INGEST_RETRY_LIMIT.
capture.ingest.pause.time=3600

# The maximum length of a capture, defaults to 8 hours (28800 seconds)
capture.max.length=28800

# The maximum length of time in seconds to wait before force killing a capture when stopping a recording
capture.recording.shutdown.timeout=60

# The default time in seconds between subsequent executions of the capture cleaner
capture.cleaner.interval=3600
# The default minimum available disk space, under which recordings are erased from the system
# IN BYTES
# NOTE:  This diskspace value does *NOT* take the reserved disk space for the root user into account
# PLEASE:  Set this value to more than the reserved space on disk (typically 5%) otherwise the minimum disk space
#          checks will not function because there will appear to be enough disk even if you cannot write to the 5%
capture.cleaner.mindiskspace=536870912
# The default maximum time (in days) a recording should be kept if there's enough disk space available
capture.cleaner.maxarchivaldays=30

# confidence monitoring outputs images to this directory
capture.confidence.video.location=${org.opencastproject.storage.dir}/volatile/

# enable/disable confidence monitoring
capture.confidence.enable=false

# enable/disable timestamps on confidence images
capture.confidence.debug=false

#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.
capture.schedule.event.drop=false

#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.
capture.schedule.event.buffertime=1

### Required variables end here ###


### MH-4493 Properties for Felix error watch process ###

# The following properties will define how to handle Felix is it does not stay
# running indefinitely. If, for whatever reason, Felix crashes it will not 
# restart by default. The script watch_felix.sh was created to be used in 
# combination with crontab as a safeguard for Felix.

# Comma-delimited list of email addresses to send notification of failure to
capture.error.emails=
# The SMTP host to send the mail from (Default: localhost)
capture.error.smtp=
# The SMTP user to send the message from (Default: current user)
capture.error.smtp.user=
# The password for the user (Default: no password necessary)
capture.error.smtp.password=
# The subject and message of the email, respectively. Use %date to put a 
# timestamp in the subject/message and use %hostname to put the hostname in.
capture.error.subject="%hostname capture agent started at %date"
capture.error.messagebody="Capture agent was not running, and was just started."

### Capture device definitions ###

# The following lines create three example inputs for the capture agent, often
# refered to as the "mock agent" for testing purposes.  Each input consists of:
# 1:  The source, in this case a file which is listed in the project pom.xml 
#     as a dependency. To use a real device instead you would put the linux 
#     device identifier on this line (eg:  /dev/my_capture_card).
# 2:  The output file name. This can be pretty much anything, though best
#     practice is to have the extension match the appropriate value for the
#     source/container format (e.g. .mpg if using mpegtsmux).
# 3:  The flavour of the input. This flavour must be defined from options given
#     in org.opencastproject.mediapackage.MediaPackageElements.  Known
#     good examples include:
#          presenter/source
#          presentation/source
#          audience/source
#          presentation/source
#          documents/source
#          indefinite/source
#
# To make a new input device available to the capture agent you must assign it
# a unique name (without whitespace or punctuation) that will show up in the
# administrative user interface.  For instance, the following lines will make a
# device called "audience_camera" available in the administrative interface:
#
# Codecs, containers, and bitrates for devices can be specified as follows:
# 
# Codecs must be  gstreamer encoders capable of accepting video/x-raw-yuv.  The
# codec bitrate is set relative to the encoder, because many encoders are written 
# by different people they do not agree on a standard format such as bps
# therefore you will have to determine what prefix the encoder uses. This can be
# done by executing "gst-inspect x264enc" and looking at what format the codec
# expects for its bitrate (in this case, kbit/sec).
#
# Known good codecs include:
#     MPEG2: "ffenc_mpeg2video" with values in bits/sec
#     H264: "x264enc" *does not use bitrate, see below
#     Ogg Theora: "theoraenc" with values in kilobits/sec
#     MP2 Audio: "twolame" with values in kilobits/sec
#     MP3: "lame" with values in kilobits/sec
#     Ogg Vorbis: "vorbisenc" with values in bits/sec
#
# *H.264 encoding works by using a constant quantizer instead of a constant
# bitrate. Therefore instead of using .bitrate use .quantizer:
# The quantizer value for the x264enc element is a value from 1 - 50 (default: 21)
# and it determines how much data is to be removed from each frame when encoding. 
# Lower quantizer values will produce more detailed videos, but with larger file sizes.
#
# Known good containers include:
#     MPEG2 Transport Steam: "mpegtsmux"
#     MPEG4 Layer 2: "ffmux_mp4"
#     Ogg: "oggmux"
#     Quicktime: "ffmux_mov"
#
# Each video source can also have a framerate associated with it. Please note
# that this is not the framerate that the media is captured at, it is a software
# feature that will drop, duplicate or adjust timestamps on video frames to make
# it a perfect stream at the desired framerate. Also, if the framerate is not
# set the device's default framerate is used. Set a desired framerate as follows:
#
# All pipelines have buffers which store frames before encoding.  These buffers
# have a limit on the number of frames (called buffers by gstreamer), the number
# of bytes, and the length of time to store the information.  These parameters,
# when set incorrectly, can cause the output video to appear choppy.  To set these
# parameters the following keys have been defined with defaults for each input device:
#
# Keep in mind when setting these variables that increased settings can require
# more powerful hardware.


# Default the names of the mock devices

#Create the screen capture


#Create the presenter capture
capture.device.H264Webcam.type=V4L2SRC
capture.device.H264Webcam.flavor=presenter/source
capture.device.H264Webcam.outputfile=Webcam.mpg
capture.device.H264Webcam.src=/dev/video0
#Create the audio capture
capture.device.sounddev.src=hw:0
capture.device.sounddev.outputfile=sounddev.mp2
capture.device.sounddev.flavor=presenter/source
capture.device.sounddev.buffer.bytes=536870912
capture.device.names=sounddev,H264Webcam
