鸿蒙(API 12 Beta3版)【AVCodec Kit简介】 音视频编码服务

news2024/9/25 3:22:28

AVCodec kit(Audio & Video Codec Kit,音视频编解码,封装解封装原子能力)是媒体系统中的音视频的编解码、媒体文件的解析、封装、媒体数据输入等原子能力。

能力范围

  • 媒体数据输入:媒体应用可以传入文件fd、或者流媒体url,进行后续的媒体信息解析等处理。
  • 媒体基础能力(Media Foundation):提供媒体数据处理的公共基础类型,包括[AVBuffer]、[AVFormat]等。
  • 音频编码:音频类应用(比如音频通话、音频录制等)可以将未压缩的音频数据送到音频编码器进行编码,应用可以设置编码要用到的编码格式、码率、采样率等参数,控制编码的输出,达到压缩音频文件的目的。
  • 视频编码:视频类应用(比如视频通话、视频录制等)可以将未压缩的视频数据送到视频编码器进行编码,应用可以设置编码要用到的编码格式、码率、帧率等参数,控制编码的输出,达到压缩视频文件的目的。
  • 音频解码:音频类应用(比如音频通话、音频播放器等)将音频码流通过音频解码器解码,解码后的数据可以送到音频设备播放。
  • 视频解码:视频类应用(比如视频通话、视频播放器等)将视频码流通过视频解码器解码,解码后的图像数据可以送到视频显示设备显示。
  • 媒体文件解析:在媒体应用(音视频播放器等),将本地或者网络接收到的媒体文件解析,获得音视频的码流、音视频的呈现时间、编码格式、文件的一些基本属性信息等。
  • 媒体文件封装:在媒体应用(音视频录制、音频录制等),将音视频编码器编码后的码流数据封装成媒体文件(mp4、m4a),将音视频的码流、音视频的呈现时间、编码格式、文件的一些基本属性信息等按照文件格式写入应用指定的文件中。

亮点/特征

  • 系统内部数据零拷贝:在视频解码过程,AVCodec通过回调函数提供AVBuffer给应用,由应用将要解码的sample数据写入AVBuffer,在AVCodec中数据不再需要从内存拷入硬件解码器,而是直接送入解码器解码,实现系统内数据零拷贝。
  • 视频编码、解码支持硬件加速:支持H264、H265、H265 10bit的硬件编解码。

基础概念

  • 媒体文件:携带有音视频、字幕等媒体数据的文件,如.mp4、.m4a。
  • 流媒体:可以边下载,边播放的媒体传输形式,下载协议如HTTP/HTTPS、HLS协议。
  • 音视频编码:将未压缩原序列音视频数据转换为另一种格式数据,如H264、AAC。
  • 音视频解码:将一种数据格式转换为未压缩状态的原序列音视频数据,如YUV、PCM。
  • 媒体文件封装:将音频、视频、字幕等数据以及描述信息,按照某种格式要求,写入到同一个文件中,如.mp4。
  • 媒体文件解封装:将文件中的音频、视频、字幕等媒体数据读出,解析出媒体的描述信息。

使用方式

  • 视频编解码

    视频编码的输入和视频解码的输出支持Surface模式。

    在编码和解码过程中,通过回调函数通知应用数据处理的情况;如编码过程通过回调通知应用,完成一帧编码,输出编码结果AVBuffer;在解码过程通过回调通知应用输入一帧码流到解码器解码,当解码完成也会通过回调通知应用解码完成,应用可以对数据做后续处理。

    视频编解码的逻辑如图所示。

    1

  • 音频编解码

    音频编码的输入和音频解码的输出为PCM格式。

    在编码和解码过程中,通过回调函数通知应用数据处理的情况;如编码过程通过回调通知应用,完成一帧编码,输出编码结果AVBuffer;在解码过程通过回调通知应用输入一帧码流到解码器解码,当解码完成也会通过回调通知应用解码完成,应用可以对数据做后续处理。

    音频编解码逻辑如图所示。

    1

  • 文件解析封装

    在文件封装环节,应用将AVBuffer送入Codec对应的接口,执行数据封装,AVBuffer可以是由上述编码输出的AVBuffer,也可以是应用创建的AVBuffer,AVBuffer中要携带有效的码流数据和相关的时间描述等信息;

    在文件解析环节,应用从Codec对应的接口获得携带有码流数据的AVBuffer,该AVBuffer可以送入上述视频和音频编解码对应接口。

    文件封装解封装逻辑如图所示。

    2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣面试150 反转链表 II 三指针

Problem: 92. 反转链表 II 👨‍🏫 参考题解 特殊情况 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val…

【区块链+医疗健康】健康管理平台 | FISCO BCOS应用案例

如今,医疗数据的共通共享依然存在一些难点: 1. 数据碎片化,分散在各个机构和公司,难以整合和共享。 2. 数据不完整,缺乏全面的患者信息,导致决策质量下降。数据的可扩展性不足,难以长期跟踪患…

“Mutation Observer:让DOM变化尽在掌握

Mutation Observer(变动观察者) 定义 Mutation Observer是一种JavaScript API,用于异步监测DOM树的变动,包括元素的添加、删除、属性变化等。当DOM发生变动时,它可以触发回调函数,允许你对变动作出响应。 …

Ubuntu14.04安装网卡驱动

1,lspci 查看网卡型号 2,到官网下载解压,进入文件目录 3,新装的服务器会报错,提示我们没有安装make,下载缺少的gcc和make依赖,记得先执执行一下系统更新 sudo apt update && sudo apt upgrade -y sudo apt …

【css】使用CSS绘制奥运五环--巴黎奥运

使用CSS绘制奥运五环 在2024年巴黎奥运会期间,本文来使用 CSS 来画一个奥运五环。奥运五环由五个相互交叠的圆环组成,分别代表五大洲。 奥运五环是相互连接的,因此在视觉上会产生重叠效果,这也是实现五环最有挑战性的部分 HTML结…

Linux -软件包管理 下载与安装方式

1. wget下载 先下载再安装 wget命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件 当然现在更多支持用yum工具的,不过有的时候一些镜像站点不再维护一些旧版本的软件时,这时候就可以用wget可以先获取&…

Unity补完计划 之 SpriteEditer Multiple

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 1. SpriteEditer Multiple Automatic slicing - Unity 手册 这是用于裁剪图集的模式 应用之后精灵编辑器会看到Slice亮…

CSP-J 复赛 模拟题7 and 解析

1.超级素数: 题目描述 素数,又称质数,是指除 11 和其自身之外,没有其他约数的正整数。例如 2,3,5,132,3,5,13 都是素数,而 4,9,12,184,9,12,18 则不是。特别地,规定 11 不是素数(因此自然数的…

【C++进阶学习】第十二弹——C++ 异常处理:深入解析与实践应用

前言: 在C编程语言中,异常处理是一种重要的机制,它允许程序员在运行时捕获和处理错误或异常情况。本文将详细介绍C异常处理的相关知识点,包括异常的定义、抛出与捕获、异常处理的原则、以及在实际编程中的应用。 目录 1. 异常处理…

算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】

前言 调整一下做题顺序,多个章节同步进行,穿插练习。可以在各章节的专栏中找同一类。 记录 六十九【动态规划基础】。 一、动态规划理论基础学习 参考学习链接 二、509. 斐波那契数 2.1 题目阅读 斐波那契数 (通常用 F(n) 表示&#x…

屏蔽浏览器搜索出csdn相关内容的方法

屏蔽csdn搜索结果的方法 前言 鉴于你对知识质量的渴望,以及对挖掘知识金子的欲求,你一定想在浏览器结果中去除有关Csdn的全部内容😈**(确信)**,但是当你在用bing或者google搜索有没有可以屏蔽CSDN搜索结果的方法时,通…

一套基于tailwindcss的后台管理系统模板Chakra UI + React + TS

下载地址给你们: https://horizon-ui.com/#version

算法混合杂项

基础类型 可用template 投影 是有方向的 求俩直线交点 推公式 q我们不知道,已知p1 p2,正弦定理,α可以用叉积表示出来 β同理 所以我们能求出p1q 已知piq 回归到我们上一个问题,已知方向和长度,我们就能够求出Voq …

24/8/8算法笔记 不同分类算法的差异

import numpy as np from sklearn.tree import DecisionTreeClassifier from sklearn.linear_model import LogisticRegression from sklearn.svm import SVCfrom sklearn import datasets 加载数据 我们加载的是啤酒的数据 wine datasets.load_wine() wine LR逻辑斯蒂回归…

【数据结构】数组复习-二分查找法

写这篇博客的起因: 刚开始刷力扣,发现没有一个很好的做题方法,在网络上发现了这个博主的评论,如下。感觉挺适合我,所以开始复习一下数据结构。 c基础主要是看: 1.bilibili上青岛大学王卓第02周03--2.3线…

算法 二

求中点 LR,可能溢出 除以2,等同于右移一位 递归、递归的时间复杂度 母问题的规模 子问题的规模,且都相等 调用次数 不用展开看,就看一层。 归并排序 时间复杂度降低的原因:没有浪费比较。比如选择排序&#xff…

48天笔试训练错题——day44

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 单词倒排 选择题 1. A 类 IP 地址:0.0.0.0 ~ 127.255.255.255 1 字节网络号,3 字节主机号 B 类 IP 地址:128.0.0.0 ~ 191.255.255.255 2…

服务器网络磁盘挂载

一、Ping测试 先测试磁盘网络的连通性 例如:这里申请的网络磁盘是: 127.0.0.1:/shareData ping 127.0.0.1二、挂载 确认连通后,确定需要挂载的目录,这里服务器的挂载目录为:/data/share (自主选择创建目录…

【食物链】

题目 代码 #include<bits/stdc.h> using namespace std; const int N 5e410; int n, k; int p[N], d[N]; int find(int x) {if(p[x] ! x){int root find(p[x]);d[x] d[p[x]];p[x] root;}return p[x]; } int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

RaiDrive / Cyberduck 的安装破解

安装完成后&#xff0c;使用方法可以去这里看&#xff1a; Synology DS920 【外网访问】 这篇文章主要是为了解决 RaiDrive 的登录付费和 Cyberduck 的语言 所以可以尽管下载&#xff0c;盘中 RaiDrive 的免登录免费和 Cyberduck 的中文语言是没有问题的 硬盘映射程序 提…