{"id":18576866,"url":"https://github.com/niqdev/ipcam-view","last_synced_at":"2025-05-15T12:06:52.956Z","repository":{"id":37550422,"uuid":"51571730","full_name":"niqdev/ipcam-view","owner":"niqdev","description":"MJPEG video streaming on Android","archived":false,"fork":false,"pushed_at":"2025-03-03T06:51:21.000Z","size":13126,"stargazers_count":422,"open_issues_count":57,"forks_count":163,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-14T22:22:03.426Z","etag":null,"topics":["android","ip-camera","mjpeg","snapshot","video-streaming"],"latest_commit_sha":null,"homepage":"https://goo.gl/a2HM8C","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niqdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-02-12T06:55:17.000Z","updated_at":"2025-04-12T13:12:29.000Z","dependencies_parsed_at":"2023-02-18T05:46:00.146Z","dependency_job_id":"5e2f6ddb-5f31-490e-b180-8d4665de85ca","html_url":"https://github.com/niqdev/ipcam-view","commit_stats":{"total_commits":293,"total_committers":23,"mean_commits":12.73913043478261,"dds":0.4607508532423208,"last_synced_commit":"bd406f8693ae1b2832dce7932b821ee6e59f640e"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fipcam-view","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fipcam-view/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fipcam-view/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fipcam-view/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niqdev","download_url":"https://codeload.github.com/niqdev/ipcam-view/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337613,"owners_count":22054253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ip-camera","mjpeg","snapshot","video-streaming"],"created_at":"2024-11-06T23:26:54.146Z","updated_at":"2025-05-15T12:06:47.934Z","avatar_url":"https://github.com/niqdev.png","language":"C","funding_links":[],"categories":["Libs","Media"],"sub_categories":["\u003cA NAME=\"Media\"\u003e\u003c/A\u003eMedia"],"readme":"# ipcam-view ![ipcam-view](images/logo.png)\n\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-ipcam--view-brightgreen.svg?style=flat)](http://android-arsenal.com/details/1/3358)\n[![JitPack](https://jitpack.io/v/niqdev/ipcam-view.svg)](https://jitpack.io/#niqdev/ipcam-view)\n\nAndroid MJPEG video streaming made simple!\n\nA 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.\n\nIf you have problem to identify your IpCam url, please follow this [link](https://github.com/niqdev/ipcam-view/wiki)\n\n### Features\n- [x] Default support by `android-camera-axis`\n- [ ] Native support by `SimpleMjpegView`\n- [x] Handle credentials and cookies\n- [x] Multiple camera in one activity\n- [x] Snapshot\n- [x] Flip and rotate image\n- [x] Video recording\n- [x] Custom appearance\n\n### Gradle dependency\n```java\nrepositories {\n    maven { url 'https://jitpack.io' }\n}\ndependencies {\n    implementation 'com.github.niqdev:ipcam-view:\u003cLATEST_RELEASE\u003e'\n}\n```\n\n### Demo app\n\n\u003cimg src=\"images/screenshot-main.png\" alt=\"main\" height=\"600\" /\u003e \u003cimg src=\"images/screenshot-default.png\" alt=\"default\" height=\"600\" /\u003e\n\n\u003cimg src=\"images/screenshot-two-camera.png\" alt=\"two-camera\" height=\"600\" /\u003e \u003cimg src=\"images/screenshot-snapshot.png\" alt=\"snapshot\" height=\"600\" /\u003e\n\n\u003cimg src=\"images/screenshot-video.jpg\" alt=\"video\" height=\"600\" /\u003e \u003cimg src=\"images/screenshot-custom-appearance.png\" alt=\"custom-appearance\" height=\"600\" /\u003e\n\n\u003cimg src=\"images/screenshot-settings.png\" alt=\"settings\" height=\"600\" /\u003e\n\n[\u003cimg src=\"https://f-droid.org/badge/get-it-on.png\"\n     alt=\"Get it on F-Droid\"\n     height=\"100\"\u003e](https://f-droid.org/packages/com.github.niqdev.ipcam/)\n[\u003cimg src=\"https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png\"\n     alt=\"Get it on Google Play\"\n     height=\"100\"\u003e](https://play.google.com/store/apps/details?id=com.github.niqdev.ipcam)\n\n### Usage\n\nAdd to your layout: [example](app/src/main/res/layout/activity_ipcam_default.xml)\n```java\n\n\u003cRelativeLayout\n  xmlns:android=\"http://schemas.android.com/apk/res/android\"\n  // ADD THIS\n  xmlns:stream=\"http://schemas.android.com/apk/res-auto\"\n  ...\u003e\n\n    \u003ccom.github.niqdev.mjpeg.MjpegSurfaceView\n      android:id=\"@+id/VIEW_NAME\"\n      android:layout_width=\"match_parent\"\n      android:layout_height=\"match_parent\"\n      stream:type=\"stream_default OR stream_native\" /\u003e\n\n\u003c/RelativeLayout\u003e\n```\n\nRead stream in your activity/fragment: [example](app/src/main/java/com/github/niqdev/ipcam/IpCamDefaultActivity.kt)\n```java\nint TIMEOUT = 5; //seconds\n\nMjpeg.newInstance()\n  .credential(\"USERNAME\", \"PASSWORD\")\n  .open(\"IPCAM_URL.mjpg\", TIMEOUT)\n  .subscribe(inputStream -\u003e {\n      mjpegView.setSource(inputStream);\n      mjpegView.setDisplayMode(DisplayMode.BEST_FIT);\n      mjpegView.showFps(true);\n  });\n```\n\n### Customize appearance\n\nTo get a transparent background for the surface itself (while stream is loading) as well as for the stream background\n```java\nmjpegView.setTransparentBackground();\n// OR\nstream:transparentBackground=\"true\"\n```\n\nTo hide the MjpegView later, you might need to reset the transparency due to internal behaviour of applying transparency\n```java\nmjpegView.resetTransparentBackground();\n```\n\nTo 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\n\nNote that it only works when `transparentBackground` is not set to `true` and that you are not able to directly set transparent background color here\n```java\nmjpegView.setCustomBackgroundColor(Color.DKGRAY);\n// OR\nstream:backgroundColor=\"@android:color/darker_gray\"\n```\n\nTo change the colors of the fps overlay\n```java\nmjpegView.setFpsOverlayBackgroundColor(Color.DKGRAY);\nmjpegView.setFpsOverlayTextColor(Color.WHITE);\n```\n\nTo clear the last frame since the canvas keeps the current image even if you stop the stream, e.g. hide/show\n```java\nmjpegView.clearStream();\n```\n\nTo flip the image\n```java\nmjpegView.flipHorizontal(true);\nmjpegView.flipVertical(true);\n```\n\nTo rotate the image\n```java\nmjpegView.setRotate(90);  // degrees\n```\n\n### Apps that use this library\n* [OpenWebNet Android](https://github.com/openwebnet/openwebnet-android)\n* [TankDroid](https://github.com/bmachek/TankDroid)\n\nYou are welcome to add your app to the list!\n\n### Development\nDownload Android NDK:\n* [manually](http://developer.android.com/ndk/downloads/index.html#download)\n* in Android Studio: File \u003e Other Settings \u003e Default Project Structure \u003e download NDK \n\nCompile manually (verify your paths)\n```bash\n$ chmod a+x compileJni.sh\n$ ./compileJni.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniqdev%2Fipcam-view","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniqdev%2Fipcam-view","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniqdev%2Fipcam-view/lists"}