Giter VIP home page Giter VIP logo

galicaster's People

Contributors

alfro avatar andiempettjisc avatar corne-oosthuizen avatar dpeite avatar hcaloto avatar jamesuom avatar kristofkeppens avatar miesgre avatar oaubert avatar omueller54 avatar pepeportela avatar pnieto avatar ppettit avatar rbolrey avatar rubenrua avatar samuvlad avatar sebastjanm avatar svnset avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

galicaster's Issues

Cannot exec operation when not write permission on current directory.

Traceback:

Traceback (most recent call last):
  File "rr.py", line 10, in <module>
    serializer.save_in_zip(mp, location, None)
  File "/usr/share/galicaster/galicaster/mediapackage/serializer.py", line 102, in save_system_zip
    m = open(tmp_file,'w')
IOError: [Errno 13] Permission denied: 'manifest.xml'

The temp file in save_system_zip should create in a temp directory.

def save_system_zip(mp, loc, use_namespace=True):

    tmp_file = 'manifest.xml'
    m = open(tmp_file,'w')
    m.write(set_manifest(mp, use_namespace))
    m.close()

Ingestion before video file is completed

I'm using the following test profile to record my webcam and
audiotest and encode them as mp4 and aac.

[data]
name = MyEncode

[track1]
name = WebCam
caps = image/jpeg,framerate=24/1,width=1280,height=720
active = True
location = /dev/video0
file = camera.mp4
device = v4l2
flavor = presenter
videoencoder = videorate ! videoscale add-borders=true ! video/x-raw-yuv,width=320,height=240,framerate=10/1 ! x264enc bitrate=1200 pass=5 quantizer=22
muxer = mp4mux faststart=true

[track2]
amplification = 1.0
name = Noise
vumeter = True
pattern = pink-noise
audioencoder = faac outputformat=1 bitrate=128000
volume = 0.3
player = True
frequency = 440
location = default
file = sound.aac
device = audiotest
flavor = presenter
active = True

The issue I'm seeing it that the zip file ingested by MH contains a truncated version of the camera.mp4 file. If I use faststart the file is actual 0bytes in length, if I don't then it is is a few kbytes shorter. It appears as though galicaster is not waiting for the gstreamer to finish writing the file before zipping and uploading it to MH. MH is then failing at the inspection operation.

Using faststart=true requires the muxer needs to know the size of video track so it can write the headers out first, it does not write anything to the camera.mp4 file until the recording has completed (it does write data to /tmp/qtmux####). This means that if the recording fails you will not have anything on disk to try to salvage (it may not be possible to read the track without a header anyway).

I report this on list with RC2 but still appears to be in 1.3 release

galicaster.recorder.utils.Switcher does not set device in NULL state

When you plug and unplug the VGA signal, you can see in the stderr:

(run_galicaster.py:7953): GStreamer-CRITICAL **: 
Trying to dispose element device, but it is in PAUSED instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

Galicaster does not work with my fireware card

My firewire card is:

06:01.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev 46) (prog-if 10 [OHCI])
Subsystem: Allied Telesis, Inc IEEE 1394 4port DCST 1394-3+1B
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32 (8000ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at fb300000 (32-bit, non-prefetchable) [size=2K]
Region 1: I/O ports at d000 [size=128]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2+ AuxCurrent=0mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: firewire_ohci
Kernel modules: firewire-ohci

Using GStreamer the card works out.

gst-launch-0.10 -m --gst-debug=2 \
\(\( dv1394src ! queue ! dvdemux name=demux ! \
level message=true interval=100000000 ! volume ! alsasink sync=false \
demux. ! queue ! ffdec_dvvideo ! ffmpegcolorspace ! \
xvimagesink  qos=false async=false sync=false \)\)

You can reproduce the bug using https://gist.github.com/dde3276a341494b75115

Mediapackage Id not set correctly in galicaster

Mediapackage Id not set correctly in galicaster

1.- Program a new episode in matterhorn
2.- Galicaster records that episode
Galicaster greates a new folder named gc_{agentname}_{workflowid}

Check that galicaster is using the workflow id for folder names... In
that folfer the manifest.xml
is something like this:

....

Galicaster is putting in the mediapackage ID thw workflowId and not the
mediapackageId that must be something like
2c32c4d5-7216-4ea3-9749-5820d1edde3a

The same happen in episode.xml

Profile load Economy mode

Let Galicaster run 24/7, but only activate it's access to the devices on demand ("button to activate") or during recordings?

Review Media Manager refreshing and Repository access through MP or identifier

The Media Manager is completely reloaded in some situations. This provokes a slow access to the Media Manager when the data is accessed through shared storage.

Also, when a reference to a Mediapackage object is stored - in operations for instance - there could be inconsistencies. Before data is modified the object should be reloaded.

Consequently, storing the MP could be a bad practice, better storing the identifier only.

Datatime not in format DublinCore

An undocumented bug that has been resolved on 1.2.2.
Serializing datetime metadata using toString instead of isoformat cause this bug. This could provoke a fail on ingest if the MH core doesn't have a previous episode made on schedule.

SMIL-based mark system

This feature will provide a marking system that could be used to point important moments or intervals in a recording.
Marks can be used by users to define trimming or edition position. Also, operations can create mark sequences regarding slides changes, trimming point, audio silence etc.

MP Trash: 2 levels on the Media Manager

Recordings can be hidden into a second level. Once there they can be deleted on a single operation.
This feature is specially useful on studio environments where multiple takes are made of a single recording and only one will be used.

Catalog duplicated on manifest removing series

Setting "No series" to a MediaPackage with an assigned series cause a duplication of the episode.xml catalog.

The bug is probably caused by a miscall of the funciont addDublincoreAsString from mediapackage.mediapackage.py

Export to mounted devices

This operation will export a Mediapackage to a given mounted position: a NAS or NTFS folder, a mounted USB device, a shared.

Paths will support templates.

Add a variable to know the recording folder

I am using a mp4mux as a muxer in Galicaster, but I want to pass the parameter 'moov-recovery-file'

Example: mp4mux moov-recovery-file=${galicaster-working-folder}/file.mrf

But I Galicaster does not recognise ${galicaster-working-folder}.
¿Maybe you can add an aux.replace('${galicaster-working-folder}', self.options['path']) or something similar to the bins?

If I use a mp4mux, the moov file is written at the end of the file. If Galicaster breaks while is recording, I can not play the video recorded, so I need to create a moov recovery file in case Galicaster breaks.

Replace Scrolled Window for Frame with Buttons

Due to a bug in GTK, dialogs with scroll bars fail to be modal. Therefore, Scrolledwindow widgets should be replaced for Frames and create the scroll effect with buttons.

Alternativaly, other scrollbars can be installed.

Epiphan devices send too much buffers to the record branch

When using Epiphan devices with the newer drivers, quite often tracks got a duration longer than expected. The behaviour is simillar to non-live sources which provides buffers continously instead of send them synced with the clock.

Preview is shown on external

Using Blackmagic cards but not exclusivelly, sometimes the preview area is shown in an external video area.
The problem is caused by a desynchronization between GUI creation and device capturing.

Bug if a recording is bigger than 24 hours

Traceback (most recent call last):
  File "/opt/Galicaster/galicaster/classui/playerui.py", line 218, in on_seek
    self.statusbar.SetTimer2(value,self.duration)
  File "/opt/Galicaster/galicaster/classui/statusbar.py", line 69, in SetTimer2
    self.timer.set_text(self.time_readable2(value,duration))
  File "/opt/Galicaster/galicaster/classui/statusbar.py", line 111, in time_readable2
    t1=self.time_readable(s1)
  File "/opt/Galicaster/galicaster/classui/statusbar.py", line 105, in time_readable
    dur = datetime.time(int(iso/3600),(iso%3600)/60,iso%60)
ValueError: hour must be in 0..23

Login through Matterhorn

Once activated Galicaster is only accessible by registered users on the Matterhorn LDAP. Parameters could be fetched and included on the Mediapackage.

Refactor worker-operation system

This refactorization will provide:

  • Preserved queues. both immediate and nightly.
  • Hability to cancel or execute pending operations
  • Customazible operations, including the possibility of having multiple operations of the same typ
  • Modularity to develop new operations
  • Big parametrization allowing UI interactivity to define values.
  • Means to track operations parameters and status (spent time, log)

Configurable Side-by-side layout

Multiple paramaters will be accessible to create a highly customized layout including: branding, margin, scaling, cropping, positioning ...

In combination with the customizable operations, multiple predefined composition can be set on the same application.

Fullscreen video in Media Manager

It would be nice if one could click one of the video areas in Media Manager and look that video fullscreen. Second click would return to the normal side-by-side playback screen.

Galicaster fails to start if a file is missing from the repository

If any file is deleted from the repository (either intentionally or unintentionally) from outside Galicaster, then Galicaster fails to start, printing an exception similar to the following:

Traceback (most recent call last):
  File "./run_galicaster.py", line 43, in <module>
    sys.exit(main(sys.argv)) 
  File "./run_galicaster.py", line 34, in main
    gc = core.Main()
  File "/home/sinho/workspace/local/Galicaster_orig/galicaster/core/core.py", line 48, in __init__
    self.load_modules()
  File "/home/sinho/workspace/local/Galicaster_orig/galicaster/core/core.py", line 70, in load_modules
    self.listing  = ListingClassUI()
  File "/home/sinho/workspace/local/Galicaster_orig/galicaster/classui/listing.py", line 67, in __init__
    self.populate_treeview(self.repository.list().values())
  File "/home/sinho/workspace/local/Galicaster_orig/galicaster/classui/listing.py", line 105, in populate_treeview
    self.insert_data_in_list(self.lista, mp)
  File "/home/sinho/workspace/local/Galicaster_orig/galicaster/classui/listing.py", line 91, in insert_data_in_list
    long(mp.getSize()),
  File "/home/sinho/workspace/local/Galicaster_orig/galicaster/mediapackage/mediapackage.py", line 651, in getSize
    size += path.getsize(f.uri)
  File "/usr/lib/python2.7/genericpath.py", line 49, in getsize
    return os.stat(filename).st_size
OSError: [Errno 2] Non hai tal ficheiro ou directorio: '/home/sinho/Repository/gc_GCminho_20130318T11h05m42/SCREEN.mp4'

Scheduled events does not work

Scheduled events are not working in my installation.
We use a MH 1.3 and we have the legacy = True in [basic] configuration

The calendar.ical file is empty
$cat Repository/attach/calendar.ical
BEGIN:VCALENDAR
PRODID:Opencast Matterhorn Calendar File 0.5
VERSION:2.0
CALSCALE:GREGORIAN
END:VCALENDAR

Configure delay of Automatic Ingest by a random length of time

The scenario is a large number of capture agents recording scheduled lectures which all start and finish at the same time. If ingest is set to immediate all the capture agents try to push their files to the ingest server at the same time, resulting in an overloaded server. Yes, load balancing and retrying can mitigate this to some extent but rather than periodically hammering the ingest servers and network, ingest on each capture agent should be configured to occur and some random time in a given duration. eg all capture agent start to ingest in a 15 minute window after the end of a lecture.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.