Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/niqdev/ipcam-view
MJPEG video streaming on Android
https://github.com/niqdev/ipcam-view
android ip-camera mjpeg snapshot video-streaming
Last synced: 3 months ago
JSON representation
MJPEG video streaming on Android
- Host: GitHub
- URL: https://github.com/niqdev/ipcam-view
- Owner: niqdev
- License: mit
- Created: 2016-02-12T06:55:17.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-29T22:27:49.000Z (6 months ago)
- Last Synced: 2024-01-22T10:05:02.463Z (6 months ago)
- Topics: android, ip-camera, mjpeg, snapshot, video-streaming
- Language: C
- Homepage: https://goo.gl/a2HM8C
- Size: 12.4 MB
- Stars: 394
- Watchers: 15
- Forks: 159
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-android-libraries - ipcam-view
README
# ipcam-view ![ipcam-view](images/logo.png)
[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-ipcam--view-brightgreen.svg?style=flat)](http://android-arsenal.com/details/1/3358)
[![JitPack](https://jitpack.io/v/niqdev/ipcam-view.svg)](https://jitpack.io/#niqdev/ipcam-view)Android MJPEG video streaming made simple!
A wrapper library around the well known [SimpleMjpegView](https://bitbucket.org/neuralassembly/simplemjpegview) and [android-camera-axis](https://code.google.com/archive/p/android-camera-axis/) projects.
If you have problem to identify your IpCam url, please follow this [link](https://github.com/niqdev/ipcam-view/wiki)
### Features
- [x] Default support by `android-camera-axis`
- [ ] Native support by `SimpleMjpegView`
- [x] Handle credentials and cookies
- [x] Multiple camera in one activity
- [x] Snapshot
- [x] Flip and rotate image
- [x] Video recording
- [x] Custom appearance### Gradle dependency
```java
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.niqdev:ipcam-view:'
}
```### Demo app
![]()
![]()
![]()
[
](https://f-droid.org/packages/com.github.niqdev.ipcam/)
[](https://play.google.com/store/apps/details?id=com.github.niqdev.ipcam)
### Usage
Add to your layout: [example](app/src/main/res/layout/activity_ipcam_default.xml)
```java
```
Read stream in your activity/fragment: [example](app/src/main/java/com/github/niqdev/ipcam/IpCamDefaultActivity.kt)
```java
int TIMEOUT = 5; //secondsMjpeg.newInstance()
.credential("USERNAME", "PASSWORD")
.open("IPCAM_URL.mjpg", TIMEOUT)
.subscribe(inputStream -> {
mjpegView.setSource(inputStream);
mjpegView.setDisplayMode(DisplayMode.BEST_FIT);
mjpegView.showFps(true);
});
```### Customize appearance
To get a transparent background for the surface itself (while stream is loading) as well as for the stream background
```java
mjpegView.setTransparentBackground();
// OR
stream:transparentBackground="true"
```To hide the MjpegView later, you might need to reset the transparency due to internal behaviour of applying transparency
```java
mjpegView.resetTransparentBackground();
```To set other colors than transparent, be aware that they will only be applied on a running stream i.e. you can't change the color of the surface itself which you will see while the stream is loading
Note that it only works when `transparentBackground` is not set to `true` and that you are not able to directly set transparent background color here
```java
mjpegView.setCustomBackgroundColor(Color.DKGRAY);
// OR
stream:backgroundColor="@android:color/darker_gray"
```To change the colors of the fps overlay
```java
mjpegView.setFpsOverlayBackgroundColor(Color.DKGRAY);
mjpegView.setFpsOverlayTextColor(Color.WHITE);
```To clear the last frame since the canvas keeps the current image even if you stop the stream, e.g. hide/show
```java
mjpegView.clearStream();
```To flip the image
```java
mjpegView.flipHorizontal(true);
mjpegView.flipVertical(true);
```To rotate the image
```java
mjpegView.setRotate(90); // degrees
```### Apps that use this library
* [OpenWebNet Android](https://github.com/openwebnet/openwebnet-android)
* [TankDroid](https://github.com/bmachek/TankDroid)You are welcome to add your app to the list!
### Development
Download Android NDK:
* [manually](http://developer.android.com/ndk/downloads/index.html#download)
* in Android Studio: File > Other Settings > Default Project Structure > download NDKCompile manually (verify your paths)
```bash
$ chmod a+x compileJni.sh
$ ./compileJni.sh
```