将 YouTube 作为存储空间
Hacker News 摘要yt-media-storage 是一个将 YouTube 作为存储空间使用的开源项目。它通过将文件编码为无损视频,并支持将这些视频重新解码还原为原始文件来实现这一目的。该工具同时提供了命令行界面(CLI)和图形用户界面(GUI)。
主要功能
• 文件编码与解码:能够将任何文件编码为无损视频(采用 FFV1 编码和 MKV 封装),并能将其完美还原。
• 喷泉码:利用 Wirehair 喷泉码技术进行数据冗余和修复。
• 可选加密:支持使用 libsodium 库提供的 XChaCha20-Poly1305 算法对文件进行密码加密。
• 批处理:在图形界面中支持将多个文件加入队列进行批量编码。
• 进度追踪:图形界面提供实时的进度条和状态更新。
系统要求
构建和运行该项目需要以下软件环境:
• CMake 3.22 或更高版本。
• 支持 C++23 标准的编译器。
• FFmpeg 库。
• libsodium 库。
• OpenMP 并行计算支持。
• Qt6(包括 Core 和 Widgets 模块)。
安装与构建方法
在不同操作系统上,可以通过各自的包管理器安装依赖:
• Ubuntu 或 Debian:使用 apt 安装 cmake、build-essential、qt6-base-dev 以及 FFmpeg 和 libsodium 的开发库。
• Fedora 或 CentOS:使用 dnf 安装 cmake、gcc-c++、qt6-qtbase-devel、ffmpeg-devel 等。
• Arch Linux:使用 pacman 安装相关组件。
• macOS:通过 Homebrew 安装。
• Windows:推荐通过 vcpkg 安装依赖库。
构建过程包括创建 build 文件夹,运行 cmake -B build 进行配置,随后执行 cmake --build build。这将生成两个程序:命令行工具 media_storage 和图形界面工具 media_storage_gui。
使用方法
命令行界面:
• 编码:使用 encode 参数,指定输入文件和输出路径。如果需要加密,可以使用 --encrypt 和 --password 参数。
• 解码:使用 decode 参数,指定输入的视频文件和还原后的输出路径。
图形用户界面:
• 单文件操作:通过点击 Browse 按钮选择输入和输出路径,点击对应的编码或解码按钮开始处理。
• 批处理操作:通过 Add Files 按钮将多个文件添加到队列,选择统一的输出目录后进行批量处理。
• 状态监控:通过进度条、状态标签和日志面板查看详细的操作信息。
技术细节
• 编码流程:文件被切分为数据块,使用喷泉码进行处理,最后嵌入到视频帧中。
• 解码流程:从视频帧中提取数据包并重构回原始文件。
• 视频格式:默认使用 MKV 容器和无损的 FFV1 编码器。
• 分辨率与帧率:采用 4K 分辨率(3840x2160)以及 30 FPS 的帧率。
• 多线程:所有操作都在独立的线程中运行,以保证界面响应流畅。
故障排除
• 构建问题:如果提示找不到 Qt6、FFmpeg 或 libsodium,请确保已安装对应的开发包。
• 运行问题:检查文件读写权限以及磁盘空间是否充足。
• 写入头部失败:如果要在 mp4 容器中使用 FFV1 编码器,需要 FFmpeg 8 或更高版本,否则建议直接使用 MKV 格式。
开源协议
该程序属于自由软件,遵循 GNU GPL-3.0 开源许可协议。用户可以根据协议条款进行分发或修改。