读书之深入理解ffmpeg_简单笔记2(初步)
再回看第一遍通读后的笔记,感觉还有很多的细节需要一一攻克,。
mp4的封装格式,解析方式。
flv的封装格式,解析方式。
ts的封装格式,解析方式。
第四章 封装和解封装
4.2 视频文件转flv (头文件和文件内容)(直播点播场景)
文件头 (flv标签,文件版本,音频,视频标记,数据偏移等)
文件内容(FLVTAG) = header(tag排列方式) +body (实际flvtag格式)
有三种tagType :音频,视频,脚本数据
ffmpeg -i ac3.mp4 -c copy -f flv out.flv
注意有没有报错,ac3音频不支持flv
ffmpeg -i ac3.mp4 -vcodec copy -acodec aac -f flv out.flv
把ac3 音频转成aac进行封装到flv
生成关键索引flv (yamdi工具,或者ffmpeg)
ffmpeg -i test.mp4 -c copy -f flv -flvflags add_keyframe_index out1.flv
flv分析工具(FlvParse, FlvAnalyzer,ffprobe)
ffprobe.exe -v trace -i out1.flv
可以分析到,flv中存储的数据,存储keyframe 关键帧的位置和时间戳。
4.3 视频文件转MPEG-TS (分割小块,使用FEC技术)
TS分析比较简单,主要分析PES层,TS层的头部
MPEG-TS muxer封装相关参数
MPEG-TS 格式分析工具(EasyICE, DVB Inspector)
4.4 视频文件转HLS (http实时流,m3u8,支持加密)
从apple官网获取信息。
流分解为一连串基于htttp的小文件。
扩展的M3u列表描述信息,ts文件实际流。
m3u8 文件,标签,版本,分片时长,切片序列,每个分片,等。。。
hls muxer封装相关参数
ffmpeg.exe -i test.mp4 -c copy -f hls -bsf:v h264_mp4toannexb out2.m3u8
h264_mp4toannexb 是MPEG-TS要求的码流封装格式,h.264 Annex B标准格式
ffmpeg.exe -i test.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -start_number 300 out2.m3u8
设置第一个分片的序列号 300
-hls_time 10 设置转码切片长度10s,gop不均匀导致时长不均匀。
-hls_list_size 3 可以控制m3u8列表中TS分片的个数。
-hls_wrap 3 分片号等于这个时则回滚
-hls_base_url http://192.168.0.1/live/ 设置写入ts切片文件的路径
-hls_segment_filename test_outpur-%d.ts 切片文件名设置
-hls_flags 配合子参数,正常文件索引,删除过期切片,等各种设置
delete_segment 删除不在m3u8列表中的旧文件
ffmpeg -f lavfi -i testsrc2=s=176x144:r=15 -vcodec libx264 -g 30 -r:v 15 -f hls -hls_time 2 -hls_list_size 4 -hls_flags delete_segments -t 30 out5.m3u8
raund_durations 子参数,切片信息的duration为整数值
discont_start 子参数,切片信息前插入discontinuity 用于相邻ts不连续切片
omit_endlist 子参数,文件末尾不加endlist 标签
split_by_time 子参数,根据hls_time参数设定的数值作为秒数参考对ts进行切片,不一定遇到关键帧。 (影响首帧画面问题)
strftime 子参数,设置hls切片文件名,m3u8文件切片信息文件名。 用生成ts切片当前系统时间。
method 子参数,method put 设置上传http的方式,配合nginx,推流使用。
多码率hls
ffmpeg -i test.mp4 -b:a:0 32k -b:a:1 64k -b:v:0 1000k -map 0:a -map 0:a -map 0:v -f hls -var_stream_map "a:0,agroup:aud_low,default:yes,language:ENG a:1,agroup:aud_high,language:CHN v:0,agroup:aud_low" -master_pl_name master.m3u8 -t 30 out%v.m3u8
4.5:视频文件切片 segment (ss, -t)
segment_format 指定切片的格式。
segment_list和segment_list_type 指定切片索引列表。 (ffconcat,flat,csv,m3u8格式文件索引)
reset_timestamps 设置切片时间戳归零。
segment_times 按照时间点切片
ss和t配合,output_ts_offset指定输出的start_time
ffmpeg.exe -i test.mp4 -ss 8 -t 10 -output_ts_offset 120 out6.mp4 (开始输出的时间已经变了,第120s)
4.6:提取AAC,h264, h265等流
-vn /-an / -an -bsf hevc_mp4toannexb(转成标准的annex B格式)
4.7:关注系统资源
第五章:编码与转码
5.1: h264预设参数,编码优化,控制关键帧,设置内部参数,控制码率设置(可变,恒定)
5.2:硬件优化(可以试试 NVIDIA GPU硬编解码,intel QSV,树莓派,macOS)
5.3:输出MP3,相关参数,设置编码质量,设置平均码率编码ABR
5.4:输出AAC (FDK-AAC(CBR,VBR,),(LC,HE,HEv2) )
5.6:系统资源
第六章:流媒体技术
6.1 rtmp(tcp)
6.2 rtsp(tcp、udp)
6.3 http流
6.4 tcp/udp流
6.5 多路流(tee)
6.6 自适应码率流(DASH,HLS,HDS)
第七章:bitstream过滤器
7.1 avcodec解析器parser和bitstream的区别
7.2 ADTS和ASC (AAC格式处理) aac_adtstoasc
7.3 Annex B和AVCC (h265(HEVC)/h264(AVC)格式处理) mp4toannexb
hevc设置metadata的过滤器 hevc_metadata
7.4 PPS SPS VPS 存储位置 (dump_extra)
7.5 trace_headers 码流分析工具(是头部信息?)
例如需要获取pps sps的相关信息
7.6 filter_units 视频处理NALU信息
第八章:滤镜 (AVFilter)
8.1 滤镜表达式
8.3 相关滤镜练习
8.3.1 文字水印,图片水印
8.3.2 画中画
8.3.3 多宫格
8.3.4 视频字母
ASS字母写入视频
8.3.5 3D相关处理
8.4 视频截图
8.4.1 vframes 参数截取一张图片
8.4.2 fps滤镜定时获取图片
8.5 音频滤镜(多声道)
8.5.1 双声道合并单声道
8.5.2 双声道提取
8.5.3 双声道转双音频流
8.5.4 单声道转双声道
8.5.5 两个音频源合并双声道
8.5.6 多个音频合并为多声道
8.6 音频音量
8.6.1 音频音量获得
8.6.2 音频波形(单声道,多声道)
8.7 生成测试源数据
音频测试流
视频测试流
8.8 音视频倍速处理
atempo 音频速度处理
setpts 视频速度处理
8.9 云剪辑相关技术
定格帧
透明视频兼容(透明处理)
隔行交错视频处理
HDR视频兼容处理(视频新标准)
雪碧图和webVTT
缩略图
filter_complex 复杂渲染(可以汇总上面的指令)
色度抠图(蒙版抠图,调色,透明度调整)
动态缩放
画质监测 psnr ssim libvmaf计算等
滤镜动态调整(zmq)
深度学习(dnn_processing 超分,去雨,去雾等处理) DNN环境部署及深度学习模拟文件
第九章:采集设备
linux,macOS,windows音视频采集设备查看和使用。
相关文章:
读书之深入理解ffmpeg_简单笔记2(初步)
再回看第一遍通读后的笔记,感觉还有很多的细节需要一一攻克,。 mp4的封装格式,解析方式。 flv的封装格式,解析方式。 ts的封装格式,解析方式。 第四章 封装和解封装 4.2 视频文件转flv (头文件和文件内容࿰…...

ELK+kafka+filebeat企业内部日志分析系统搭建
看上面的拓扑图,我们至少准备七台机器进行下面的实验项目。 机器主要作用分布如下: 三台安装elasticsearch来搭建ES集群实现高可用,其他机器就依次安装filebeat,kafka,logstash和kibana软件 一、部署elasticsearch来搭建ES集群 1.安装jdk 由于ES运行…...

勒索检测能力升级,亚信安全发布《勒索家族和勒索事件监控报告》
评论员简评 近期(12.08-12.14)共发生勒索事件119起,相较之前呈现持平趋势。 与上周相比,近期仍然流行的勒索家族为lockbit3和8base。在涉及的勒索家族中,活跃程度Top5的勒索家族分别是:lockbit3、siegedsec、dragonforce、8base和…...
编译原理复习的有用链接
2024年1月7日,考完编译原理,是时候和考试时候的她说再见了,整理一些收藏夹里的链接和思考吧 实验看这里: 编译原理_HNU岳麓山大小姐的博客-CSDN博客 课后习题看这里: 编译原理作业答案github LL1文法复习 [编译原…...

不带控制器打包exe,转pdf文件时失败的原因
加了注释的两条代码后,控制器会显示一个docx转pdf的进度条。这个进度条需要控制器的实现,如果转exe不带控制器的话,当点击转换为pdf的按钮就会导致程序出错和闪退。 __init__.py文件的入口...
Python 注释的方法
在Python中,有两种常见的注释方法: 单行注释:使用#符号来注释一行代码。在#符号后面的内容将被视为注释,不会被解释器执行,如: # 这是一个单行注释 print(hello world!) # 打印字符串多行注释࿱…...
webman插件创建
webman插件创建 介绍 应用插件实际上是一个完整的应用,它能以插件的形式安装到主项目中,使主项目快速获得某个模块功能。 例如:主项目需要一个问答系统,则可以安装一个问答应用插件,需要一个商城系统,则安…...

大模型迎来“AppStore时刻”,OpenAI给2024的新想象
一夜之间,OpenAI公布了多个重磅消息,引发市场关注。 钛媒体App 1月5日消息,今晨,OpenAI公司向所有GPT开发者们发布一封邮件称,下周将上线自定义的“GPT Store”商店,这有望推动ChatGPT开发者生态不断完善。…...
ubuntu解决在pycharm上使用jupyter无法导入虚拟环境中的包的问题
ubuntu解决在pycharm上使用jupyter无法导入虚拟环境中的包的问题 根本原因是jupyter 没有和他对应的kernel 需要先使用命令行建立kernel 下载ipykernel pip install ipykernel 首先激活conda conda activate然后添加你的kernel到虚拟环境 python -m ipykernel install -…...

探索2024年软件测试的几大主导趋势
进入2024年,考虑影响测试环境的问题至关重要。这种思考将成为团队了解主要瓶颈和实现当今不断提高的期望的首要因素。 01 了解关键测试瓶颈 毋庸置疑,现代团队需要不断创新、适应和拥抱最新趋势,以保持竞争力并提供以客户为中心的解决方案。尽…...
Linux C语言 48-信号总结
Linux C语言 48-信号总结 本节关键字:Linux、C语言、常用信号 相关C库函数:printf、signal、kill Linux中都有哪些信号 信号在Linux操作系统中是很重要的,信号的产生方式可以是来自键盘、由软件条件产生、调用硬件异常产生。来自系统函数调…...
【vue技巧】之如何让mixin的data 比本身vue的data优先级要高
GPT4.0国内站点:海鲸AI 在 Vue 中,当组件和 mixin 包含有冲突的选项时,这些选项将以一定的方式合并。对于 data 选项,组件自身的 data 会优先级更高,这意味着如果组件和 mixin 中出现了相同的字段,组件的数…...

全解析阿里云Alibaba Cloud Linux镜像操作系统
Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版,针对阿里云服务器ECS做了大量深度优化,Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS,Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…...
什么是数据结构?
1、一种非常经典的数据结构。 栈数据结构:stack 2、什么是数据结构? 数据结构通常是:存储数据的容器。而该容器可能存在不同的结构。 数据结构和 java 语言实际上是没有关系,数据结构是一门独立的学科。 在大学计算机专业中&#…...
GOOS=darwin 代表macOS环境
GOOSdarwin 是一个环境变量设置,表示目标操作系统为 macOS。 在Go语言中,可以使用环境变量 GOOS 来指定目标操作系统,用于交叉编译或跨平台开发。darwin 是指苹果公司的操作系统系列,主要是 macOS。 通过设置 GOOSdarwin&#x…...

hfish蜜罐docker部署
centos 安装 docker-CSDN博客Docker下载部署 Docker是我们推荐的部署方式之一,当前的版本拥有以下特性: 自动升级:每小时请求最新镜像进行升级,升级不会丢失数据。数据持久化:在宿主机/usr/share/hfish目录下建立dat…...

我的创作纪念日——redis的历史纪录
机缘 最开始只想存留点Redis的操作信息,后来写着写着也就写多了,虽然后面很长时间由于忙就没继续写,但是还是偶尔登录看一下,有好几篇文章的浏览量还是很多的呢。 收获 收获不多,粉丝也才三十多个,浏览量感…...

【Bootstrap5学习 day10】
Flex布局 弹性盒子是CSS3的一种新的布局模式,更适合响应式的设计 创建一个弹性盒子容器 使用d-flex类,创建flexbox容器并将直接子项转换为flex项 <div class"d-flex p-3 bg-info text-white"><div class"p-2 bg-secondary"…...
2024年学习计划
2024-2-29号完成 机器视觉基础知识学习,并可以处理视觉工作中的需求。 2024-3月份学习SCARA机械手应用开发SCARA机器人-埃斯顿自动化 - ESTUN 2024-4月份继续学习python 好了,今年可以完成这三个目标就满足了 好好学习,天天向上。每天进步…...

学习笔记:C++之 switch语句
Switch语句 作用:执行多条件分支语句 语法: switch(表达式){ case 结果1:执行语句;break; case 结果2:执行语句;break; ... default:执行语句&a…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...