livestream-archiver/package
RTSDA 2c3c86e07d Add LICENSE, improve README, and update project documentation
- Add MIT LICENSE file
- Make README more generic and comprehensive
- Add installation and troubleshooting sections
- Include systemd service integration docs
- Update with build and deployment instructions
2025-08-16 18:57:27 -04:00
..
src Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00
Cargo.lock Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00
Cargo.toml Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00
DEPLOY.md Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00
livestream-archiver-clean.tar.gz Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00
livestream-archiver.service Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00
README.md Add LICENSE, improve README, and update project documentation 2025-08-16 18:57:27 -04:00

Livestream Archiver

A Rust application that monitors a directory for livestream recordings, processes them, and syncs them to a PC.

Features

  • File Detection: Monitors /home/rockvilleav/Sync/Livestreams for new MP4 files
  • Readiness Check: Waits for files to be completely written before processing
  • PC Sync: Uses rsync to send files to your PC immediately after detection
  • Caching & Retry: Caches failed syncs and retries them on subsequent runs
  • Processing: Converts files to AV1 using QSV hardware acceleration
  • Organization: Creates date-based directory structure in Jellyfin format
  • Cleanup: Deletes original files after successful processing and sync

Configuration

Set the PC_SYNC_TARGET environment variable to configure where files are synced:

export PC_SYNC_TARGET="user@192.168.1.100:/path/to/destination/"

If not set, defaults to: user@192.168.1.100:/path/to/destination/

Usage

cargo run

The application will:

  1. Check for existing unprocessed files
  2. Start monitoring for new files
  3. For each detected file:
    • Wait for it to be ready (stable size/modification time)
    • Sync to PC using rsync
    • Convert to AV1 format
    • Create NFO metadata file
    • Delete original file

Dependencies

  • rsync must be installed and accessible in PATH
  • ffmpeg with QSV support for hardware acceleration
  • SSH key authentication should be set up for passwordless rsync

Directory Structure

Output files are organized as:

/media/archive/jellyfin/livestreams/
├── 2024/
│   ├── 01-January/
│   │   ├── Divine Worship Service - RTSDA | January 01 2024.mp4
│   │   ├── Divine Worship Service - RTSDA | January 01 2024.nfo
│   │   └── ...
│   └── ...
└── ...