FFMPEG学习【libavutil】:Crypto and Hashing(三)

Linux C/C++实战进阶:AI Infra、后端与音视频开发核心能力栈解析 这类教程最值得先看的不是它覆盖了多少方向,而是它能不能帮你把零散的知识点,串成能解决实际问题的工程能力。特别是对于工作1-5年、想从“会写代码”转向“能搞定项目”的程序员,或者应届生想快速补齐项目经验,核心不是学更多新名词,而是搞清楚从原理到上线的完整链条里,每一步到底在做什么、为什么这么做、以及出了问题怎么查。 下面我会围绕Linux C/C++开发,拆解几个主流方向(AI基础设施、后端、音视频)的实战进阶路径。重点不是罗列知识点,而是告诉你每个阶段该优先掌握什么、怎么验证、以及从学习到落地的关键跳板在哪 阅读详情

一、LZO

一)、宏

#define  AV_LZO_INPUT_PADDING   8

#define  AV_LZO_OUTPUT_PADDING   12


二)、函数

int  av_lzo1x_decode (void *out, int *outlen, const void *in, int *inlen)
解码LZO 1x压缩数据。

参数:out:输出缓冲

    outlen:输出缓冲区的大小,剩余的字节数在这里返回

    in:输入缓冲

    inlen:输入缓冲区的大小,此处返回的字节数

返回:0成功,否则上面的错误标志的组合

确保所有缓冲区都被适当填充,必须提供AV_LZO_INPUT_PADDING,必须提供AV_LZO_OUTPUT_PADDING附加字节。


三)、av_lzo1x_decode返回的错误标志

#define  AV_LZO_INPUT_DEPLETED   1
解码完成之前达到的输入缓冲区结束


#define  AV_LZO_OUTPUT_FULL   2
解码数据不适合输出缓冲区


#define  AV_LZO_INVALID_BACKPTR   4
对先前解码的数据的引用是错误的


#define  AV_LZO_ERROR   8
压缩比特流中的非特定错误



二、RC4

一)、数据结构

struct   AVRC4{
uint8_t state [256];
int  x;
int  y;
}

二)、函数

AVRC4 *  av_rc4_alloc (void)
分配AVRC4上下文。


int  av_rc4_init (struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt)
初始化AVRC4上下文。

参数:key_bits:必须是8的倍数

    decrypt:0加密,1解密,目前没有任何效果

返回:成功为零,否则为负值


void  av_rc4_crypt (struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
使用RC4算法进行加密/解密。

参数:count:字节数

    dst:目标数组,可以等于src

    src:源数组,可以等于dst,可能为NULL

    iv:不用(还)用于RC4,应为NULL

    decrypt:0用于加密,1用于解密,不(尚)使用



三、TEA

一)、函数

struct AVTEA *  av_tea_alloc (void)
分配AVTEA上下文要释放结构体:av_free(ptr)


void  av_tea_init (struct AVTEA *ctx, const uint8_t key[16], int rounds)
初始化AVTEA上下文。

参数:ctx:AVTEA上下文

    key:用于加密/解密的16字节的密钥

    rounds:TEA的回合次数(64个是“标准”)


void  av_tea_crypt (struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
使用先前初始化的上下文加密或解密缓冲区。

参数:ctx:AVTEA上下文

    dst:目标数组,可以等于src

    src:源数组,可以等于dst

    count:8字节块数

    iv:CBC模式的初始化向量,如果NULL,则使用ECB

    decrypt:0加密,1解密

    


二)、变量

const int  av_tea_size

m3u8及TS文件下载解密:用FFmpeg解密合并m3u8中ts文件(三) 使用ffmpeg命令时遇到的一些奇怪问题 数据错误 [crypto @ 000000000054de40] Unable to open resource: D:\temp\vd201906291\O7rSBp5 l5847008.ts [hls,applehttp @ 0000000000532c40] Failed to open segment 8 of playlist 0 [hls,ap... 阅读详情

相关推荐

电源工程师必看:平均电流模式BUCK双环控制详解(从传递函数到Psim仿真)

本文详细解析了平均电流模式BUCK变换器的双环控制策略,从传递函数推导到Psim仿真实现。针对电源工程师关注的环路设计和稳定性问题,深入比较了电压模式、峰值电流模式和平均电流模式的优缺点,并提供了12V/3A BUCK变换器的完整设计案例,帮助工程师掌握平均电流控制这一中高功率应用的首选方案。

weixin_42696271的博客 398

FFMPEG学习【libavutil】:Crypto and Hashing(一)

一、AES 一)、函数 struct AVAES *  av_aes_alloc (void) 分配AVAES上下文。 int  av_aes_init (struct AVAES *a, const uint8_t *key, int key_bits, int decrypt) 初始化AVAE

一世豁然的专栏 1151

Simplicity Studio V5与EFR32BG22蓝牙开发环境实战指南

本文详细介绍了Simplicity Studio V5集成开发环境与EFR32BG22蓝牙芯片的开发实战指南。内容涵盖开发环境安装、SDK配置、项目创建、调试烧录、外设驱动集成及常见问题解决方案,帮助开发者快速上手物联网蓝牙应用开发,并充分利用EFR32BG22的低功耗与高集成度特性。

v5w6x的博客 320

使用ffmpeg将视频切片并加密

前提条件,需要有ffmpeg,最新版格式工厂安装后,会自动装上ffmpeg 新建一个记事本,取名enc.key(名字可以随便取),添加16个字节的秘钥,如 qwertyuiop123456 新建一个文件,enc.keyinfo,添加如下内容 http://localhost:8080/enc.key enc.key 这里需要把enc.key和enc.keyinfo放在同一目录下 ...

zyxzj的博客 5108

dmx512协议c语言编程,DMX512协议+c程序代码.pdf

DMX512 协议1.协议简介DMX 是Digital MultipleX 的缩写 ,意为多路数字传输。DMX512 控制协议是美国舞台灯光协会(USITT)于1990 年发布的灯光控制器与灯具设备进行数据传输的工业标准 ,全称是 USITT DMX512(1990) ,包括电气特性、数据协议、数据格式等方面的内容。2. 电气特性和物理层2.1. 电气特...

weixin_39928993的博客 2545

小曾WRF自学日记(3)渐入佳境 ——WRF实例-数据下载与WPS前处理

ww

weixin_46297571的博客 1480

FFmpeg:M3U8的AES加密

hls_playlist_type vod #vod是点播,表示PlayList不会变。hls_segment_filename "file%d.ts" #每个小段的文件名。-hls_time 10 #将test.mp4分割成每个小段多少秒。playlist.m3u8 #生成的m3u8文件。这样生成的hls视频文件,如果不开启服务器上的。2、目的是生成一个enc.key文件。enc.key文件一定要放在服务器上。生成后记录下来这个字符串。4、执行ffmpeg命令。

桃花岛主的博客 684

如何制作DOS启动盘 U盘制作DOS启动盘 HP-U盘启动DOS7 详细步骤教程 Intel网卡使用软件 bootutil lanconfig eeupdate Intel网卡修改MAC地址教程

制作DOS启动盘不是一项复杂的任务,只要按照以下简单的步骤进行操作,您就可以自己动手制作一个DOS启动盘。

lcy524514826的博客 897

ffmpeg检测文件是否损坏_[音视频] 下载M3U8加密视频文件

0. 网页视频播放器的演进随着浏览器的逐步迭代,网页播放视频方案也一直不断演进。从早期的MediaPlayer到Flash,再到video标签,我们可以更方便的在网页中播放视频。1. HLS协议在浏览器中,HLS协议的video标签是没有保存功能的(源码地址)。所以不能直接在浏览器中下载媒体文件,但是仅仅这一点是不够的,用户可以方便的拿到云存储上的视频地址,下载到本地即可...

weixin_39975900的博客 1646

西门子PLC与汇川SV660P伺服速度模式配置实战指南

本文详细介绍了西门子S7-1200 PLC与汇川SV660P伺服驱动器在速度模式下的配置实战指南。从硬件接线、伺服参数配置到TIA Portal软件组态和PLC程序编写,提供了全面的操作步骤和实用技巧,帮助工程师快速解决伺服系统调试中的常见问题,确保系统稳定运行。

weixin_30316097的博客 500

Anthropic三件套重构AI工作流:Claude Code、Design与桌面宠物实战指南

AI协作已从单点工具迈入系统化工作流阶段。理解AI作为‘协作者’而非‘执行器’的本质,是提升工程效率的关键前提;其核心在于对任务调度、自适应推理与人机交互边界的重新定义。Claude Code的xhigh effort机制体现了分层推理的工程智慧,Claude Design以HTML为原生设计语言实现设计-代码一体化,而桌面宠物则将抽象的token消耗具象为可感知的硬件反馈。这些能力共同指向一个趋势:AI工作流正从prompt调参走向契约式委派、从界面割裂走向跨模态统一。本文结合Opus 4.7最新实践,解

a4512138的专栏 485

fatal error: libavutil/avconfig.h: No such file...

编辑一个avconfig.h放到libavutil目录里就解决了报错问题;avconfig.h内容如下: /* Generated by ffconf */ #ifndef AVUTIL_AVCONFIG_H #define AVUTIL_AVCONFIG_H #define AV_HAVE_BIGENDIAN 0 #define AV_HAVE_FAST_UNALIGNED 0 #endif /* AVUTIL_AVCONFIG_H */ ...

athrunsunny的博客 3301

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f架构,显著提升模型精度与推理效率

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

FJN110的博客 113

FFMPEG学习【libavutil】:Crypto and Hashing(五)

一、Adler-32 一)、函数 unsigned long  av_adler32_update (unsigned long adler, const uint8_t *buf, unsigned int len) av_pure 计算缓冲区的Adler32校验和。 参数:adler:初始校验和值     buf:指向输入缓冲区的指针

一世豁然的专栏 896

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

FFMPEG学习【libavutil】:Crypto and Hashing(四)

一、TWOFISH 一)、函数 struct AVTWOFISH *  av_twofish_alloc (void) 分配AVTWOFISH上下文要释放结构体:av_free(ptr) int  av_twofish_init (struct AVTWOFISH *ctx, const uint8_t *ke

一世豁然的专栏 602

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

FFMPEG学习【libavutil】:Crypto and Hashing(二)

一、函数 struct AVCAST5 *  av_cast5_alloc (void) 分配AVCAST5上下文要释放结构体:av_free(ptr) int  av_cast5_init (struct AVCAST5 *ctx, const uint8_t *key, int key_bits)

一世豁然的专栏 537

如何从零编译并跑通 yuzu:一份 7 步走完的配置清单

仓库拉下来了,终端光标闪了半天,第一条命令该敲什么?yuzu 是一款任天堂 Switch 模拟器,它在 PC 上用软件重建 Switch 的 CPU、图形、音频这些子系统。想真正玩到游戏,路子只有一条:源码编出来、密钥放到位、设置里挑几个参数。下面全部按 Linux 环境走。 ## 从源码到能跑的模拟器:7 条命令 yuzu 用 CMake 加 C++20 构建,第三方依赖不少:Boost、f

gitblog_00399的博客 1005

Learn Harness Engineering:用 Clean State Checklist 为每个 Agent 会话画上干净的句号

在多会话(multi-session)Agent 工作流中,会话结束时的仓库状态直接决定下一个会话的启动效率与工程质量。本文以 learn-harness-engineering 仓库中的 [clean-state-checklist.md](https://link.gitcode.com/i/9792a926b92da077884ce238cab00880) 模板为核心,系统讲解"干净状态(C

gitblog_00388的博客 416

linux arm64 Qt6/PySide6 WebEngine 支持 webrtc -h264 编译参考

3、GCC10+,CMake20+,nodejs20+ ,这些看系统升级的版本,达不到需要源码编译安装。使用的qt6开发,默认的浏览器插件qtwebengine是不支持webrtc,需要自己手动编译源码。客户端程序,需要运行在国产化机器上,程序里有web模块,并且需要播放webrtc的视频。2、Linux 6.7版本以后才支持arm64,并且需要在Debian系统下。4、只要不报错,继续执行就可以。严格参考官方文档的支持环境可行性!银河麒麟V10 aarch64。把整个目录覆盖到QT目录下即可。

hellozp的专栏 3904

ffmpeg问题收集

libavutil/avconfig.h是自动生成的 /* Generated by ffconf */

yuanfen139re的专栏 1406

avlib java_fatal error: libavutil/avconfig.h: No such file...

根据这位仁兄的记录,可以在android程序里调用ffmpeg的avcodec_version()函数;下载了最新版的ffmpeg源码(2.4.1),在cygwin里用NDK编译时可能会报错,报错如下;your_name@AP-CHN-LP140129/cygdrive/c/Workspace_my/TestApp$ndk-buildAndroidNDK:WARNING:jni/Andro...

weixin_29178069的博客 1603

Libavutil详解:理论与实战

libavutil 是一个实用库,用于辅助多媒体编程,本文记录 libavutil 库学习及 demo 例程展示。libavutil 是一个实用库,用于辅助多媒体编程。此库包含安全的可移植字符串函数、随机数生成器、数据结构、附加数学函数、加密和多媒体相关功能(如像素和样本格式的枚举)。libavcodec 和 libavformat 并不依赖此库。数学函数字符串操作内存管理相关数据结构相关错误码及错误处理日志输出其他辅助信息,比如密钥、哈希值、宏、库版本、常量等AVLog。

明天你好的博客 2173

ffmpeg libx264_编译ffmpeg以获得极佳性能

背景Gemfield最近尝试使用python封装的ffmpeg库(PyAV)来进行mp4文件、rtmp协议及其它协议的decode,具体来说就是将mp4文件(或者rtmp协议的数据,下同)进行demux并逐帧decode。然而在这期间发现了一些decode的性能问题。这些问题概括起来就是2点:python封装的ffmpeg是否能够利用到多核CPU的并发优势?不同的编译参数能带来ffmpeg性能怎样...

weixin_39900206的博客 1072

FFmpeg 4.2 开发 报错总结

报错: 错误 1:G:\wang\work\FFmpegAndroid\app\src\main\cpp\include\libavutil\pixfmt.h:29:10: fatal error: ‘libavutil/avconfig.h’ file not found 解决办法:由于avconfig.h文件里面是空的,所以我们可以把引入的该头文件去掉 错误2:In file included from G:\wangqi\work\FFmpegAndroid\app\src\main\cpp\nati

wq892373445的博客 2089

一文弄懂FFMPEG HLS & 加密HLS

HLS打开网络连接: #0 send #1 tcp_write libavformat/tcp.c:222 #2 retry_transfer_wrapper libavformat/avio.c:355 #4 http_connect libavformat/http.c:215 #6 http_open at libavformat/http.c:317 #7 ffurl_connect at libavformat/avio.c:204 #8 ffurl_open at libavformat....

intel1985的专栏 7951
上一篇: FFMPEG学习【libavutil】:Crypto and Hashing(二)
下一篇: Android音视频API(android.media):概览
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值