-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6118aa4
commit e3f6899
Showing
23 changed files
with
1,657 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# ![Bus Icon](src/main/web/icon.png "Cambr Icon")cambr | ||
|
||
A cross-platform, JavaFX based webcam to MJPEG streamer. | ||
|
||
![Screenshot](src/main/web/screenshot.png "Screenshot") | ||
|
||
This application was written to provide a way to use a cheap webcam with [Animaze](https://www.animaze.us/) on Linux (with Proton), making use of it's new "IP Camera" feature. | ||
|
||
Cambr simply converts your webcams output into an MJEPG stream. | ||
|
||
While it is possible to achieve the same thing with other technologies available on Linux (e.g. GStreamer, VLC), these all involve complicated command line options. | ||
|
||
Cambr makes use of [webcam-capture](https://github.com/sarxos/webcam-capture) for device support. | ||
|
||
## Installation | ||
|
||
Installers are provided for Linux, Windows and Mac OS. Download and run the GUI installers appropriate for your desktop. | ||
|
||
* [Linux Installer](https://github.com/bithatch/cambr/releases/download/1.0.0/cambr_unix_1_0_0.sh) | ||
* [Mac OS Installer](https://github.com/bithatch/cambr/releases/download/1.0.0/cambr_macos_1_0_0.dmg) | ||
* [Windows Installer](https://github.com/bithatch/cambr/releases/download/1.0.0/cambr_windows-x64_1_0_0.exe) | ||
|
||
### Run From Source | ||
|
||
To run from source, you will need at least version *3.8.3* of [Apache Maven](https://maven.apache.org/) and a Java 17 development kit. I recommended downloading from [Adoptium](https://adoptium.net/). | ||
|
||
Simply run the following from the directory you clone to. | ||
|
||
``` | ||
mvn javafx:run | ||
``` | ||
|
||
## Usage | ||
|
||
Start the app, select a device and click *Stream*. Then point a browser to http://localhost:8080 and you should see your webcams output. | ||
|
||
* Select the *Server* tab to change the port number, or to make the stream available on non-localhost address. | ||
* Select the *Camera* tab to flip the camera input in either direction, or to monitor the output. | ||
|
||
### Advanced | ||
|
||
If you wish to make your stream available on the Internet, make sure you turn *Local Only* OFF, and set up a *Port Forward* from your router to your computers LAN address on the configured port. How to do this will vary greatly depending on your router, so consult it's documentation for more information. | ||
|
||
|
||
## Changes | ||
|
||
### 1.0.0 | ||
|
||
* Initial release | ||
|
||
## Development | ||
|
||
Find the source and submit pull requests at the GitHub project page, you know the drill. | ||
|
||
## License | ||
|
||
cambr is made available under [GPL version 3](https://www.gnu.org/licenses/gpl-3.0.en.html). Other components under their respective licenses. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,296 @@ | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<groupId>uk.co.bithatch</groupId> | ||
<artifactId>cambr</artifactId> | ||
<version>1.0.0</version> | ||
<name>Simple Webcam Streamer</name> | ||
<properties> | ||
<maven.compiler.target>17</maven.compiler.target> | ||
<maven.compiler.source>17</maven.compiler.source> | ||
<javafx.version>17.0.2-ea+1</javafx.version> | ||
<main.class>uk.co.bithatch.cambr.Cambr</main.class> | ||
<attach.extended.version>4.0.12</attach.extended.version> | ||
<attach.extended.classifier>desktop</attach.extended.classifier> | ||
<javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version> | ||
<gluonfx.maven.plugin.version>1.0.9</gluonfx.maven.plugin.version> | ||
<install4j.home>NOT_CONFIGURED</install4j.home> | ||
<install4j.winKeystorePassword>NOT_CONFIGURED</install4j.winKeystorePassword> | ||
<install4j.macKeystorePassword>NOT_CONFIGURED</install4j.macKeystorePassword> | ||
</properties> | ||
<dependencies> | ||
<dependency> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-fxml</artifactId> | ||
<version>${javafx.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-swing</artifactId> | ||
<version>${javafx.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.miglayout</groupId> | ||
<artifactId>miglayout-javafx</artifactId> | ||
<version>11.0</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.kordamp.ikonli</groupId> | ||
<artifactId>ikonli-javafx</artifactId> | ||
<version>12.0.0</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.kordamp.ikonli</groupId> | ||
<artifactId>ikonli-boxicons-pack</artifactId> | ||
<version>12.0.0</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.github.sarxos</groupId> | ||
<artifactId>webcam-capture</artifactId> | ||
<version>0.3.12</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.activej</groupId> | ||
<artifactId>activej-http</artifactId> | ||
<version>5.0</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.activej</groupId> | ||
<artifactId>activej-promise</artifactId> | ||
<version>5.0</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.activej</groupId> | ||
<artifactId>activej-inject</artifactId> | ||
<version>5.0</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.activej</groupId> | ||
<artifactId>activej-launchers-http</artifactId> | ||
<version>5.0</version> | ||
</dependency> | ||
|
||
</dependencies> | ||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.8.1</version> | ||
</plugin> | ||
|
||
<plugin> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-maven-plugin</artifactId> | ||
<version>${javafx.maven.plugin.version}</version> | ||
<configuration> | ||
<mainClass>${main.class}</mainClass> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.codehaus.mojo</groupId> | ||
<artifactId>properties-maven-plugin</artifactId> | ||
<version>1.0.0</version> | ||
<executions> | ||
<execution> | ||
<phase>initialize</phase> | ||
<goals> | ||
<goal>read-project-properties</goal> | ||
</goals> | ||
<configuration> | ||
<quiet>true</quiet> | ||
<files> | ||
<file>${basedir}/bithatch.build.properties</file> | ||
<file>${user.home}/.bithatch.build.properties</file> | ||
</files> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-dependency-plugin</artifactId> | ||
<configuration> | ||
<outputDirectory>${project.build.directory}/dependencies</outputDirectory> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<id>copy-dependencies</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>copy-dependencies</goal> | ||
</goals> | ||
<configuration> | ||
<overWriteReleases>false</overWriteReleases> | ||
<overWriteSnapshots>false</overWriteSnapshots> | ||
<overWriteIfNewer>true</overWriteIfNewer> | ||
<excludeClassifiers>linux,mac,win</excludeClassifiers> | ||
</configuration> | ||
</execution> | ||
<execution> | ||
<id>copy-javafx-win</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>copy</goal> | ||
</goals> | ||
<configuration> | ||
<outputDirectory>${project.build.directory}/dependencies/win</outputDirectory> | ||
<artifactItems> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-base</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>win</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-controls</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>win</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-graphics</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>win</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-swing</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>win</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-fxml</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>win</classifier> | ||
</artifactItem> | ||
</artifactItems> | ||
</configuration> | ||
</execution> | ||
<execution> | ||
<id>copy-javafx-mac</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>copy</goal> | ||
</goals> | ||
<configuration> | ||
<outputDirectory>${project.build.directory}/dependencies/mac</outputDirectory> | ||
<artifactItems> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-base</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>mac</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-controls</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>mac</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-graphics</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>mac</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-swing</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>mac</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-fxml</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>mac</classifier> | ||
</artifactItem> | ||
</artifactItems> | ||
</configuration> | ||
</execution> | ||
<execution> | ||
<id>copy-javafx-linux</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>copy</goal> | ||
</goals> | ||
<configuration> | ||
<outputDirectory>${project.build.directory}/dependencies/linux</outputDirectory> | ||
<artifactItems> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-base</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>linux</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-controls</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>linux</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-graphics</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>linux</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-swing</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>linux</classifier> | ||
</artifactItem> | ||
<artifactItem> | ||
<groupId>org.openjfx</groupId> | ||
<artifactId>javafx-fxml</artifactId> | ||
<version>${javafx.version}</version> | ||
<classifier>linux</classifier> | ||
</artifactItem> | ||
</artifactItems> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<groupId>com.install4j</groupId> | ||
<artifactId>install4j-maven</artifactId> | ||
<version>9.0.5</version> | ||
<executions> | ||
<execution> | ||
<id>compile-installers</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>compile</goal> | ||
</goals> | ||
<configuration> | ||
<projectFile>${project.basedir}/src/main/installer/cambr.install4j</projectFile> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
<pluginRepositories> | ||
<pluginRepository> | ||
<id>ej-technologies</id> | ||
<url>https://maven.ej-technologies.com/repository</url> | ||
</pluginRepository> | ||
</pluginRepositories> | ||
|
||
<repositories> | ||
<!--Temporary until 4.0.0 is in maven central --> | ||
<repository> | ||
<id>ext-snapshots-local</id> | ||
<name>ext-snapshots-local</name> | ||
<url>https://artifactory.jadaptive.com/ext-snapshots-local</url> | ||
<snapshots /> | ||
<releases> | ||
<enabled>false</enabled> | ||
</releases> | ||
</repository> | ||
</repositories> | ||
</project> |
Oops, something went wrong.