2 Star 0 Fork 0

斯黄 / 基于ROI的视频编码系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

基于ROI的视频编码系统

本项目旨在开发一个基于感兴趣区域(Region of Interest, ROI)的视频编码系统,使用FFMPEG接口和算能SE5硬件平台。该系统允许用户指定视频中的ROI,以提升该区域的编码质量,同时在非ROI区域应用较低的质量编码以减少整体码率,从而优化带宽使用和视觉体验。

项目背景

在多媒体技术迅速发展的今天,视频内容的传输和存储成本高昂。通过智能地提高感兴趣区域(ROI)的编码质量,我们可以在不牺牲视觉质量的前提下,有效减少数据的传输和存储需求。

项目目标

  • 主要目标:实现一个高效的ROI视频编码功能,通过差异化编码提高特定区域的视频质量。
  • 性能目标:确保视频编码过程稳定,且在不增加总码率的前提下提升ROI区域的视频质量。
  • 用户目标:提供用户友好的接口用于ROI区域的选择和编码参数配置。

您需要确保安装了所有必需的依赖库和工具。下面是为这个项目所需的主要组件列表:

开发环境(本项目均在Linux系统下完成)

  1. C++ 编译器:
  • Linux (Ubuntu, Debian等): g++ 是最常用的 C++ 编译器。
  • 安装命令:sudo apt install g++
  1. Make工具:
  • 用于处理 Makefile 并自动构建项目。
  • 安装命令:sudo apt install make

需要额外安装的编解码库

  1. FFmpeg 库:
  • 包括 libavcodec, libavutil, libavformat 等,用于处理多媒体内容。
  • 安装命令:sudo apt install libavcodec-dev libavutil-dev libavformat-dev
  1. x264 编码库:
  • 用于编码视频流到 H.264/MPEG-4 AVC 视频格式。
  • 安装命令:sudo apt install libx264-dev

制作yuv文件

YUV格式是未压缩的,因此生成的文件可能非常大,本仓库无法存储,所以需要自行制作。

您需要安装FFmpeg,用于将视频文件从一种格式转换为另一种格式。以下是安装指南:

对于 Ubuntu/Debian:

sudo apt update
sudo apt install ffmpeg

对于 macOS:

brew install ffmpeg

对于 Windows:

  • FFmpeg 官方网站 下载 FFmpeg 构建版本。
  • 将文件解压到一个目录,例如 C:\FFmpeg
  • C:\FFmpeg\bin 添加到您的 PATH 环境变量中。

要将 MP4 视频文件转换为 1080p YUV 文件,运行以下命令:

ffmpeg -i input.mp4 -s 1920x1080 -pix_fmt yuv420p input.yuv

命令解释

  • -i input.mp4 - 指定输入文件。
  • -s 1920x1080 - 将输出文件的分辨率设置为 1920x1080 像素。
  • -pix_fmt yuv420p - 设置像素格式为 YUV420p,这是视频编码的标准格式。
  • output.yuv - 指定输出文件的名称和格式。

为了使用户能够顺利编译和运行您的项目,我们可以在 README.md 文件中添加具体的编译和运行指南。这将帮助任何下载或克隆您仓库的人理解如何启动项目。以下是这部分内容的推荐写法:

编译项目

本项目使用 Makefile 来简化编译过程。请按照以下步骤编译项目:

  1. 打开终端(或命令提示符)。

  2. 导航到项目的根目录。

  3. 运行以下命令来编译项目:

    make

这将会编译所有必需的源文件并生成执行文件。如果您遇到任何编译错误,请检查是否已正确安装所有依赖项。

运行项目

在成功编译项目后,您可以按以下方式运行生成的程序:

./main

替换 ./main 为实际生成的可执行文件名。您可以通过以下方式指定输入文件和输出文件:

./main input.yuv output.h264

确保替换 input.yuvoutput.h264 为您实际的输入文件和期望的输出文件名。

打开h264文件

对视频文件进行ROI编码后,用Elecard StreamEye分析码流。官网下载地址

功能概述

ROI选择和标识

  • 功能描述:用户能够在视频预览中选择一个或多个ROI区域,并对每个区域设置不同的编码优先级。
  • 输入参数:视频文件路径,ROI区域坐标和尺寸,优先级设置。
  • 输出:ROI设置参数文件,包含区域坐标和相关编码参数。

视频编码处理

  • 功能描述:根据用户定义的ROI设置,对视频进行编码处理。
  • 输入参数:视频源文件,ROI设置参数文件。
  • 处理流程
    1. 视频帧读取。
    2. 应用ROI掩模,区分不同编码区域。
    3. 调整QP值,对ROI区域使用较低QP值,非ROI区域使用较高QP值。
    4. 视频帧编码并输出。
  • 输出:编码后的视频文件。

码率和质量控制

  • 功能描述:实现动态码率控制,优化编码质量和文件大小。
  • 控制机制
    • 固定码率(CBR)控制模式。
    • 可变码率(VBR)控制模式,尤其在ROI区域。
  • 参数配置:允许用户调整全局和局部QP值,码率等。

性能要求

  • 实时性能:编码延迟不超过500毫秒。
  • 稳定性:系统应在连续操作24小时内无故障运行。
  • 兼容性:支持常见视频格式如MP4,AVI等。

用户接口

  • 图形界面:提供简洁的图形用户界面(GUI)来选择ROI区域和设置编码参数。
  • 命令行工具:提供命令行工具进行高级配置和批处理操作。

硬件要求

  • 操作系统:Ubuntu 20.04.6 LTS
  • 处理器:算能SE5
  • 内存:最小8GB RAM
  • 存储:至少100GB的可用硬盘空间

开发和部署环境

  • 开发环境:使用C/C++进行开发,利用FFMPEG库进行视频处理。
  • 部署环境:系统应能部署在算能SE5硬件上,或通过Docker容器在云平台上运行。

其他要求

  • 文档说明:提供完整的开发文档和用户手册。
  • 法律合规:确保所有编码库和工具的使用符合相关法律法规。

交付物

  • 编码后的视频编码软件(含源代码)。
  • 用户手册和开发文档。
  • ROI选择工具。
  • 维护和升级指南。

联系方式

感谢您对我们项目的关注,我们期待您的反馈与建议,请通过以下方式联系我们:

MIT License Copyright (c) 2024 Snake Konginchrist Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

本项目旨在开发一个基于感兴趣区域(Region of Interest, ROI)的视频编码系统,使用FFMPEG接口和算能SE5硬件平台。该系统允许用户指定视频中的ROI,以提升该区域的编码质量,同时在非ROI区域应用较低的质量编码以减少整体码率,从而优化带宽使用和视觉体验。 展开 收起
C++ 等 4 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/Snake-Konginchrist/roi-video-encoder.git
git@gitee.com:Snake-Konginchrist/roi-video-encoder.git
Snake-Konginchrist
roi-video-encoder
基于ROI的视频编码系统
master

搜索帮助