OpenMux is an open-source alternative to Mux, providing a scalable and developer-friendly API for video encoding, streaming, and playback. Whether you're building a video-sharing platform, a live-streaming service, or an educational content platform, OpenMux gives you the tools you need without the vendor lock-in.
- π₯ Video Upload & Encoding: Supports multiple formats and resolutions.
- π‘ Live Streaming: RTMP ingest and HLS playback.
- π₯ Adaptive Bitrate Streaming (ABR): Ensures smooth playback across devices.
- ποΈ Storage Integration: Works with AWS S3, Google Cloud Storage, and local storage.
- π Analytics: Real-time video insights and engagement tracking.
- π‘ Security: Token-based access control, watermarking, and DRM support.
- π Developer-Friendly API: RESTful API and Webhooks for seamless integration.
- π Web3 Integration: NFT-based video access, decentralized storage (IPFS, Arweave), and crypto payments.
- Add WebRTC support for ultra-low latency streaming.
- Implement server-side ad insertion (SSAI).
- Expand cloud provider integrations.
- Develop a React-based video player component.
- Web3 smart contract integration for NFT video access.
- Support for decentralized storage (IPFS, Arweave).
- Node.js (>=16.x)
- PostgreSQL or MongoDB
- FFmpeg (for video processing)
- Docker (optional, for deployment)
- MetaMask or WalletConnect (for Web3 integration)
-
Clone the Repository:
git clone https://github.com/yourusername/openmux.git cd openmux -
Install Dependencies:
npm install
-
Set Up Environment Variables:
cp .env.example .env # Update the .env file with your configurations -
Run Migrations (for PostgreSQL users):
npm run migrate
-
Start the Server:
npm start
Check out our full API docs at https://docs.openmux.io.
curl -X POST "https://api.openmux.io/videos" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@video.mp4"curl -X GET "https://api.openmux.io/videos/{video_id}" \
-H "Authorization: Bearer YOUR_API_KEY"const ethers = require("ethers");
const contractAddress = "0xYourContractAddress";
const abi = ["function ownerOf(uint256 tokenId) view returns (address)"];
async function checkOwnership(tokenId, userAddress) {
const provider = new ethers.providers.JsonRpcProvider("https://your_rpc_url");
const contract = new ethers.Contract(contractAddress, abi, provider);
const owner = await contract.ownerOf(tokenId);
return owner.toLowerCase() === userAddress.toLowerCase();
}docker-compose up -d- Push your repo to GitHub.
- Connect your repo to Render or Fly.io for backend hosting.
- Deploy the frontend on Vercel or Netlify.
We welcome contributions! Please read our CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- π’ Join our Discord: Invite Link
- π¦ Follow us on Twitter: @OpenMux
- π§ Contact us: support@openmux.io
