88 lines
1.6 KiB
Markdown
88 lines
1.6 KiB
Markdown
# RTMP Push Tool
|
|
|
|
A TypeScript library for pushing media streams to RTMP servers using FFmpeg.
|
|
|
|
## Features
|
|
|
|
- Push media streams to RTMP servers
|
|
- Support for various media formats (H.264, AAC, etc.)
|
|
- Configurable capabilities and stream keys
|
|
- Process management and monitoring
|
|
- TypeScript support
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
bun install
|
|
```
|
|
|
|
## Usage
|
|
|
|
```typescript
|
|
import {RtmpPush} from '@techniker-me/rtmp-push';
|
|
|
|
const rtmpPush = new RtmpPush('https://example.com/video.ts', 'rtmp://ingest.example.com:80/ingest');
|
|
|
|
// Start streaming
|
|
rtmpPush.start('stream-key', ['h264', 'aac']);
|
|
|
|
// Check if running
|
|
if (rtmpPush.isRunning()) {
|
|
console.log('Stream is active');
|
|
}
|
|
|
|
// Stop streaming
|
|
rtmpPush.stop();
|
|
```
|
|
|
|
## Testing
|
|
|
|
This package includes comprehensive tests for all features:
|
|
|
|
### Run all tests
|
|
|
|
```bash
|
|
bun test
|
|
```
|
|
|
|
### Run tests in watch mode
|
|
|
|
```bash
|
|
bun test --watch
|
|
```
|
|
|
|
### Run tests with coverage
|
|
|
|
```bash
|
|
bun test --coverage
|
|
```
|
|
|
|
### Test Structure
|
|
|
|
- **Unit Tests** (`RtmpPush.test.ts`): Test individual methods and edge cases with mocked dependencies
|
|
- **Integration Tests** (`RtmpPush.integration.test.ts`): Test real functionality and error handling
|
|
|
|
### Test Coverage
|
|
|
|
The test suite covers:
|
|
|
|
- ✅ Constructor and property initialization
|
|
- ✅ Getter methods
|
|
- ✅ Start method with various parameters
|
|
- ✅ Stop method and process cleanup
|
|
- ✅ Process lifecycle management
|
|
- ✅ Error handling and edge cases
|
|
- ✅ URI construction and validation
|
|
- ✅ FFmpeg command generation
|
|
- ✅ Process event handling
|
|
|
|
## Requirements
|
|
|
|
- Bun runtime
|
|
- FFmpeg installed on the system (for actual streaming)
|
|
- TypeScript 5+
|
|
|
|
## License
|
|
|
|
MIT
|