首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Qt项目实战

    Qt音视频开发6-ffmpeg解码处理

    一、前言 采用ffmpeg解码,是所有视频监控开发人员必备的技能,绕不过去的一个玩意,甚至可以说是所有音视频开发人员的必备技能。 关于ffmpeg解码,网上搜索到的代码绝对是一大堆一大堆,而且很多都讲得很详细,解码的函数流程图非常清晰,关于ffmpeg这块的学习本人推荐雷神的博客,分析的相当细致,我在很久以前刚用Qt+ffmpeg 解码的时候,参考的就是雷神的例子,当然这些demo其实在ffmpeg的开发包dev下的examples也是非常详细的,只不过没有什么分析过程,参考雷神的博客可以看到很多分析过程。 本人总结的解码过程: 注册解码库相关(av_register_all、avformat_network_init等) 初始化各种参数比如缓存大小等(av_dict_set) 打开视频流或者文件(avformat_alloc_context 支持qsv、dxva2、d3d11va等硬解码。 支持opengl绘制视频数据,极低CPU占用。 支持嵌入式linux。

    1.9K00发布于 2020-08-08
  • 来自专栏君正T31开发实战指南

    君正T31应用开发6:音频编解码

    1.为什么需要音频编解码? 前面提到的例子中,我们使用君正T31的设备都是直接使用API函数进行采集声音,然后直接播放声音的,其中涉及两组API,一组是AI,音频输入函数,一组是AO,音频输出函数。 这里面PCM的文件是比较大的,在某些网络带宽不是很好的情况下,可能音频桢会丢掉,导致音频出现卡顿的声音,所以我们这边音频编解码技术也就应运而生。 一般经过音频编解码的数据会比原始数据PCM文件小一倍,G711A数据格式或者AAC格式文件。 图片 图片 2.君正使用的音频编解码API 图片 图片 3.君正的音频编解码实战。 failed\n"); return -1; } fclose(file_pcm); fclose(file_g711); free(buf_pcm); return 0; } 解码使用的函数

    1.4K00编辑于 2023-05-27
  • 来自专栏音视频咖

    技术解码 | CMAF技术解码及实践

    本期的技术解码 为大家带来CMAF技术的详细解析 在当今如火如荼的直播产业中,运行着各种各样的流媒体封装及传输协议,比如广电行业应用最多的HLS、风靡互联网直播平台的RTMP、HTTP-FLV以及海外 图2.CMAF Header结构图 CMAF Header:CMAF Header用于描述每个CMAF Track解析、解码和现实等相关的配置,通常是起始于一个'ftyp'类型的box,包含一个'moov'box 为了更高效编码,通常每个音视频Fragment长度在2-6s,为了保证CMAF低延时的效果,CMAF的Segment的长度通常不会超过10-12s。 图6.CMAF Chunk数据结构图 CMAF Chunk:如图6所示,CMAF Chunk是在直播编码器中,在一个CMAF Segmetn没有完整产生的情况下可以被分成不同的块进行传输分发,用这种方法能够使每一个 CMAF Fragment能够渐进式编码、传输以及播放器的解码

    4.5K40发布于 2021-04-15
  • 来自专栏媒矿工厂

    Google 6DOF视频生成与编解码:身临其境

    本文为媒矿工厂翻译的技术文章 原标题:Google 6DOF videos review: move inside VR videos 原文链接:https://skarredghost.com/2020 /10/10/google-6dof-videos-review/amp/ 翻译整理:郭帅 在SIGGRAPH 2020上,Google提出了一种新的算法[1,2]来进行6DOF VR视频的录制与编解码 6DOF视频的提出就是为了解决这些问题,用户在观看时可以自由选择观看的角度和位置,但是也带来了更多的技术挑战:6DOF视频难以采集和传输。 本文中Google不仅提出了拍摄6DOF视频的方式,而且发展了能够有效编解码6DOF视频的算法。 Google 6DOF videos review: move inside VR videos!

    1.3K31发布于 2020-11-02
  • 来自专栏小黑娃Henry

    Codable编解码流程Codable编解码流程

    1, decode解码流程 1, 遵循协议Decodable后: 2.1 创建包含所有属性key的一个遵循codingKey协议的枚举(编译器生成) 2.2 创建init(_:,_ forKey)的方法 (编译器生成) 3, 把data转为字典,通过字典生成_decoder 4,_decoder去调用通用unbox 5.1,基本类型根据各自的unbox完成解码后完成赋值; goto:done 5.2 对象类型则调用init(_:,_ forKey)方法-(编译器生成); goto:6 6,根据decoder获取container 7.1,container调用对应基本类型decode-> unbox 3,创建encoder, 4,调用通用box方法 5.1 基本类型直接完成编码; goto:done 5.2 对象类型调用encode(_,_ forKey)方法(编译器生成);goto:4 6,

    1.5K20发布于 2021-08-09
  • 来自专栏网络技术联盟站

    全网最优质的Base64 编码和解码教程,附6个示例!

    使用字母 A 到 Z、a 到 Z、0 到 9 和 + 和 /,总共 64 个 ASCII 字符来表示从 000000 到 111111 的二进制,每个非最终 Base64 数字正好代表 6 位数据。 (3)参数 -n 或 –noerrcheck 默认情况下,base64 在解码任何数据时都会检查错误,可以使用 –n 或 –noerrcheck 选项在解码时忽略检查。 base64 输出: d2xqc2xtei5jbgo= [202111192309584.png] 解释 编码方法使用几个步骤来转换输入: 输入字符被转换为 8 位二进制值 整组二进制字符串拆分为 6 位二进制值 转换为十进制 每个十进制值都通过 base64 索引表转换为 base64 字符 示例 2 – 基本解码解码字符串,只需使用参数 –decode 将编码值传递给 base64,它解码刚刚输入的字符串 ] 示例 6 – 使用 base64 的简单身份验证 使用上面的编码和解码方法,就可以实现一个简单的认证系统。

    7.4K30发布于 2021-11-20
  • 来自专栏云云众生s

    解码PostgreSQL监控

    对 PostgreSQL 的性能问题进行监控至关重要。PostgreSQL 是一个强大的开源关系数据库系统,以其健壮性、可扩展性和对可扩展性和标准符合性的强调而脱颖而出。在本 PostgreSQL 监控指南中,我们将介绍应监控的关键 PostgreSQL 指标、PostgreSQL 监控的最佳实践以及一些可以设置 PostgreSQL 监控的工具。

    1.1K10编辑于 2024-03-28
  • 来自专栏落叶飞翔的蜗牛

    Java编解码

    解码 Java序列化的目的主要有两个: 1.对象序列化 2.网络传输 当进行远程跨进程服务调用时,需要把被传输的对象转化为字节数组或者ByteBuffer对象。 当远程服务读取到字节数组或者ByteBuffer对象时,需要将其解码为Java对象。这就是所谓的Java对象编解码技术。 一般远程调用(RPC)很少使用Java自带的序列化进行消息的编解码和传输。 结构化数据存储格式 编码性能高 语言无关,平台无关,扩展性好 支持Java,C++和Python FaceBook的Thrift Thrift支持三种典型的编解码方式 通用二进制编解码 压缩二进制编解码 优化的可选字段压缩编解码 Marshallling 可插拔的类解析器 可插拔的对象替换技术 可插拔的预定义缓存表 无需实现

    1.3K40发布于 2021-01-14
  • 来自专栏漫漫架构路

    解码相关

    解码总结 一. 编解码 Charset类 编解码 编码:字符—>字节 解码:字节—>字符 每个文件存储在磁盘上,都会指定一种编码格式。 utf-8:**变长的字节表示形式:**使用1个字节表示英文,跟ascii完全相同;使用3个字节表示中文;最多使用6个字节表示一个字符。

    1.2K10发布于 2020-09-03
  • 来自专栏Vegout

    编码和解码

    内容目录 概念各种编码ASCII编码各个国家的编码统一编码从mysql中读取数据的编解码历程 概念 字符的三种形态 ? 字符的三种形态 图片来自:https://zhuanlan.zhihu.com/p/25435644 编码:将字符转为字节序列(abcdefg-------------> 0101010…….10010) 解码 从mysql中读取数据的编解码历程 这个是个简单的场景:中间的服务器中跑了一个javaweb项目,他把mysql中的数据拿出来,然后交给前端展示。 get的过程就是一个解码的过程,set中本来是mysql返回的经过utf-8编码得到的字节数组,ss就是通过解码得到的对应字符串。 当浏览器采用utf-8去解码gbk编码产生的字节数时,发现自己并不认识这个字节序列。于是出现了乱码,但此时,只要我们将浏览器页面编码改为gbk(html页面中可以设置字符编码),立刻就恢复了正常。

    2.3K30发布于 2019-07-03
  • 来自专栏嵌入式项目开发

    编译 ffmpeg 以支持AVS格式视频解码解码

    AVS (Audio Video Coding Standard) 格式是一种由中国主导制定的视频编码标准,全称为“中国数字音视频编解码技术标准”(China Digital Audio Video Coding 0x0000", "sample_fmt": "fltp", "sample_rate": "48000", "channels": 6, .X_222/ffmpeg-V5.X-avs23-20220222_davs2-10bit-Win10-X64-EXE.zip 播放效果: 3.2 LAVFilters增加CAVS-AVS2-AVS3解码器 vlc3.0.11.1AVS3_10-AVS2-CAVS/vlc-3.0.11.1-dev-AVS3_10b-AVS2-CAVS(TS_MKV)Win64_EXE%E8%BF%90%E8%A1%8C%E6% 增加CAVS-AVS2-AVS3解码器 链接:https://gitee.com/zhengtianbo/cavs-avs2-avs3_decoder_added_to_mpc_hc 播放效果:

    1.7K10编辑于 2025-05-27
  • 来自专栏JavaEE

    赫夫曼编码&解码

    但是这种编码方式也会有问题,就是最后传输的二进制串,对方在解码的时候,不知道哪些是要组合起来的,比如最后二进制串是101101……,到底第一位的1是单独解码呢还是要和第二位的0组合起来10才表示一个字符呢 这就造成了解码的多异性。赫夫曼编码就可以解决这个问题。 3. 压缩的方法就是将二进制字符串每8位转成一个数字再转成字节,最终得到的字节数组就是: -88,-65,-56,-65,-56,-65,-55,77,-57,6,-24,-14,-117,-4,-60,-90 赫夫曼解码: 本来是要发送i like like like java do you like a java这句话的,最终发送的是-88,-65,-56,-65,-56,-65,-55,77,-57,6, 赫夫曼编码解码注意事项: 如果文件本身就是经过压缩处理的,比如视频文件、ppt等,压缩率不会很高 赫夫曼编码是按字节来处理的,因此可以处理所有的文件 如果文件重复的内容不多,压缩率也不高

    2.2K10发布于 2020-12-01
  • 来自专栏码农心语

    nginx中的哈夫曼编解码算法-解码

    本文分三部分进行讲解,首先介绍nginx实现的哈夫曼解码算法中的状态转移矩阵的构造及利用状态转移矩阵如何进行解码的原理;接着我们结合nginx的源码来详细分析nginx的解码源码的实现原理;最后,介绍快速哈夫曼解码算法的最核心的内容 0x00, 0x01, 0x63, 0x01}, {0x00, 0x01, 0x65, 0x01}, {0x00, 0x01, 0x69, 0x01}, {0x00, 0x01, 0x6f state: 当前的解码状态,如果将待解码内容分片解码的话,那么第一个分片进行调用的时候设置*state=0,否则*state沿用上次调用返回时候的状态。 src: 本次待解码内容的缓冲区。 len: 本次待解码内容的缓冲区大小。 dst: 解码后内容的存储地址,当解码完成后,指向解码后内容的结尾处。 last: 如果调用者传入的当前缓冲区是最后一个缓冲区,那么last设置为1。    每次调用解码,如果解码成功,dst参数会指向解码后内容的结尾处,所以解码后内容的长度需要通过dst调用前和调用后之间的差值来计算得到。  

    45610编辑于 2024-06-06
  • 来自专栏音视频开发技术

    FFmpeg编解码处理2-编解码API详解

    FFmpeg编解码处理1-转码全流程简介 [2]. FFmpeg编解码处理3-编解码API详解 [3]. FFmpeg编解码处理4-视频编码 [4]. FFmpeg编解码处理5-音频编码 基于FFmpeg 4.1版本。 4. 编解码API详解 解码使用avcodec_send_packet()和avcodec_receive_frame()两个函数。 因为解码器中有缓存帧,当前输出的frame并不是由当前输入的packet解码得到的,所以这个frame->pkt_dts没什么实际意义,可以不必关注 avcodec_send_packet()发送第一个 avcodec_send_packet()多次发送NULL并不会导致解码器中缓存的帧丢失,使用avcodec_flush_buffers()可以立即丢掉解码器中缓存帧。

    3.1K20发布于 2019-03-28
  • 来自专栏合集

    bmp图片解码

    bmp是window上最简单的图片了,没有压缩,而且易于读取,实现一个简单的bmp图片解码器是学习图像处理的入门必备啊。 再之后按照bmp结构进行解码即可,比如前两个字节解码。 这里需要用到Python里面对字节解码的函数,在模块struct里面有pack和unpack两个函数,pack用来编码,将字符串变为字节,而unpack将字节解码成字符串。 sanyuesha.com/2018/03/10/why-pack-unpack 之后继续进行解码,读取四个字节,file.read(4),这记录的是文件的大小。 简而言之,解码器实现原理简单,主要在于弄懂bmp的结构和字节的解码! 写了一个很简单的例子,可以实现读取rgb的值并写入txt的功能,如有需要请自行下载! www.toseek.cc/py/1.py

    3.1K10发布于 2019-05-05
  • 来自专栏技术博文

    JS编码解码

    此方法的解码为decodeURI() 二、定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。 提示和注释 提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。 此方法解码方式decodeURIComponent

    9.1K61发布于 2018-04-10
  • 来自专栏全栈程序员必看

    视频编解码学习之二:编解码框架「建议收藏」

    图像组编码对象 6. 对于YUV(4:2:0)编码,CBP通常6比特长,每个比特对应一个块,当某一块的变换量化系数全为零时,其对应比特位值为0,否则为1。 视频编解码关键技术 预测:通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余。 变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余。 帧间预测流程: 运动补偿:给定MV和参考帧,为待解码块从参考帧上获取预测块。 (Motion Vector,MV) 记录预测残差: 运动补偿(Motion Compensation,MC) 根据运动矢量获取预测块 根据预测残差计算重构块: 6.

    2.2K20编辑于 2022-09-06
  • 来自专栏全栈程序员必看

    音频解码SBC_立体声音频编解码芯片

    SBC音频编解码算法浅析 1. 滤波器组可设定成4或8个子带 子带信号的量化采用比特分配器和自适应脉冲编码器组调制 可用的比特位数和编码器的块数都是可配置的 编码后的数据由比特流打包器打包,以有线或无线方式传输 解码是编码的逆过程 每个尺度因子分别对应一个子带 量化后的子带采样数据需要进行打包,打包方式可以是分段或不分段 多相解析器的代码实现较为复杂,流程图如下[具体请看参考文献2的Appendix B]: 2.2 SBC解码算法实现 解码过程是编码过程的逆 多相综合器的代码实现较为复杂,流程图如下[具体请看参考文献2的Appendix B]: 3 SBC解码算法在某蓝牙主设备上的应用 3.1 帧格式 3.2 参数选择

    2.9K20编辑于 2022-10-01
  • 来自专栏企鹅号快讯

    维基解码(1)

    今天有料君为大家开始一系列的维基解码文章,为大家讲解一下好像很神秘的IT 编程 究竟是什么东西。 我会以比较beginner-friendly的编程语言Python说起。Python语法简单,易用。 改成下面的 相比刚刚,我们在第一行加多了一个,这个是指明字符集,它的意思就是跟解析器说,我现在要输出的有中文,你来负责翻译一下的意思 保存一下,我们再来运行一下程序,就能看到我们的大中文:你好 是不是很6

    92880发布于 2018-01-05
  • 来自专栏ReganYue's Blog

    【蓝桥杯】(python)解码

    方法一 def char2num(s): digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8

    1K10发布于 2021-09-16
领券