fardhoz25/secure-codec-studio

GitHub: fardhoz25/secure-codec-studio

基于 Next.js 和 FastAPI 的全栈多媒体处理 Web 应用,支持图像、音频、视频的无损/有损压缩与 LSB 隐写术,提供压缩分析与秘密消息嵌入提取功能。

Stars: 0 | Forks: 0

# Secure Multimedia Codec Studio ![Next.js](https://img.shields.io/badge/Next.js-15-black) ![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6) ![FastAPI](https://img.shields.io/badge/FastAPI-0.116-009688) ![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4-06B6D4) ![Vercel](https://img.shields.io/badge/Frontend-Vercel-000000) ![Railway](https://img.shields.io/badge/Backend-Railway-0B0D0E) ![License](https://img.shields.io/badge/License-MIT-yellow) 一个用于演示数字媒体上**无损多媒体压缩**和**隐写术**算法的全栈 Web 应用。本项目采用单页应用(SPA)架构开发,前端使用 **Next.js**,后端使用 **FastAPI**。 ### 🌐 在线演示 - 前端: https://secure-codec-studio.vercel.app/ - 后端 API: https://secure-codec-studio-production.up.railway.app ## 概述 Secure Multimedia Codec Studio 是一个全栈 Web 应用,它演示了图像、音频和视频的多媒体压缩及最低有效位(LSB)隐写术。 该应用同时支持**无损压缩**和**有损压缩**,允许用户通过交互式的 Web 界面了解可逆与不可逆压缩方法之间的根本区别,并在适用时提供压缩率、处理时间、PSNR 和 MSE 等性能指标。 ## 亮点 - 🌐 实时生产环境部署 - 🖼️ 图像、音频和视频压缩 - 🔒 最低有效位(LSB)隐写术 - 📊 压缩分析(压缩率、PSNR、MSE) - ⚡ 基于 Next.js + FastAPI 构建 - ☁️ 部署于 Vercel 和 Railway ## 📸 应用截图 | 1️⃣ 主用户界面 | 2️⃣ 集成媒体播放器 | | :---: | :---: | | Main User Interface | Integrated Media Player | | **简洁且响应式的 UI**:主仪表板具有深色主题的拖放区和模式选择功能。 | **媒体预览**:内置播放器,可即时渲染并播放处理后的视频、音频和图像。 | | 3️⃣ 无损压缩分析 | 4️⃣ 有损压缩分析 | | :---: | :---: | | Lossless Analytics | Lossy Analytics | | **数据保留**:结果显示使用 Zlib 算法实现了原始数据的精确保留。 | **体积优化**:结果显示了大幅的文件体积缩减以及 PSNR/MSE 质量指标。 | | 5️⃣ 隐写术(隐藏消息) | 6️⃣ 隐写术(提取消息) | | :---: | :---: | | Steganography Hide | Steganography Extract | | **安全嵌入**:通过 LSB 将秘密文本消息隐藏在媒体文件中。 | **数据提取**:成功从隐写文件中提取并读取隐藏的秘密文本。 | # 技术栈 ## 前端 - Next.js - React - TypeScript - Tailwind CSS - Lucide Icons ## 后端 - FastAPI - Python - OpenCV - FFmpeg (FFV1, H.264) - Zlib # 功能 Secure Multimedia Codec Studio 通过统一的工作流支持跨图像、音频和视频的多媒体压缩及隐写术。 ## 压缩模式 | 模式 | 描述 | 解压 | |------|-------------|---------------| | **无损压缩** | 使用 Zlib 算法保留原始数据的可逆压缩。 | ✅ 支持 | | **有损压缩** | 通过牺牲部分原始信息来减小文件大小的不可逆压缩。 | ❌ 不支持 | | **隐写术** | 使用最低有效位(LSB)技术隐藏和提取秘密文本消息。 | N/A | ## 压缩对比 | 特性 | 无损 | 有损 | |----------|:--------:|:------:| | 保留原始数据 | ✅ | ❌ | | 可解压 | ✅ | ❌ | | 压缩率 | 中等 | 高 | | 图像质量 | 不变 | 降低 | | 最佳使用场景 | 归档与编辑 | 分发与存储 | ## 支持的媒体 | 媒体 | 压缩算法 | 隐写术 | 支持的格式 | 最大文件大小 | |--------|------------------------|---------------|-------------------|---------------| | **图像** | Zlib(无损),OpenCV JPEG(有损) | LSB | PNG, JPG, JPEG, BMP, WebP | 5 MB | | **音频** | Zlib(无损),FFmpeg libmp3lame(有损) | LSB | WAV, MP3, OGG, M4A, AAC, FLAC | 10 MB | | **视频** | Zlib(无损),FFmpeg H.264/libx264(有损) | LSB (FFV1) | MP4, AVI, MOV, MKV | 20 MB | ## 处理能力 - 完全保留数据的**无损压缩**。 - 用于高效多媒体存储的**有损压缩**。 - 用于还原压缩媒体的**无损解压**。 - 用于嵌入秘密消息的 **LSB 隐写术**。 - 从受支持的隐写媒体中**提取隐藏消息**。 - **压缩分析**,包括压缩率、处理时间、PSNR 和 MSE(适用时)。 - 用于处理后的图像、音频和视频的**集成媒体预览**。 ## 存储 所有处理过的文件临时存储在以下位置: ``` backend/tmp/ ``` 临时文件仅在处理过程中使用。 # 项目架构 ``` Secure-Codec-Studio │ ├── app/ │ ├── components/ │ ├── ActionPanel.tsx │ ├── Header.tsx │ ├── Footer.tsx │ ├── UploadDropzone.tsx │ ├── ModeSelector.tsx │ ├── ResultCards.tsx │ └── MediaPreview.tsx │ ├── hooks/ │ ├── lib/ │ ├── api.ts │ └── utils.ts │ ├── backend/ │ ├── app/ │ │ │ ├── algorithms/ │ │ ├── image/ │ │ ├── audio/ │ │ └── video/ │ │ │ ├── services/ │ │ │ ├── routes.py │ ├── schemas.py │ ├── utils.py │ │ │ └── tmp/ │ └── README.md ``` # 后端架构 后端采用简单的分层架构。 ``` Client │ ▼ routes.py │ ▼ validator.py │ ▼ service │ ▼ algorithm │ ▼ response ``` 业务逻辑放置在 **services** 中,而算法隔离在 **algorithms** 目录内。 ## 压缩工作流 ``` Upload Image │ ▼ Select Compression Method │ ┌───────────┴───────────┐ │ │ ▼ ▼ Lossless Compression Lossy Compression │ │ ▼ ▼ Zlib Algorithm Quality Reduction │ │ ▼ ▼ Codec File (.lossless) Optimized Image │ ▼ Decompression │ ▼ Original Image Restored ``` # 音频处理流程 ``` Upload Audio │ ▼ Select Compression Method │ ┌───────────┴───────────┐ │ │ ▼ ▼ Lossless Compression Lossy Compression │ │ ▼ ▼ Zlib Algorithm FFmpeg libmp3lame │ │ ▼ ▼ Codec File (.lossless) Optimized Audio │ ▼ Decompression │ ▼ Original Audio Restored ``` # API 端点 ## 处理文件 ``` POST /process ``` ### 请求 Multipart Form Data | 字段 | 类型 | 描述 | |--------|------|-------------| | file | File | 上传的媒体 | | mode | String | compress / decompress / stego / extract | | message | String | 秘密消息(可选) | ### 响应 ``` { "status": "success", "media_type": "image", "original_size": 102400, "processed_size": 50231, "compression_ratio": 50.95, "processing_time_ms": 135, "message": "Image compressed successfully" } ``` # 环境变量 在项目根目录中创建一个 `.env.local` 文件,并配置以下环境变量: ### 前端 ``` NEXT_PUBLIC_API_URL=https://your-backend.up.railway.app ``` # 快速开始 在运行此项目之前,请确保您的系统已安装以下内容: - **Node.js**(v18 或更高版本) - **Python**(v3.10 或更高版本) - **FFmpeg**:必须安装并添加到系统的 `PATH` 中。这对于音频和视频处理能够正常工作**至关重要**。 ## 1. 克隆仓库 ``` git clone https://github.com/fardhoz25/secure-codec-studio.git cd secure-codec-studio ``` ## 2. 后端设置 导航至后端目录: ``` cd backend ``` 创建虚拟环境: ``` python -m venv .venv ``` 激活虚拟环境。 **Windows** ``` .venv\Scripts\activate ``` **Linux / macOS** ``` source .venv/bin/activate ``` 安装依赖: ``` pip install -r requirements.txt ``` 运行 FastAPI 服务器: ``` python run.py ``` 后端将可在以下地址访问: ``` http://127.0.0.1:8000 ``` ## 3. 前端设置 返回项目根目录: ``` cd .. ``` 安装依赖: ``` npm install ``` 运行开发服务器: ``` npm run dev ``` 前端将可在以下地址访问: ``` http://localhost:3000 ``` # API 文档 后端提供了一个交互式的 Swagger UI,用于探索和测试所有可用的 API 端点。 ### 生产环境 ``` https://secure-codec-studio-production.up.railway.app/docs ``` ### 本地开发 ``` http://127.0.0.1:8000/docs ``` API 文档包括: - 文件处理端点 - 请求参数 - 响应 schema - 交互式请求测试 - 验证错误 # 部署 该应用程序作为解耦的全栈架构进行部署。 | 服务 | 平台 | URL | |----------|----------|-----| | 前端 | Vercel | https://secure-codec-studio.vercel.app/ | | 后端 API | Railway | https://secure-codec-studio-production.up.railway.app | | API 文档 | Railway Swagger | https://secure-codec-studio-production.up.railway.app/docs | 前端通过 `NEXT_PUBLIC_API_URL` 环境变量与后端进行通信。 # 未来改进 - 立体声 WAV 支持 - 高级有损图像压缩 - 更好的音频压缩率 - 渐进式处理 - 批处理 - 下载管理器 # 许可证 本项目基于 **MIT License** 授权。 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 # 作者 **Fardho Zurrahman** **Muhammad Ridwan Ihsan** **Muhammad Wiguna Ilham** 数据科学爱好者 使用 Next.js 和 FastAPI 构建。
标签:AV绕过, FastAPI, 图像隐写, 多媒体处理, 数据压缩, 自动化攻击, 逆向工具, 隐写术