您当前位置: 首页 » 音视频_图像相关 » 音视频编解码 »

码流学习

分类目录归档: 码流学习

实践正当时(二)

继上次的更新 实践正当时(一)

上次的版本已经支持了:

1. 支持264
2. 简单解析nalu
3. 解码出码流
4. 拿到运动适量
5. mv ui绘制(用了ffmpeg的codecview来绘制运动适量)

这次新增有:

  1. 当前帧poc
  2. decode/disp顺序计算(在外部进行计算的,实际上可以通过vui里面的信息来计算,还没开始完全看decoder的代码,对vui也不熟悉,所以暂时实现功能先)
  3. 增加fp/bp的mv显示功能
  4. 基本播放、调试功能
  5. 能够获取当前预览帧中的具体某个16*16快的mv信息并显示出来(mv方向、位置信息)
  6. 块信息:块类型(例如,intra 8*8 L0L1),delta_qp
  7. 帧信息:avg_qp, delta_qp(这个应该还有问题,一直都是-2,看上去是从pps获取的估计哪里不对,需要继续了解一下vui语法和解码器内部*)

下一个版本准备新增:

  1. slice_type(一个硬骨头,其他参数获取会更麻烦点,因为需要看明白代码,parser组帧完成后就需要关联到picture上)
  2. 修改codecview filter,增加16*16 block绘制
  3. vui信息获取
  4. 参考信息关联(也是个硬骨头,比slice_type麻烦些*)

未来需求:

  1. 性能优化(优先级最低,除非出现不可忍受的情况)
  2. 残差图
  3. 频域图
  4. 支持265
  5. 自动化诊断码流问题(等其他功能差不多再说,这个需要大量实践经验,还需要了解vui)

实践正当时(一)

之前给自己定过一个3年左右的计划,原因很简单,不管什么上天还是入地的公司,对我来说无非就是一个打工的地方而已;随时也要做好被公司用完就丢的准备。

既然到了所谓就业歧视年龄线,那就应该拿出一定的所谓能力来,不是技术上有一些自己可以落地的时间,就是管理上有很强的的软实力。

目前来说,进入管理通道之前,该有的技术实践还是需要跟上,后续想走资源受限场景下的卡顿、画质方向的优化,所以对网络和编解码相关有一个感性到浅层的了解时必须的。

为了了解编解码,为了不受到一些所谓的技术专家和算法专家的歧视,业余时间自己倒腾一个码流分析工具,同时也是为了自己可以用。

目前是ffmpeg + duilib来做的,首先我想当排斥做界面,一方面我自己不感兴趣,另一方面这东西要做深门槛很高,奈何这玩意入门门槛太低,庄家太多受不了这种乌烟瘴气的环境。

用ffmpeg来做码流处理,主要是因为解码器开源,可以看到代码也能试着去按照自己的需求改,另一个确实什么更快又更好的选择。

目前完成的功能有:

  1. 支持264
  2. 简单解析nalu
  3. 解码出码流
  4. 拿到运动适量
  5. fuck ui绘制(用了ffmpeg的codecview来绘制运动适量)

接下来要做的功能:

  1. 拿到qp
  2. 拿到参考信息,帧级,块级
  3. vui信息解析

后续需要完成的功能:

  1. 性能优化(优先级最低,除非出现不可忍受的情况)
  2. 残差图
  3. 频域图
  4. 支持265
  5. 自动化诊断码流(等其他功能差不多再说,这个需要大量实践经验,还需要了解vui)

ffmpeg + vs2017 编译(持续更新)

前言

2022的计划,就是开始做个小工具,拿来分析es流,主要通过解码器解码es流,来获取编码中一些过程,比如预测方向,slice qp等等。当然也包括最基本的parser,虽然这块会有很多bug(只要是字节流相关的代码都很容易出现解析和打包问题)

所以现在最先需要解决的是ffmpeg的编译,然后再找一个稳定简易的界面库来先基本完成264的码流解析和解码工作。

脚手架选择

windows terminal

msys2

vs 2017

安装

略过

编译

配置

windows terminal

msys2

这里需要说明的是,msys2现在支持ucrt和mingw64两种链接方式,区别在于前者使用系统自带的crt链接到编译出来的库中,后者使用msvs的。目前还是继续使用mingw64的版本

#先更新一下
pacman -Syu

#库管理工具
pacman -S pkgconf diffutils


pacman -S make

#sdl2必须品
pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-toolchain

vs 2017

其他

关于ffplay的编译

由于msys2自带的sdl2包和本地vs编译环境可能存在一些不兼容的情况,所以有两种办法。所以需要单独下载sdl2编译后,再创建ffplay的vs工程来做。

2022-01-08 | | 爱捣腾的小玩具, 码流学习, 编码技巧, 音视频_图像相关, 音视频编解码

ffmpeg + vs2017 编译(持续更新)已关闭评论