Git Product home page Git Product logo

Comments (13)

game-stop avatar game-stop commented on August 23, 2024

adding this to veejay-server side

from veejay.

game-stop avatar game-stop commented on August 23, 2024

done

from veejay.

game-stop avatar game-stop commented on August 23, 2024

For bonus: this is UI logic only using VIMS_VIDEO_SET_FRAME. Somehow .. the user would probably want to save this after setting the positions for the perfect jumps

from veejay.

d-j-a-y avatar d-j-a-y commented on August 23, 2024

So awesome!
it's really a must have for performing! is'nt it ?

Next step; buffering the streams and have to same xperience in the stream buffer! :-0

from veejay.

game-stop avatar game-stop commented on August 23, 2024

Buffering the streams is an option; It will either take diskspace or RAM. What should be the default behaviour here ? Always buffer the stream ?

from veejay.

d-j-a-y avatar d-j-a-y commented on August 23, 2024

Buffering the streams is an option; It will either take diskspace or RAM. What should be the default behaviour here ? Always buffer the stream ?

I think,

  • disabled by default
  • command line option to enable
  • set framebuffer 'multiplicator' has VIMS_STREAM_SET_BUFFER_MULTIPLICATOR ?
  • ram or file (ssd should be quick enought?) has advanced option

from veejay.

game-stop avatar game-stop commented on August 23, 2024

I think a commandline switch is too much trouble for the user and having it disabled by default will have only veejay experts use it

how about:

reloaded: new spinbutton with label "Memory buffer size in frames" and a label that prints the timecode. Lets call this Q
reloaded: new switch "Play frames from memory"

The memory buffer would simply dump the frames to disk (SSD), uncompressed.

While the memory buffer is played back, each frame played is replaced for a new incoming frame, so the stream is always at most Q frames behind.

A sample can be used here too; each time Q frames are played, we can update the edit decision list and load the new video sequence. Then, we update the the start/end positions and we can keep doing this, while in the background, the stream is still beeing recorded. What do you think?
This option, would have a sample link with a tag

from veejay.

game-stop avatar game-stop commented on August 23, 2024

Record 50 frames from stream #4 and append it to sample 1
echo "228:4 50 0 1;" | sayVIMS

To summarize:
reloaded The sample panel has a new frame "Live feed buffer"
reloaded The sample panel has a spinbox with the label "Link to stream"
reloaded The sample panel has a spinbox with the label "Frames to buffer from stream" (Q)
reloaded The sample panel has a switch "Buffered stream playback"

When "buffered stream playback" is enabled, the offline recorder keeps recording video files of Q frames in length from stream "Link to stream" and appends them to the sample's edit decision list. Each time, the start and end positions of the sample are updated. When "buffered stream playback" is disabled, the offline recorder stops and the sample keeps looping based on current data.

plus:

  • can link to any stream playing
  • re-uses the recorder functionality
  • you can do trickplay and anything else, as it is now just another sample

to test:

  • when the buffered stream playback is enabled and trickplay is on default (speed 1, play forward), it should be just like watching a live feed with 10 seconds delay.

minus: When Q is set to 10 (250 frames @25fps)

  • For every 10 seconds a new video file is created and saved in the current working directory.
  • After a year, there will be 3.154.000.000 video files.

from veejay.

game-stop avatar game-stop commented on August 23, 2024

done

from veejay.

d-j-a-y avatar d-j-a-y commented on August 23, 2024

Interesting approach ;-)

But I think that the user experience needto be polished.

For me it's an ux error to be obliged to setup a sample to play with streams. This is revelant from coding logics, but not
from the user side.

ie: I'm playing a stream, I activate the buffer because I know that i will use it. From user logic I search for this feature directly in the stream's properties I'm playing.

Related task Maybe it's the time to create panels for the stream ? :

  • Record to disk
  • Transitions
  • Quick Jump controls (Buffered stream controls) <----- This panel could also be added to samples to parameters the jumps destination
  • Stream properties (camera control / generator parameters / ..)

from veejay.

game-stop avatar game-stop commented on August 23, 2024

True, but veejay carries this technical debt where libstream and libsample are two seperate entities. What actually needs to happen is that everything becomes a sample; Then this problem dissappears.

How would this work from a user point of view when this is activated in the stream properties ?
From a technical point of view; The stream would need to create (or select) an empty sample and then append the video recordings to it. While the stream is active, there is no trickplay possible. So, it has to switch to the newly created sample to play the buffers.

from veejay.

game-stop avatar game-stop commented on August 23, 2024

The related task you can create, that's fine with me!

from veejay.

d-j-a-y avatar d-j-a-y commented on August 23, 2024

From a technical point of view; The stream would need to create (or select) an empty sample and then append the video recordings to it. While the stream is active, there is no trickplay possible. So, it has to switch to the newly created sample to play the buffers.

When stream buffer is activated, 10 hidden samples linked to the stream are created and filled.
Could the be a kind of rollover in the name, to fill the 10 samples each Q.
When the user hit [1-9] a buffered sample is played. [0] and [F1 - F12] corresping to the stream live

In did, this logic could hurt veejay heart ....

from veejay.

Related Issues (20)

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.