Giter VIP home page Giter VIP logo

vingester's Introduction

Ingest Web Contents as Video Streams

About

Vingester (Video ingester) is a small Electron-based desktop application for use under Windows, macOS or Linux to run multiple Chromium-based Web browser instances and ingesting their rendered Web Contents as screen/window-captured or NDI-multicasted or FFmpeg-based video streams for further use in local or remote video mixing applications or for local recording.

Sneak Preview

Vingester Screenshot

Documentation

See the Vingester Guide for detailed documentation on Vingester.

Copyright & License

Copyright © 2021-2022 Dr. Ralf S. Engelschall
Licensed under GPL 3.0

vingester's People

Contributors

engelschall avatar rse 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  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  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

vingester's Issues

Feature Request: collapsing cards

Wonderful app! It's going to change my workflow starting tomorrow.

Is there any chance that the browser cards (perhaps there is a better term) could collapse to 4 lines, or even 1? I mocked something up to explain.

In production, I think being able to see more of these in the window would be great.

If no can, no worries.

Aloha.

vingester-collapsed-1

vingester-collapsed-4

Show display options UI in a modal box with larger icons

I think the new graphical display selection interface could benefit from a slight UI tweak.

Rather than squeezing the whole UI into a small area, I think an inline pop-up or dropdown modal box could be considered, mimicking what’s currently available in display arrangement settings on Mac.

The active selection as in 0, 1, 2, etc would appear how it was previously. Clicking on it would open up the graphical UI in a modal box with larger boxes, representing the connected displays with labels such as 0, 1, 2, etc.

NDI transparency issue

I cannot make transparency work with NDI (headless mode only). Page shows normal in Vmix as browser source:
image
image

But if I enable BOTH Frameless and Headless then NDI output has alpha (but its not the same, less color on the NDI):
image
image

Tried it on 3 latest versions, not sure if I'm doing something wrong or this is expected configuration for alpha to work on NDI?

Anyway this web page is very simplistic nothing special, background is set to rgba(0,0,0,0)

EDIT: Enabling GPU gets alpha to work on HEADLESS mode only, but still results are not the same
image
image

Interface issues: Dragging Windows and Fullscreen projection

Since the standard traffic lights are removed, I can’t find a way to move/drag windows in frameless mode. I’ve tried different key combinations and click zones to ensure that I am not missing something but I can’t seem to find it.

In addition to this, as I noted previously, even if I project a session onto a display via @+1,0 with the correct screen resolution set in Size, it doesn’t become a full screen due to menu bar. I have to manually go fullscreen.

Secondly, I have to put the resolution in Size twice as high due to a Retina display. For example, for a 1080p display, I have to put 4K resolution as the size.

I was wondering if these two are expected behaviours and/or a known limitations.

Multiple monitor issue

Hello @rse, I have the following monitor setup.

image

But I'm unable to properly position Vingester windows.

I used the following settings.

Screenshot 2021-04-13 at 12 16 36

The -1,0 parameter works, but the -2,0 doesn't (the window appears on the main monitor).

Projection to multiple displays identify displays incorrectly

I've just attached three and then four displays to a Displaylink Dock on my iMac.

In the three display configuration, the +2,0 is not working as it also pushes to the +3,0 so the second display remains empty. Similarly, in four display configuration, +1,0 to display 2, +2,0 goes to display 3, +3,0 goes to display 4, and +4,0 goes to display 4.

Also, if the position fields are empty as in blank, the display projection doesn't work. It has to be set to 0, which makes sense but I think it also makes sense to set it 0 after the user deletes a previously set value.

Finally, is there a particular reason for rendering in 60fps? As I plan to use Vingester for OBS Ninja streams, which will be 30fps anyway, it seems that 30fps would suffice.

image

Allow right-click inside input fields

Currently the right-click context menu is disabled inside text fields.

I'd like to be able to paste URLs purely with the mouse (right click, paste) which would cater to keyboard-less operation

RTMP & UDP mode see to have 1 sec AV-Sync issue with Audio ahead

Hi,
Thanks for the great app. Super useful!
I'm using FFMPEG sink to output to MPEG-TS. Arguments given are udp://127.0.0.1:5001
Then as a test, I'm pulling it into ffmpeg in a terminal with: ffmpeg -i udp://127.0.0.1:5001 -vcodec copy -f flv "C:\Users\Streaming\Desktop\aplay.flv"
I see that the audio is ahead by about a second in the resulting flv. Similar issues persists even when output is mp4 or if sink is set to rtmp.
CPU usage is 50-60%. Frameless mode does not show this av sync issue.
Any clue what I'm doing wrong.

As an aside, many times I'm only interested in pulling the audio from a url, and I plan to run Vingester in a headless server in the cloud. Is there any way to not render the video in Vingester & therefore save on CPU usage?

Video and audio output selection within the app

Hi,

Thank you for this beautifully crafted application. I've been helping a friend remotely in setting his live stream setup and this application has become quite useful in bringing guess. However, unlike many people, we don't use OBS Ninja via OBS or NDI input via another software so this application's NDI output, as well as window capture aspect, don't apply to us so what I am about to say should kindly be considered in this context.

We use ATEM Mini Pro to bring in the guess via upstream key and use OBS for graphics only. I was wondering if it is possible to add a video output option where I could choose a connected external display onto which I can project OBS Ninja output as a fullscreen image. I don't know the exact terminology for this feature but I sometimes use QLAB and it has this projection feature where you choose the display and it projects contents onto it without the user having to move the actual window to the display and make it fullscreen.

I think this could be useful in our case, not least because if for whatever reasons we have to close the stream and restart again, we can quickly re-project the stream again onto the same display rather than trying to find the display in the ATEM Mini screen and then try to make it fullscreen.

Similarly, if it is again possible, an audio output option could be quite useful. We also bring in guest audio into ATEM via HDMI. Currently, we use Sound Source to redirect the audio, which works fine and also remembers your choice. However, as it redirects all audio coming through via Vingester, it is not possible to choose different audio outputs for multiple guests. We currently have only one instance of OBS Ninja running so this is not an issue at the moment but in the case of multiple guests, this could be a problem.

Thank you again. Much appreciated.

Low framerate and cracking audio with 1080p NDI Output (headless mode)

Hello, I'm testing Vingester because I intensively use obs.ninja in my workflow. Until today, to achieve the same result, I've been using various Google Chrome instances, open in fullscreen on various external displays connected to my Macs.

Regarding the NDI Output (headless mode) of Vingester, I found out that I cannot achieve more da 18 fps. I have a MacBook Pro (16-inch, 2019) 2,4 GHz 8-Core Intel Core i9. Is that normal?

Other than that, the audio is cracking and, only in headless mode, the preview window is not working.

Screenshot 2021-04-06 at 08 29 07

Frameless window size on a second display

When using second display for frameless fullscreen output vingester creates 1536x834 window on a fullhd (1920x1080) display.
Same issue when I used Blackmagic ATEM switcher as a second display.
Vingester version: 2.2.4
OS: Windows 10 Pro x86_64 21H1
Intel HD Graphics 4600 (driver version 20.19.15.5171)
Nvidia GeForce GTX 860M (driver version 27.21.14.6663)

P.S. On a Fedora 34 dual display setup works as expected.

Screenshot:

image

Vingester performance (vs Google Chrome)

Hello @rse. I just discovered Vingester uses much more CPU than Google Chrome.

Screenshot 2021-04-11 at 16 36 11

Screenshot 2021-04-11 at 16 39 29

During my tests, I also noted that the YouTube UI is smaller on Vingester than on Chrome. And, in Vingester, YouTube videos play with 480p resolution by default. Could that be something related to Retina displays resolution?

win64-build: Uncaught Error: Cannot find module 'execa'

Win64-build of version 2.2.2 gives me an uncaught exception not finding the module execa. Version 2.2.1 is fine. Frameless mode seems to work, but NDI source is not showing up.

[2021-06-03 23:51:54.341] [error] (main) browser/worker-4993D7EC: console: Uncaught Error: Cannot find module 'execa' Require stack: - C:\Users\....\AppData\Local\Temp\1tQwJX4ZtuAgbYjnTXqGQrBSm9Q\resources\app.asar\vingester-ffmpeg.js - C:\Users\...\AppData\Local\Temp\1tQwJX4ZtuAgbYjnTXqGQrBSm9Q\resources\app.asar\vingester-browser-worker.html

Live graphics simple integration (for test)

Hi! I'm looking at ways to use vingester and have created a little experiment.

There was an adobe program called edge animate, it consists of an html animator using javascript through a graphical interface.

it is possible to generate an html page calling videos and with trigger, in the following example I made a video using after effects and rendered it in webm, with alpha channel 4444, vp8 codec,

by pressing the letter "A" on the keyboard the animation starts.

I'm working on small apps like these for intro, and animated lettering for use with vingester.

that way any design will be able to create layouts for their audio visual productions.
experiment.zip

Any chance to capture audio from each Vingester window?

Hello @rse. As I mentioned, my current workflow is based on multiple Chrome instances, each connected to a different participant in my show. Vingester might be a viable alternative, but I think it's missing one key feature: the ability to manage the incoming audio from the various windows as independent streams. With my current workflow, I can use Audio Hijack to capture each Chrome instance's audio (see screenshot). How could I do the same with Vingester?

Screenshot 2021-04-09 at 07 59 26

Feature Request: no audio

Hi again.

It's such a great app, but I need to bring in some feeds without audio landing in my default device (or my mixer.)

Could that be an option in the audio device dropdown?

Much aloha, and if no can, no worries!

Video-Stream Recording Functionality

Some users think it would be useful to have a video-stream recording functionality directly within Vingester. Although this is possible (perhaps with an FFmpeg sub-process per browser) it raises three issues:

  1. Vingester is just for ingesting the video-streams and recording and mixing tasks are the task of subsequent tools like OBS Studio, vMix, etc.
  2. Recording means encoding and this additionally reduces the performance of Vingester.
  3. Tools like Livemind Recorder already solve the issue of recording NDI streams very well.

So, I'm not sure whether it is advised to add a recording functionality directly to Vingester.

Ffmpeg RTMP output

Hello, congratulations on the incredible project, it would be great if there was a direct output from it to rtmp without the need to use obs Studio for example.

@discordjs/opus version mismatch on linux

Vingester 2.2.5 for linux
OS: Fedora 34 x86_64, kernel 5.12.9-300, GPU Nvidia GeForce GT 755M, Gnome 40.1.0, Wayland 1.19.0, nouveau 1.0.17

While running frameless output with preview enabled - preview shows nothing on a linux Vingester version.
Same source with same settings on Windows version - works fine.
Screenshot:

image

Window size issue

Hello @rse, I just discovered that Vingester has some issues in correctly sizing its browser windows. My main monitor is the internal retina display of my MacBook Pro, and I have two external 1080p monitors. When I set Vingester to display a 1920x1080 pixel browser window on monitor "-1,0", the size of the resulting window is a quarter of the monitor size.

Screenshot 2021-04-13 at 12 16 07 (3)

Screenshot 2021-04-13 at 12 16 36

FFmpeg - output question and sugestion

hello again, could indicate the encoding of the ffmpeg that is using in the output -flv, I am trying to transmit to youtube without success I believe it is the format of the upload because on an rtmp server it works very well.

and I would like to say that this is a success here in Brazil.
=)

Syphon output

I was wondering if it is possible to have Syphon output from a browser source.

I want for example take an instance from Singular Live and turn it into a Syphon output with transparency. I know that NDI can also work for this purpose but for some reasons I find NDI to be resource hungry compared to Syphon.

I'm having issues receiving more than one source

I'm using a strong gaming laptop for vingestor. I'm receiving in VMIX via NDI on my tower.
I'm using the sample config and only changing the relevant information for my session.

I launch P01 and it comes in. It has the indicator with the "2" Indicating there are two connections.
(this connection is from a Macbook pro via chrome).

I launch P02 and it does not come in. Indicator says there are "0" connections. (This connection was attempted thru a browser on my iPhone).
Then I tried connecting to P02 first and I received it. (using iPhone).
I then started P01 and there was no connection. (Using Macbook Pro as the source)

Thank you for your help.

StreamBeans Main Test Room.zip

Unable to update

Response code 521, origin down from the app when trying to update to 2.4.0 from 2.3.2 within the app itself.

Singular graphics outputs behaving strangely.

Not sure if you're familiar with Singular.live, but we're using multiple channels of Singular graphics in vMix for some live productions. Hoping to move the browser source load to a different machine on the same network.

It seems that the NDI sources generated by Vingester when loading a Singular output URL do not have a transparent background for some reason, and also load at 1848x1040 even when set to 1920x1080 in the interface.

Let me know what other information I can provide, thank you!!

Issues with OBS window capture on Windows Server 2019

Hi,

Around april I used Vingester for an online play and noticed that I couldn't upgrade to any version greater than 1.7 or OBS would not recognize the Vingester window on the window capture source. I thought this was related to Windows Server 2019, as I was using a VM for streaming, and didn't investigate further. Kept Vingester on 1.7 and produced the play, everything went smoothly.

Now I'm producing another play and set up the same structure I used before, a VM on Google Cloud with Windows Server 2019 plus a GPU. I downloaded the latest version of Vingester to test and got the same issue as before, the Vingester was not 'captured' by Window Capture (the Vingester window appears on the dropdown, but it seems like it's transparent, only the cursor shows). I tested the electron capture app and got the same issue. Then I noticed it might be related to Chromium, because OBS was not capturing my Chrome browser as well. I've made it work by disabling hardware acceleration on the Chrome browser, with hardware accel disabled OBS started to capture the Chrome window.

So… I would like to use the latest version of Vingester for this play and was wondering if Chromium hardware acceleration might be the issue, and if it could be disabled on Vingester. I've tested with Vingester's GPU Accel ON/OFF to no avail.

Donation or support

Hello, this is awesome!!
I was looking for tool that can apply customized-CSS to browser source for vMix(vMix does not support custom CSS).
This is perfect tool for my purpose, thanks a lot!

I am willing to support/donate this project because I think I will use this to our broadcast.
Is there any donation page or something?

Thank you!

Vingester 2.6 and 2.6.1 NDI issue

Vingester ver. 2.6 and 2.6.1 on Windows 10 x86_64 - missing NDI output and preview, vingester-browser-preload.js load errors in a console (please see a screenshot below).
Vingester 2.5 works as expected.

image

Add auto-start and start-minimized to shortcut launch parameters

Would it be possible to add auto-start and start-minimized to the shortcut parameters? feels like another thing that can be automated when setting up for a large show, I am going to be using ~4 instances of vingester doing 3 vdon captures each (optimizing per the user guide for N/3 captures per vingester instance) and being able to launch the shortcuts and have them start automatically and be already minimized would be really awesome!

How to use the new feature of recording (using ffmpeg) in mpegts format?

I am running the last version of Vingester (1.9.1. from 2021-05-04) in an ubuntu 18.04 machine (with xmonad as window manager).

Vingester is working fine as far as watching the streamings, but I am not able to record anything in any format (neither matroska, flv, etc.). I am particularly interested in the case of getting an mpegts file with the live streaming. I have selected what seems reasonable to me in the dialog but no file appears in ~/Videos

You can see this dialog screenshot with my choices (but I have tried a lot of combinations, not just this one).

Could someone tell what I am doing wrong to get an mpegts file which records the streaming? Is there some verbose way to see why no file appears in my ~/Videos folder?

NDI UYVY support

Hello,

Some NDI receiver doesn't support alpha channel, would it be possible to support NDI FourCC

NDIlib_FourCC_video_type_UYVY

thanks,

Pierre

Grouping browser enteries and assigning custom colours

I think to be able to separate OBS.ninja links into multiple groups with custom labels and colours would be a nice option, especially for multisession events where guests don't connect at the same time but only join in when it is their turn in the running order.

If this is a sensible feature request, I think it also makes sense to make entries draggable to move them around easily. And finally, to be able to toggle sources and sort them automatically by their toggle status. This would, for example, make the inactive ones faded and move them to the bottom.

Headless NDI output resolution

Headless NDI output creates a NDI stream with wrong resolution when frameless output is disabled (please see screenshots with a Vingester main window and NDI monitor).
When frameless output is enabled - NDI output resolution is OK.
Vingester version: 2.2.6
OS: Windows 10 Pro x86_64 21H1

image

image

Simple instagram integration streaming

Hello, again the project is getting bigger every day!

well i was looking for a simple streaming solution for instagram and i found this i made two modifications in FFmpeg is able to play video files in instagram as live.

the other modification was to strip the file stream to generate stream mode and be able to capture a stream to instagram via node.js

it still doesn't have an interface, an integration may be interesting. Thanks

https://github.com/ErAz7/stream-live-to-instagram <<<< ORIGINAL REPO

Little study of case:

Stream a file config.

ffmpeg -re -i "${videoPath}" -c:a aac -c:v libx264 -vf "scale=w=720:h=450:force_original_aspect_ratio=1,pad=720:1280:(ow-iw)/2:(oh-ih)/2" -f flv "rtmps://live-upload.instagram.com:443/rtmp/${stream_key}",
() => killProcess(ffmpegProcess.pid) )

Stream rtmp to instagram Frame ok config.
ffmpeg -re -i "rtmp://188.166.126.51/live/tvcrio" -c:a aac -c:v libx264 -vf "scale=w=720:h=450:force_original_aspect_ratio=1,pad=720:1280:(ow-iw)/2:(oh-ih)/2" -f flv "rtmps://live-upload.instagram.com:443/rtmp/${stream_key}",
`() => killProcess(ffmpegProcess.pid)
)'

Feature Request: Interaction with headless browser

It would be awesome to allow interaction with the headless browser. I'd be happy with some console access, like in the developer consoles of various browsers, so type some js and fire/change stuff.

Other options could be to allow remote debug access with a chrome instance or at least load some custom js, too.

I could use this eg. to automate logins for pages that dont need other interaction and dismiss the overhead of the screen browser or some custom macros.

Fails when using a Google Doc URL sources

The browser window will show up, survive a few seconds and then close and the NDI feed ends.
Every time I “Start” I get a request to allow incoming connections. If I turn off the firewall, the message does not appear, but the NDI feed is still not stable.

Here is a test URL.
https://docs.google.com/document/d/16aRNFAzKUoAYdkZ2zWMEPE6ud4wTicDNY1IuDHoMyfo/edit?usp=sharing

Vingester version 1.6.0 (it happened with the previous version as well.
MacOS 10.14.6

It works fine for www.google.com.

Vingester instance with custom profile duplicates browser outputs on global START

Tested on Win 10 , Vingester 2.2.6 and 2.2.9

Vingester with custom profile started from shortcut running comand like
C:\Users\Vlad\Desktop\Vingester.exe --tag=TEST --profile=C:\WORK\TEST --config=C:\WORK\TEST\scenes.yaml

After click on GLOBAL START button all browser outputs started twice.
You can see this issue on a screencast

Vingecter with common profile started directly from exe file - works as expected.

Config imported from file

%YAML 1.2
##
##  Vingester Configuration
##  Version: Vingester 2.2.6
##  Date:    2021-06-27 18:35
##

---

-   BrowserTitle:                  "The-Expert-1"
    BrowserInfo:                   "The Expert: 7 Red Lines (Original Sketch)"
    BrowserWidth:                  864
    BrowserHeight:                 480
    BrowserColor:                  "transparent"
    BrowserZoom:                   1
    BrowserTrust:                  false
    BrowserNodeAPI:                false
    BrowserOBSDOM:                 false
    BrowserPersist:                false
    InputURL:                      "https://www.youtube.com/embed/BKorP55Aqvg?autoplay=1&controls=0&rel=0"
    PatchDelay:                    0
    PatchFrame:                    ""
    PatchStyleType:                "inline"
    PatchStyleCode:                ""
    PatchScriptType:               "inline"
    PatchScriptCode:               ""
    Output1Enabled:                true
    Output1VideoPositionX:         0
    Output1VideoPositionY:         0
    Output1VideoDisplay:           1
    Output1VideoPinTop:            false
    Output1AudioDevice:            ""
    Output2Enabled:                false
    Output2VideoFrameRate:         24
    Output2VideoAdaptive:          false
    Output2VideoDelay:             0
    Output2AudioSampleRate:        48000
    Output2AudioChannels:          2
    Output2AudioDelay:             0
    Output2SinkNDIEnabled:         true
    Output2SinkFFmpegEnabled:      false
    Output2SinkFFmpegMode:         "vbr"
    Output2SinkFFmpegFormat:       "matroska"
    Output2SinkFFmpegOptions:      "the-expert-1.mkv"
    PreviewEnabled:                false
    ConsoleEnabled:                false
    DevToolsEnabled:               false
    Collapsed:                     false

-   BrowserTitle:                  "The-Expert-3"
    BrowserInfo:                   "The Expert: Wrong Angle (Square Project Episode 1)"
    BrowserWidth:                  854
    BrowserHeight:                 480
    BrowserColor:                  "transparent"
    BrowserZoom:                   1
    BrowserTrust:                  false
    BrowserNodeAPI:                false
    BrowserOBSDOM:                 false
    BrowserPersist:                false
    InputURL:                      "https://www.youtube.com/embed/mokllJ_Sz_g?autoplay=1&controls=0&rel=0"
    PatchDelay:                    0
    PatchFrame:                    ""
    PatchStyleType:                "inline"
    PatchStyleCode:                ""
    PatchScriptType:               "inline"
    PatchScriptCode:               ""
    Output1Enabled:                true
    Output1VideoPositionX:         855
    Output1VideoPositionY:         0
    Output1VideoDisplay:           1
    Output1VideoPinTop:            false
    Output1AudioDevice:            ""
    Output2Enabled:                false
    Output2VideoFrameRate:         24
    Output2VideoAdaptive:          false
    Output2VideoDelay:             0
    Output2AudioSampleRate:        48000
    Output2AudioChannels:          2
    Output2AudioDelay:             0
    Output2SinkNDIEnabled:         true
    Output2SinkFFmpegEnabled:      false
    Output2SinkFFmpegMode:         "vbr"
    Output2SinkFFmpegFormat:       "matroska"
    Output2SinkFFmpegOptions:      "the-expert-3.mkv"
    PreviewEnabled:                false
    ConsoleEnabled:                false
    DevToolsEnabled:               false
    Collapsed:                     false

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.