{"id":48908566,"url":"https://github.com/fastpix/android-data-bitmovin","last_synced_at":"2026-04-16T22:03:44.297Z","repository":{"id":351630355,"uuid":"1113063803","full_name":"FastPix/android-data-bitmovin","owner":"FastPix","description":"FastPix Video Data SDK to monitor and analyze video playback metrics within Bitmovin for android","archived":false,"fork":false,"pushed_at":"2026-04-15T19:36:45.000Z","size":138,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T21:28:01.058Z","etag":null,"topics":["analytics","android-sdk","bitmovin","data","fastpix","metrics","player","sdk","video"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FastPix.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-09T13:24:06.000Z","updated_at":"2026-04-15T19:33:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FastPix/android-data-bitmovin","commit_stats":null,"previous_names":["fastpix/android-data-bitmovin"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/FastPix/android-data-bitmovin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastPix%2Fandroid-data-bitmovin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastPix%2Fandroid-data-bitmovin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastPix%2Fandroid-data-bitmovin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastPix%2Fandroid-data-bitmovin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FastPix","download_url":"https://codeload.github.com/FastPix/android-data-bitmovin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastPix%2Fandroid-data-bitmovin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31905895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["analytics","android-sdk","bitmovin","data","fastpix","metrics","player","sdk","video"],"created_at":"2026-04-16T22:03:21.370Z","updated_at":"2026-04-16T22:03:44.274Z","avatar_url":"https://github.com/FastPix.png","language":"Kotlin","readme":"# FastPix Bitmovin Player SDK\n\n[![License](https://img.shields.io/badge/License-Proprietary-blue.svg)](LICENSE)\n[![Version](https://img.shields.io/badge/version-1.0.2-green.svg)](CHANGELOG.md)\n[![Min SDK](https://img.shields.io/badge/minSdk-24-orange.svg)](bitmovin-player-data/build.gradle.kts)\n\nThe FastPix Bitmovin Player SDK provides seamless integration between Bitmovin Player and the FastPix\nanalytics platform. This SDK automatically tracks video playback events, metrics, and analytics data\nfrom your Bitmovin Player instances, enabling real-time monitoring and insights on the FastPix dashboard.\n\n## Key Features\n\n- **Automatic Event Tracking** – Automatically captures all playback events (play, pause, seek,\n  buffering, etc.)\n- **Bitmovin Player Integration** – Built specifically for Bitmovin Player Android SDK\n- **Real-time Analytics** – Provides instant access to video performance metrics on the FastPix\n  dashboard\n- **Minimal Setup** – Easy integration with just a few lines of code\n- **Custom Metadata** – Support for custom video and player metadata\n\n## Requirements\n\n- **Minimum Android SDK**: 24 (Android 7.0)\n- **Target/Compile SDK**: 35+\n- **Bitmovin Player SDK**: 5.0+\n- **Kotlin**: 2.0.21+\n- **Java**: 11\n\n## Installation\n\n### Step 1: Add GitHub Packages Repository\n\nAdd the GitHub Packages repository to your project's `settings.gradle.kts`:\n\n```kotlin\ndependencyResolutionManagement {\n    repositories {\n        google()\n        mavenCentral()\n        maven {\n            url = uri(\"https://maven.pkg.github.com/FastPix/android-data-bitmovin\")\n            credentials {\n                username =\n                    project.findProperty(\"lpr.user\")\n                password =\n                    project.findProperty(\"lpr.key\")\n            }\n        }\n    }\n}\n```\n\n### Step 2: Add Dependencies\n\nAdd the FastPix Bitmovin Player SDK and Bitmovin Player dependencies to your app's `build.gradle.kts`:\n\n```kotlin\ndependencies {\n    // FastPix Bitmovin Player SDK\n    implementation(\"io.fastpix.data:bitmovin:1.0.2\")\n}\n```\n\n### Step 3: Configure Authentication\n\nCreate or update `local.properties` in your project root with your GitHub credentials:\n\n```properties\nlpr.user=YOUR_GITHUB_USERNAME\nlpr.key=YOUR_GITHUB_PERSONAL_ACCESS_TOKEN\n```\n\n\u003e **Note**: Make sure to add `local.properties` to your `.gitignore` to keep credentials secure.\n\n## Quick Start\n\n### 1. Add Bitmovin PlayerView to Your Layout\n\nAdd the `Bitmovin PlayerView` to your activity/fragment layout:\n\n```xml\n\n\u003ccom.bitmovin.player.PlayerView\n        android:id=\"@+id/bitmovin_player_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        app:initialize_player=\"false\"\n        app:use_controller=\"false\"\n        app:auto_show=\"false\" /\u003e\n```\n\n### 2. Initialize FastPix SDK in Your Activity\n\nHere's a complete example of how to integrate FastPix SDK with Bitmovin Player:\n\n```kotlin\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimport com.bitmovin.player.api.source.Source\nimport com.bitmovin.player.api.source.SourceConfig\nimport com.bitmovin.player.api.source.SourceType\nimport io.fastpix.data.domain.model.CustomDataDetails\nimport io.fastpix.data.domain.model.PlayerDataDetails\nimport io.fastpix.bitmovin_player_data.src.CustomerData\nimport io.fastpix.bitmovin_player_data.src.FastPixBitMovinPlayer\nimport io.fastpix.data.domain.model.VideoDataDetails\nimport java.util.UUID\n\nclass MainActivity : AppCompatActivity() {\n    private lateinit var binding: ActivityMainBinding\n    private var bitmovinData: FastPixBitMovinPlayer? = null\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        binding = ActivityMainBinding.inflate(layoutInflater)\n        setContentView(binding.root)\n\n        // Configure Bitmovin Player first\n        configureBitmovinPlayer()\n\n        // Then configure FastPix SDK\n        configureFastPix()\n    }\n\n    private fun configureBitmovinPlayer() {\n        val player = Player(context = this)\n        binding.bitmovinPlayerView.player = player\n        binding.bitmovinPlayerView.setUiVisible(false)\n        val source = Source(SourceConfig(\n            url = \"your-video-url\",\n            type = SourceType.Hls,\n            title = \"video-title\",),)\n        player.load(source)\n        player.play()\n        setupPlayerListeners()\n    }\n\n    private fun configureFastPix() {\n        // Create video metadata\n        val videoDataDetails = VideoDataDetails(\n            videoId = \"video-id\",\n            videoTitle = \"Sample Video\",\n            videoSeries = \"Sample Series\",\n            videoProducer = \"Producer Name\",\n            videoContentType = \"Video Content Type\",\n            videoVariant = \"HD\",\n            videoLanguage = \"en\",\n            videoDrmType = null // or \"Widevine\", \"FairPlay\", etc.\n        )\n\n        // Create customer data configuration\n        val customerData = CustomerData(\n            workSpaceId = \"workspace-id\", // Your FastPix workspace ID\n            beaconUrl = null, // Optional: Custom beacon URL\n            videoDetails = videoDataDetails,\n            playerData = PlayerDataDetails(\n                playerName = \"Bitmovin\",\n                playerVersion = \"player-version\" // Your BitmovinPlayer version\n            ),\n            customDataDetails = CustomDataDetails(\n                customField1 = \"custom-value-1\",\n                customField2 = \"custom-value-2\"\n                // Add up to customField10 if needed\n            )\n        )\n\n        // Initialize FastPix SDK\n        bitmovinData = FastPixBitMovinPlayer(\n          this,\n          binding.bitmovinPlayerView,\n          binding.bitmovinPlayerView.player,\n          enableLogging = true,\n          customerData = customerData\n        )\n    }\n\n    override fun onResume() {\n        super.onResume()\n        binding.bitmovinPlayerView.onResume()\n    }\n\n    override fun onPause() {\n        super.onPause()\n        binding.bitmovinPlayerView.onPause()\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n        // Important: Release BitmovinPlayer and FastPix SDK\n        binding.bitmovinPlayerView.unLoad()\n        bitmovinData?.release()\n    }\n}\n```\n\n## Detailed Configuration\n\n### CustomerData Parameters\n\nThe `CustomerData` class accepts the following parameters:\n\n| Parameter           | Type              | Required | Description                                            |\n|---------------------|-------------------|----------|--------------------------------------------------------|\n| `workSpaceId`       | String            | ✅        | Your FastPix workspace identifier                      |\n| `beaconUrl`         | String            | ❌        | Custom beacon URL (default: metrix.ws)                 |\n| `videoDetails`      | VideoDataDetails  | ❌        | Video metadata (see below)                             |\n| `playerData`        | PlayerDataDetails | ❌        | Player information (default: \"bitmovin-player\", \"3.+\") |\n| `customDataDetails` | CustomDataDetails | ❌        | Custom metadata fields                                 |\n\n### VideoDataDetails\n\nConfigure video metadata for better analytics:\n\n```kotlin\nval videoDataDetails = VideoDataDetails(\n    videoId = \"unique-video-id\",           // Optional\n    videoTitle = \"Video Title\",            // Optional\n    videoSeries = \"Series Name\",           // Optional\n    videoProducer = \"Producer Name\",       // Optional\n    videoContentType = \"Movie/TV Show\",    // Optional\n    videoVariant = \"HD/SD/4K\",             // Optional\n    videoLanguage = \"en\",                  // Optional\n    videoDrmType = \"Widevine\"              // Optional\n)\n```\n\n### CustomDataDetails\n\nAdd custom metadata fields (up to 10 fields):\n\n```kotlin\nval customDataDetails = CustomDataDetails(\n    customField1 = \"value1\",\n    customField2 = \"value2\",\n    // ... up to customField10\n)\n```\n\n## Complete Sample Player Implementation\n\nHere's a more complete example with custom controls:\n\n```kotlin\nclass VideoPlayerActivity : AppCompatActivity() {\n    private lateinit var binding: ActivityMainBinding\n    private var bitmovinData: FastPixBitMovinPlayer? = null\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        binding = ActivityMainBinding.inflate(layoutInflater)\n        setContentView(binding.root)\n\n      // Configure Bitmovin Player first\n      initializePlayer()\n\n      // Then configure FastPix SDK\n      configureFastPix()\n    }\n\n    private fun initializePlayer() {\n        val player = Player(context = this)\n        binding.bitmovinPlayerView.player = player\n        binding.bitmovinPlayerView.setUiVisible(false)\n        val source = Source(\n          SourceConfig(\n            url = \"video-url\",\n            type = SourceType.Hls,\n            title = \"video-title\",\n          ),\n        )\n        player.load(source)\n        player.play()\n        setupPlayerListeners()\n    }\n\n    private fun setupFastPix() {\n        val videoDataDetails = VideoDataDetails(\n            videoId = \"video-id\",\n            videoTitle = \"video-title\",\n            videoSeries = \"Sample Series\",\n            videoProducer = \"Sample Producer\",\n            videoContentType = \"Video Content\",\n            videoVariant = \"HD\",\n            videoLanguage = \"en\"\n        )\n\n        val customerData = CustomerData(\n            workSpaceId = \"workspace-id\",\n            videoDetails = videoDataDetails,\n            playerData = PlayerDataDetails(\"bitmovin\", \"player-version\"),\n            customDataDetails = CustomDataDetails(\n                customField1 = \"custom-data-1\"\n            )\n        )\n      \n        bitmovinData = FastPixBitMovinPlayer(\n          this,\n          binding.bitmovinPlayerView,\n          binding.bitmovinPlayerView.player,\n          enableLogging = true,\n          customerData = customerData\n        )\n    }\n\n    override fun onResume() {\n        super.onResume()\n        binding.bitmovinPlayerView.onResume()\n    }\n\n    override fun onPause() {\n        super.onPause()\n        binding.bitmovinPlayerView.onPause()\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n        binding.bitmovinPlayerView.onDestroy()\n        bitmovinData?.release()\n        bitmovinData = null\n    }\n}\n```\n\n## Lifecycle Management\n\nIt's crucial to properly manage the SDK lifecycle:\n\n1. **Initialize** the SDK after BitmovinPlayer is configured\n2. **Call `onResume()`** and `onPause()` on BitmovinPlayerView in your activity lifecycle\n3. **Always call `release()`** in `onDestroy()` to clean up resources\n\n```kotlin\noverride fun onDestroy() {\n    super.onDestroy()\n    binding.bitmovinPlayerView.unLoad()\n    bitmovinData?.release()\n}\n```\n\n## Debugging\n\nEnable logging during development:\n\n```kotlin\nbitmovinData = FastPixBitMovinPlayer(\n  this,\n  binding.bitmovinPlayerView,\n  binding.bitmovinPlayerView.player,\n  enableLogging = true,\n  customerData = customerData\n)\n```\n\nLogs will appear in Logcat with the tag `FastPixBitMovinPlayer`.\n\n## Troubleshooting\n\n### SDK Not Tracking Events\n\n- Ensure you've initialized the SDK after configuring BitmovinPlayer\n- Check that `workSpaceId` is correct\n- Verify BitmovinPlayer events are firing (check BitmovinPlayer logs)\n- Enable logging to see FastPix SDK activity\n\n### Memory Leaks\n\n- Always call `release()` in `onDestroy()`\n- Ensure `BitmovinPlayerView.onDestroy()` is called before releasing FastPix SDK\n\n### Missing Events\n\n- The SDK automatically tracks all events from BitmovinPlayer\n- Events are tracked based on BitmovinPlayer's native event system\n- Check that BitmovinPlayer is properly configured and receiving events\n\n## Support\n\nFor questions, issues, or feature requests:\n\n- **Email**: support@fastpix.io\n- **Documentation**: [FastPix Documentation](https://docs.fastpix.io)\n- **GitHub Issues**: [Report an issue](https://github.com/FastPix/android-data-bitmovin/issues)\n\n## License\n\nCopyright © 2025 FastPix. All rights reserved.\n\nThis SDK is proprietary software. Unauthorized copying, modification, distribution, or use of this\nsoftware is strictly prohibited.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastpix%2Fandroid-data-bitmovin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffastpix%2Fandroid-data-bitmovin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastpix%2Fandroid-data-bitmovin/lists"}