Skip to content

lmshao/Aurora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Aurora Player 🎬

License: MulanPSL-2.0 C++17 FFmpeg

A modular cross-platform multimedia player SDK with production-grade audio-video synchronization.

Overview

Aurora consists of two main components:

  • lmplayer: A cross-platform multimedia player SDK featuring:

    • FFmpeg-based decoding pipeline
    • Production-quality AV synchronization (audio master clock)
    • Plugin architecture for decoders and renderers
    • Thread-safe queue-based data flow
    • Hardware audio position query support (WASAPI/PulseAudio)
  • aurora: Desktop player application with Qt6 GUI (work in progress)

Project Status: 🚧 Active Development - Core playback engine complete, GUI in progress

Features

Core SDK (lmplayer)

  • βœ… Multi-format support:
    • Video: H.264/HEVC/VP8/VP9/MPEG-4 (AV1 with hardware acceleration)
    • Audio: AAC/MP3/Opus/FLAC
    • Containers: MP4, MKV, WebM, MPEG-TS
  • βœ… Precise AV synchronization: Audio master clock with hardware position query
  • βœ… Flexible rendering: Custom renderer interface (supports dummy/file/Qt/platform-specific)
  • βœ… Playback control: Play/Pause/Seek/Speed control (0.5x-2.0x)
  • βœ… Real-time & fast modes: Configurable playback rate (0.0 = max speed)
  • βœ… Dynamic format conversion: Decoder adapts to renderer's preferred format
  • βœ… Plugin system: Runtime decoder/renderer registration

Tools

  • media_dump: Extract raw YUV/PCM data for testing and analysis

Requirements

Minimum System Requirements

  • Operating System: Linux, macOS, Windows
  • C++ Compiler: GCC 7+, Clang 6+, MSVC 2017+
  • CMake: 3.10+
  • FFmpeg: 4.4+ (Required)
    • libavformat >= 58.0
    • libavcodec >= 58.0
    • libavutil >= 56.0
    • libswresample >= 3.0

Optional Dependencies

  • Qt 6.2+: For desktop GUI application

Project Structure

aurora/
β”œβ”€β”€ lmplayer/           # Core player SDK
β”‚   β”œβ”€β”€ include/        # Public API headers
β”‚   β”œβ”€β”€ src/core/       # Core implementation
β”‚   β”œβ”€β”€ src/renderer/   # Platform renderers (WASAPI/PulseAudio)
β”‚   └── tests/          # Unit tests
β”œβ”€β”€ app/                # Desktop GUI application (Qt6)
└── tools/
    └── media_dump/     # Media data extraction tool

Building from Source

Quick Build (All Platforms)

We provide cross-platform build scripts for convenience:

# Linux/macOS
./scripts/build.sh           # Debug build
./scripts/build.sh Release   # Release build
./scripts/run.sh             # Run Aurora Player

# Windows (PowerShell)
.\scripts\build.ps1           # Debug build
.\scripts\build.ps1 Release   # Release build
.\scripts\run.ps1             # Run Aurora Player

# Clean build artifacts
./scripts/clean.sh            # Linux/macOS
.\scripts\clean.ps1           # Windows

Manual Build

Ubuntu/Debian

# Install dependencies
sudo apt update
sudo apt install build-essential cmake pkg-config
sudo apt install libavformat-dev libavcodec-dev libavutil-dev libswresample-dev libswscale-dev
sudo apt install libpulse-dev  # For audio hardware position query
sudo apt install qt6-base-dev  # Optional, for GUI

# Build
mkdir build && cd build
cmake ..
make -j$(nproc)

# Run tests
ctest --output-on-failure

# Install (optional)
sudo make install

macOS

# Install dependencies via Homebrew
brew install cmake pkg-config ffmpeg qt@6

# Build
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@6 ..
make -j$(sysctl -n hw.ncpu)

# Run tests
ctest --output-on-failure

Windows (MSVC)

# Install dependencies via vcpkg
vcpkg install ffmpeg:x64-windows qt6-base:x64-windows

# Build
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake ..
cmake --build . --config Release

# Run tests
ctest -C Release --output-on-failure

Quick Start

For detailed SDK usage, see lmplayer/README.md.

Testing with media_dump Tool

The media_dump tool extracts raw media data for testing and analysis:

# Fast decode mode (decode as fast as possible)
./build/tools/media_dump/media_dump video.mp4

# Real-time mode with AV sync (simulates actual playback)
./build/tools/media_dump/media_dump --realtime video.mp4

# Custom output directory
./build/tools/media_dump/media_dump video.mp4 ./my_output/

# Output files:
# - ./output/video/frame_000000.yuv  : YUV420P frames (contiguous, 1280x720 = 1.38MB each)
# - ./output/audio.pcm               : S16LE PCM (48kHz, 2ch, interleaved)

Playback modes:

  • Fast mode (default): Decode at maximum speed, no timing control
  • Real-time mode (--realtime): Follow video's actual frame rate with AV sync

Use cases:

  • SDK functionality testing
  • Decoder correctness verification
  • Raw data extraction for analysis
  • AV sync quality evaluation
  • Performance benchmarking

API Reference

  • Public headers: lmplayer/include/lmplayer/
  • Main API: See player.h for player control interface
  • Custom renderers: See renderer.h for renderer interface
  • Error codes: See error_code.h for all status codes
  • Media types: See media_info.h for format definitions

License

Copyright (c) 2026 SHAO Liming

Aurora is licensed under Mulan PSL v2.

You can use this software according to the terms and conditions of the Mulan PSL v2.

You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2

THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.

See the LICENSE file for more details.

Credits

  • Uses FFmpeg for decoding
  • Desktop UI powered by Qt

Contributing

Contributions are welcome! Please ensure:

  • Code follows existing style (C++17, clang-format)
  • All tests pass (make test)
  • New features include unit tests
  • Commit messages are descriptive

Contact

About

Aurora Player - πŸš€ High-performance cross-platform media player built with Qt. δΈ€ζ¬ΎεŸΊδΊŽQTεΌ€ε‘ηš„θ·¨εΉ³ε°εͺ’体播放器。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors