读书之深入理解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…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...
HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...
云原生时代的系统设计:架构转型的战略支点
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、云原生的崛起:技术趋势与现实需求的交汇 随着企业业务的互联网化、全球化、智能化持续加深,传统的 I…...
