Giter Club home page Giter Club logo

dive's Introduction

Dive

Introducing Dive! A new Flutter toolkit for video recording and streaming. A complete set of packages to build the next generation of Flutter media apps.

Introduction

Dive is a video recording and streaming toolkit built on top of Dart and Flutter with native extensions on macOS. It is a group of Flutter packages for building media apps. In the future, support for multiple platforms will be added.

dive - A Flutter package that provides video capabilities.

dive_ui - A Flutter package for Dive containing Widgets for building Flutter apps for video recording and streaming.

dive_obslib - A Flutter plugin package for Dive that provides low level access to obslib using FFI.

dive

The dive package is a Flutter package that provides basic services for video playback, camera devices, audio, and streaming. This package relies heavily on the dive_obslib package but remains platform indepenent.

dive_ui

The dive_ui package is a Flutter package containing Widgets to build video based Flutter apps. This package relies heavily on the dive package but remains platform indepenent.

This package contains many examples on using dive_ui widgets and dive classes. The examples use the macOS platform folder that contains a Podfile that references the obslib CocoaPods library.

dive_obslib

The dive_obslib package is a Flutter plugin that provides low level access to obslib. This package contains platform-specific implementations with native extensions for Android, iOS, and macOS.

dive_obslib is powered by obslib, a CocoaPods library built from the core of OBS Studio. It utilizes all of the underlying features of OBS Studio excluding the UI code. It includes inputs, sources, outputs, encoders, services, and more.

dive_obslib contains the DiveObsLibPlugin and the dive_obslib CocoaPods library. The dive_obslib pod has a dependency on the obslib CocoaPods library.

obslib CocoaPods library

The obslib CocoaPods library is a wrapper around the obslib Framework that can be consumed by the DiveApp macOS platform Podfile.

obslib Framework

The obslib framework (obslib-framework) is the core of OBS Studio, and is the non-UI code and resources compiled into a reusable framework. The framework is built by an Xcode project.

The framework folder contains an example macOS application that consumes the obslib framework without using CocoaPods and is used to test the framework.

Components of the obslib framework

  • header files
  • data files
  • libraries
  • plugins

Libraries:

  • libobs-opengl.so
  • libobsglad.0.dylib
  • libobs-frontend-api.dylib
  • libobs-scripting.dylib
  • libobs.0.dylib
  • libavformat.58.dylib
  • libpostproc.55.dylib
  • libavfilter.7.dylib
  • libjansson.4.dylib
  • libavcodec.58.dylib
  • libavutil.56.dylib
  • libswscale.5.dylib
  • libavdevice.58.dylib
  • libx264.160.dylib
  • libswresample.3.dylib
  • libmbedx509.2.16.5.dylib
  • libfreetype.6.dylib
  • libmbedx509.2.16.5.dylib
  • librnnoise.0.dylib
  • liblaujit-5.1.2.1.0.dylib
  • libmbedcrypto.2.16.5.dylib

Plugins:

  • mac-capture.so
  • obs-ffmpeg.so
  • linux-jack.so
  • obs-libfdk.so
  • obs-x264.so
  • obs-transitions.so
  • obs-filters.so
  • vlc-video.so
  • obs-browser.so
  • obs-outputs.so
  • mac-syphon.so
  • text-freetype2.so
  • mac-vth264.so
  • image-source.so
  • coreaudio-encoder.so
  • obs-vst.so
  • rtmp-services.so
  • mac-avcapture.so
  • mac-decklink.so

Dive Folder Structure

dive
 |-- apps
   |-- dive_app
 |-- packages
   |-- dive
   |-- dive_obslib
   |-- dive_ui

Concepts

Input Source

An input source is a camera, microphone, virtual camera, screen capture, or NDI source.

Sources

channel

output

Encoders

Services

VS Code Editor

The Dart line length has been changed from 80 (default) to 110, a much wider and more readable width. Most developers are using displays that can easily display wider rows of text, making code easier to read when a simple method is so long.

dive's People

Contributors

larryaasen avatar mend-bolt-for-github[bot] avatar

Watchers

 avatar

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.