![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
文章平均质量分 87
攻城狮百里
学无止境
展开
-
【音视频流媒体服务端开发学习指南】音视频驱动、多媒体中间件、流媒体服务器的开发,开发过即时通讯+音视频通话的大型项目
开源方案简介AppRTC服务器组成准备工作AppRTC必要软件安装(1)AppRTC必要软件安装(2)nginx代理和运行测试解决跨域问题和总结。原创 2024-04-13 22:20:09 · 992 阅读 · 0 评论 -
音视频开发_FFmpeg音视频编码
NAL 的主要目标是实现网络环境的抽象,它将VCL编码产生的数据包装成为一系列的 NAL units,以提供统一的接口适应不同的系统环境。网络抽象层不但使编码视频能适应各种传输协议和存储介质,而且还为错误恢复和包丢弃等网络友好特性的实现提供了可能。NAL 单元(NAL Units)H.264/AVC 的编码结果会被分割为一系列的 NAL 单元,每个 NAL 单元都有两部分组成,分别是一字节的 NAL 头和一个负载荷(Payload)。负载荷包含了编码的视频数据或者其他信息。原创 2024-03-27 14:44:05 · 879 阅读 · 0 评论 -
FFmpeg音视频解复用+解码
比方说,如果我们需要将一个44.1kHz的音频升采样到48kHz,我们需要相应地增加样本数量,以保证每秒钟的样本数匹配新的采样率,这种情况下就会延长整个音频的播放时间。举例来说,如果你增加了音频的采样率,每个样本表示的时间会变短,为了保持音频数据在时间上的正确展现,原有的PTS需要根据新的采样频率重新计算。例如,将一个采样率为44.1kHz的音频重采样到48kHz,如果样本数维持不变,那么每个样本表示的时间就会缩短,因此播放速率会变快,但总的播放时间不会改变。原创 2024-03-25 20:50:05 · 1214 阅读 · 0 评论 -
音视频开发_FFmpeg基石精讲
FFmpeg 抽象出了一套 API,隐藏了底层的复杂实现细节,提供了相对简单的接口供开发者使用。例如,不管背后具体是什么编解码器,开发者都可以通过统一的等函数来执行操作。总而言之,即使 FFmpeg 是用 C 语言编写的,它也在设计上模拟了一些 OOP 的概念,提高了代码的模块性、可读性和可维护性。然而,需要注意的是,这种模拟并不等同于真正的面向对象编程语言中的实现,如 C++,其中有对继承、多态、封装等特性的原生支持。原创 2024-03-22 17:40:07 · 1033 阅读 · 0 评论 -
音视频开发_SDL跨平台多媒体开发库实战
SDL(Simple DirectMedia Layer)是一个非常流行和强大的跨平台开发库,它主要被用来开发视频游戏和实时多媒体应用程序。它提供了一系列的功能来处理视频、音频、键盘、鼠标、操纵杆、图形硬件加速以及聚焦3D硬件的各种功能。SDL的API通过C编程语言被设计和实现,但存在多种语言的绑定,方便不同的开发者使用不同的编程语言。在音视频开发方面,SDL提供了基础的API来进行音频播放和视频的渲染。例如,SDL_Audio接口允许你设定音频设备的参数,如采样率、音频格式和声道数,然后可以将音频数据送原创 2024-03-20 20:26:05 · 628 阅读 · 0 评论 -
音视频开发_快速掌握FFmpeg
解复用和复用通常是视频编解码中不可或缺的一部分,因为它们允许开发者和用户处理复杂的多媒体数据并适应各种不同的播放设备和网络状况。复用是解复用的逆过程,它涉及将独立的音频、视频和其他数据流合成为一个单一的、通常较易于传输和存储的容器格式文件。从音频文件中提取PCM(脉冲编码调制,一种未压缩的音频数据格式)和AAC(高级音频编码,一种有损压缩的音频编码标准)数据的基本步骤。在复用过程中,每个流都将按照特定的容器格式规范来封装,这包括将适当的头信息、元数据和分隔符添加到数据中。原创 2024-03-19 16:26:22 · 915 阅读 · 0 评论 -
音视频开发_解复用基础知识、Fmpeg开发环境搭建
解复用是指将音视频数据从容器格式中解封装出来,并进行解码操作,得到原始的音频和视频信号的过程。在音视频开发中,容器格式如MP4内部包含了音频轨、视频轨以及其他元数据,解复用过程就是将这些数据提取出来并进行解码,以便播放或者进一步处理。解析文件结构:首先需要读取MP4文件的头部信息,这包括了文件的基本结构、各个数据块的位置和大小等元数据。定位音视频数据:根据文件结构信息,找到音频轨和视频轨的位置和大小。音频解复用:将音频数据从MP4格式中提取出来,并进行解码操作,得到原始的音频信号。原创 2024-03-14 15:54:56 · 866 阅读 · 0 评论 -
音视频开发_视频基础知识
YUV 格式是一种描述彩色图像的格式,将颜色信息和亮度信息分开存储。Y 表示亮度(Luminance),U 和 V 表示色度(Chrominance)。在 YUV 格式中,亮度信息决定了图像的明暗,而色度信息则决定了图像的颜色。YUV 格式在视频编解码、图像处理等领域得到广泛应用。像素是图像显示和处理的基本单元,是图像中最小的可控制的点。每个像素都有自己的颜色和亮度值,通过大量的像素排列组合,可以形成完整的图像。图像分辨率。原创 2024-03-12 15:47:55 · 832 阅读 · 0 评论 -
音视频开发_音频基础知识
PCM是脉冲编码调制(Pulse Code Modulation)的缩写,是一种常用的数字音频编码格式。线性采样:PCM是一种线性采样编码方式,即将模拟声音信号通过固定时间间隔进行采样,并将每个采样值转换为对应的数字编码。无损编码:PCM是一种无损编码方式,即不对音频数据进行任何压缩或编码,能够完整保留原始音频信号的信息。单声道/立体声:PCM可以是单声道(Mono)或立体声(Stereo),单声道的PCM每个采样点只包含一个声道的数据,而立体声的PCM则包含左右两个声道的数据。采样率和位深度。原创 2024-03-09 22:16:25 · 1053 阅读 · 0 评论 -
音视频开发基本概念
I帧、P帧和B帧:这些是视频编码中的三种关键帧类型。容器格式,有时也称为文件格式,是一种可以包含多种类型数据的格式,例如视频、音频、元数据(如标题、作者信息)、同步信息等。画面质量不仅受分辨率的影响,还与编码器的压缩效率、传输过程中的数据丢失、播放设备的显示性能等因素有关。而在视频编码中,码率一般根据分辨率、帧率和压缩格式来确定,如H.264编码的视频常见的码率范围为几百Kbps到几十Mbps。帧时长的长度通常以毫秒为单位来表示,在音视频编解码过程中,帧时长的设置会影响到视频的流畅度和音频的延迟。原创 2024-03-08 22:15:48 · 939 阅读 · 0 评论 -
音视频流媒体高级开发(FFmpeg6.0/WebRTC/RTMP/RTSP/编码解码)
开源方案简介(视频 |12分钟23秒)AppRTC服务器组成(视频 |04分钟38秒)准备工作(视频 |02分钟37秒)AppRTC必要软件安装(1)(视频 |21分钟12秒)AppRTC必要软件安装(2)(视频 |14分钟03秒)1coturncolliderapprtc(视频 |19分钟19秒)nginx代理和运行测试(视频 |11分钟08秒)解决跨域问题和总结(视频 |17分钟42秒)课程展望(视频 |09分钟10秒)原创 2024-02-27 15:12:46 · 1179 阅读 · 0 评论 -
【FFmpeg视频解码】解码数据结构及函数总结
转载自原文地址:https://www.cnblogs.com/wangguchangqing/p/5744941.html在学习的过程主要参考的是dranger tutorial,所以跟着教程在本文的最后使用SDL2.0将解码后的数据输出到屏幕上。原创 2023-11-25 15:48:04 · 100 阅读 · 0 评论 -
【FFmpeg实战】FFmpeg的H264解码源码分析:解析器
原文地址:https://www.cnblogs.com/vczf/p/14837759.html解析器主要就是解析出NALU,以及解析一些SPS、PPS等信息,下面分析一下ff_h264_parser。原创 2023-11-24 21:14:52 · 132 阅读 · 0 评论 -
【FFmpeg实战】ffmpeg播放器-音视频解码流程
封装格式上下文结构体,全局结构体,保存了视频文件封装格式相关信息:每种封装格式,对应一个该结构体:视频文件中每个视频(音频)流对应一个该结构体:编码器上下文结构体,保存了视频(音频)编解码相关信息AVCodec:每种视频(音频)编解码器(例如H.264解码器)对应一个该结构体。原创 2023-11-20 22:25:17 · 642 阅读 · 0 评论 -
【音视频基础】AVI文件格式
RIFF块中包含一系列的子块,其中有一种子块的ID为“LIST”称为LIST,LIST块中可以再包含一系列的子块,但除了LIST块外的其他所有的子块都不能再包含子块。如果是视频流(vids,由strh块得知),用一个BitmapInfo结构体表示,如果是音频流(auds),用WaveFormatEx结构体表示。RIFF和LIST块分别比普通的数据块多一个被称为形式类型(Form Type)和列表类型(List Type)的数据域,其组成如下。索引块包含数据块在文件中的位置索引,能提高avi文件的读写速度。原创 2023-11-18 16:19:10 · 338 阅读 · 0 评论 -
mp4封装格式各box类型讲解及IBP帧计算
作者 —— 靑い空゛ 出处:http://www.cnblogs.com/ailumiyana/MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术 视听对象编码的第12部分 ISO 基本媒体文件格式(Information technology Coding of audio-visual objects Part 12: ISO base media file format)原创 2023-11-16 17:13:39 · 122 阅读 · 0 评论 -
FFmpeg 硬件加速视频转码指南
首先通过命令 ffmpeg -hwaccels 查看所支持的硬件加速方法,如果你是在 Windows 平台并且使用的是我所提到的那两个版本,那么结果应该和下图相同,Linux 下的版本可能会略有不同。如果你的是 N 卡,可以选择 cuda ,如果是 Intel 核显,可以选择 qsv ,(印象里还有一个 A 卡的 amf )。基于 Windows 下演示,Linux 下也可以适用。(由于我的笔记本的核显出厂被屏蔽了,因此只能使用 N 卡硬件加速测试,如果你的核显能用,可以试试,说不定不比独显编解码慢)原创 2023-11-04 21:59:40 · 1003 阅读 · 1 评论 -
音视频开发教程 流媒体RTMP、HLS、CDN
*切片器创建一个索引文件,先下载一级Index file,里面记录了二级索引(alternate-A、Alternate-B、Alternate-C)的地址,然后客户端再去下载二级索引,二级索引中记录ts文件的下载地址。1B,RTMP的版本,一般为3,如果服务器无法识别版本号,应该回复版本3,客户端可以选择把版本降低到3,或者终止握手。握手包含三个固定大小的块,客服端发送的三个是C0,C1,C2,服务端的三个是S0,S1,S2.转载 2023-10-12 17:10:18 · 231 阅读 · 0 评论 -
2023音视频流媒体高级开发教程
本课程涵盖最主流的音视频全栈开发技术,适合嵌入式开发、桌面开发、Android/IOS移动开发、 后台开发、IT行业人员往音视频领域发展;适合音视频从业人员进一步 系统提升音视频技术。学完本课程具备全栈的音视频技术体系思维和视野,能够结合企业实际场景业务,进行播放器、录屏器、推拉流直播、视频监控、音视频通话、流媒体服务器等实际项目的开发。原创 2023-10-10 15:55:45 · 285 阅读 · 0 评论 -
【FFmpeg实战】FFplay序列号分析
从上图可以看出来,用 avformat_seek_file() 进行 seek 操作之后,就会 调 packet_queue_flush() 函数来刷新 序列号,来达到丢弃之前的无效缓存的效果。之前说过,struct Decoder 的 pkt_serial 记录的是上一次解码的 AVPacket 的序列号。上图的逻辑是,只要本次解码的 AVPacket 的序列号跟上一次用的 AVPacket 的序列号不一样,可以看到,音频播放线程取数据的时候,会判断 Frame 的序列号是不是最新的,不是就立即丢弃。转载 2023-07-12 17:28:28 · 114 阅读 · 0 评论 -
【FFmpeg实战】FFplay PacketQueue队列
PacketQueue会维护MyAVPackeList的内,在put时(packet_queue_put_private函数内调用av_malloc)malloc,在get时(packet_queue_get函数内调用av_packet_free)free。1.AVPacket结构体的内存,这部分内存会和MyAVPacketList共存亡的。2.AVPacket字段指向的内存,这部分需要通过 av_packet_unref 函数释放。每放入一个flush_pkt,serial就会加1.原创 2023-07-11 15:57:08 · 296 阅读 · 0 评论 -
【FFmpeg实战】FFplay音频滤镜分析
第二次调用 configure_audio_filters() 是因为实际解码出来的 AVFrame 的采样率,声道等,跟容器里面记录的不一致,之前 is->audio_filter_src 是直接从容器,封装层取的数据。还设置了 sample_fmts 为 AV_SAMPLE_FMT_S16,这是 ffpaly 播放器自己的特性,就是说无论MP4文件里面的音频格式是怎样的,他都会转成 AV_SAMPLE_FMT_S16 格式丢给 SDL 播放,而且它在用。is->audio_tgt 是。原创 2023-07-08 20:34:39 · 185 阅读 · 0 评论 -
【FFmpeg实战】FFmpeg 音频重采样
所谓重采样,一句话总结就是改变音频的三元素,也就是通过重采样改变音频的采样率、采样格式或者声道数。例如音频A是采样率48000hz、采样格式为f32le、声道数为1,通过重采样可以将音频A的采样率变更为采样率44100hz、采样格式为s16le、声道数为2等。原创 2023-07-08 15:52:28 · 341 阅读 · 0 评论 -
【FFmpeg实战】FFplay音视频同步
作者:Mirs。原创 2023-07-06 22:03:50 · 210 阅读 · 0 评论 -
【FFmpeg实战】ffplay音视频解码线程
转载自原文地址:前面我们介绍了ffplay的调试环境集成、ffplay总体架构、ffplay的读取线程等相关内容,今天介绍下ffplay解码线程工作流程。因为视频解码和音频解码的过程大概一致,因此本文主要介绍视频的解码线程内容,字幕的解码忽略…我们还是从这张图开始:从图中可以看出,解码线程的主要工作内容是将资源包从待解码队列中取出,然后送进解码器,最后将解码出的数据帧放入帧队列中,等待SDL获取播放。原创 2023-07-06 14:33:00 · 209 阅读 · 0 评论 -
【FFmpeg实战】ffplay.c 流程简析
打印输出FFmpeg版本信息(编译时间,编译选项,类库信息等)初始化SDL,FFPlay中的视频与音频都是使用到了SDL。销毁帧队列,释放初始化时的缓存数据。根据编解码器初始化编解码器上下文。为SDL窗口创建SDL渲染上下文。分别打开视频/音频/字幕解码线程。分别打开视频/音频/字幕解码线程。从流中复制参数到编解码器上下文中。打开文件流,读取文件头部数据。内部是个有限数组,内部根据。将读取的包数据加入到队列中。初始化时钟,使用默认值(根据编码ID获取编解码器。来初始化默认缓存数据。根据名称查找编解码器。原创 2023-07-05 16:23:05 · 241 阅读 · 0 评论 -
【FFmpeg实战】ffplay整体框架
操作之后播放序列就不是0了,会变成1,每次seek之后播放序列都会加1,然后在读取线程、解码线程、SDL显示过程中都进行当前的数据包、数据帧是否是属于最新的播放序列的内容的判断,如果不属于的话将被直接丢弃掉,所谓的播放序列是指一个连续的播放过程,比如播放了一个媒体流一直没有进行操作就是一个播放序列,一旦操作了播放位置就是另外一个播放序列了,比如说开始播放的时候播放序列是0,进行了seek。关于SDL相关的,以及一些filter相关的笔者忽略了,因为从本质上讲它们不属于ffplay的核心内容。原创 2023-07-05 15:38:09 · 181 阅读 · 0 评论 -
【FFmpeg实战】filter使用方法、以及一些功能命令
main][flip] overlay=W:0” GHO_H_1.avi和命令ffmpeg -i src.avi-vf hflip GHO_H_1.avi一样的效果,这样写仅仅是为了更好的理解filter处理链。[main][flip] overlay=0:0” GHO2.avi处理效果和命令ffmpeg -isrc.avi -vf vflip GHO_v_1.avi一样,这样写仅仅是为了更好的理解filter处理链。原创 2023-07-04 16:41:08 · 254 阅读 · 0 评论 -
【FFmpeg实战】Flutter音视频裁剪
有一个值得说明的地方是,flutter_ffmpeg有中发行包,一种是 Main Release,一种是LTS Release 发行包,而他们两者支持的 Android API Level/iOS SDK和硬件架构是不一样的,总的来说,LTS版本支持的更广泛,LTS支持度大于MAIN,所以我们最好使用LTS版本。flutter_ffmpge是ffmpeg在flutter上的一个实现,ffmpeg是通过命令行还进行音视频编辑的工具,因此我们使用fluter_ffmpeg自然也是运行一些命令来实现我们的功能。原创 2023-07-04 16:15:39 · 2489 阅读 · 2 评论 -
【FFmpeg实战】ffmpeg 截图,水印操作
参数说明:marklogo:添加的水印图片;scale:水印大小,水印长度*水印的高度;overlay:水印的位置,距离屏幕左侧的距离*距离屏幕上侧的距离;mainW主视频宽度, mainH主视频高度,overlayW水印宽度,overlayH水印高度左上角overlay参数为 overlay=0:0右上角为 overlay= main_w-overlay_w:0右下角为 overlay= main_w-overlay_w:main_h-overlay_h。原创 2023-07-04 15:37:38 · 1048 阅读 · 0 评论 -
【FFmpeg实战】ffmpeg filter amix混音实现
代表某一filter,[in0][in1][in2]代表的是输入节点,amix是混音滤波器=inputs=3这个是参数表示输入是3个,[out]表示输出。ffmpeg的滤波filter有amix这个混音器,可以借助它来做音频的多路混音。首先我们需要编译ffmpeg并安装它,可以具备编码功能,考虑可以加mp3或者aac编码库进来,最简单的方式是编码成pcm格式直接输出到文件,用VLC也可以播放。需要其他格式的音频要改AV_CODEC_ID_PCM_S16LE。这是有填充next的即将输入串联了起来。原创 2023-07-03 15:52:13 · 510 阅读 · 0 评论 -
【FFmpeg实战】过滤器 ---- h264_mp4toannexb
开始前缀(00000001或000001)+NALU数据 绝大部分编码器的默认输出格式一共有两种起始码start_code①3字节0x000001 单帧多slice(即单帧多个NALU)之间间隔②4字节0x00000001 帧之间,或者SPS等之前4字节类型的开始码在在连续的数据传输中非常有用,因为用字节来对齐、分割流数据,比如:用连续的31个bit0后接一个bit1来分割流数据,是很容易的。AnnexB格式每个NALU都包含起始码,且通常会周期性的在关键帧之前重复SPS和PPS。原创 2023-07-01 16:47:30 · 370 阅读 · 0 评论 -
【FFmpeg实战】视频压缩标准之 H.261/H.262/H.263/H.264/H.265
都是视频压缩标准,也被称为编解码器,这些术语定义了编码技术。原创 2023-06-30 22:22:02 · 956 阅读 · 0 评论 -
【FFmpeg实战】GOP结构
deltaRPS等于预测帧的POC减当前帧的POC,因此Frame2的deltaRPS=4-2=2,Frame3的deltaRPS=2-1=1,Frame4的deltaRPS=1-3=-2。取值可以为0,1和2,分别表示该参考图像是当前图像的参考图像,未来图像的参考图像,不用作参考。为0,1,1,0,第1个0表示参考RPS(Frame3的RPS)中的-1在Frame4中不用作参考,接下来的两个1表示参考RPS(Frame3的RPS)中的1,3仍作为参考,最后一个0表示Frame3本身不用作参考。原创 2023-06-30 22:09:34 · 366 阅读 · 0 评论 -
【FFmpeg实战】码率控制分析
h264编码算法复杂、参数众多,单码率控制又分为三种模式。原创 2023-06-30 21:55:25 · 950 阅读 · 0 评论 -
【FFmpeg实战】H264视频编码
H264视频编码技术,是对序列帧图像进行压缩的技术。压缩之所以可能,是因为存在冗余数据。H264是ITU-T的VCEG和ISO/IEC的MPEG的联合视频组(JVT, Joint Video Team)开发的一个数字视频编码标准,于2003年3月正式发布。它采用网络友好的结构和语法,有利于对误码和丢包的处理。在编码技术上,通过统一的VLC符号编码,高精度、多模式的位移估计,基于4X4块的整数变换,分层的编码语法等措施,使得H264算法具备很高的编码效率。原创 2023-06-30 17:39:10 · 519 阅读 · 0 评论 -
【FFmpeg实战】H264压缩编码技术
现在在电视和投影上经常看到运动补偿(MEMC)的广告,其实并不是什么高深的技术,比如在上面的例子中,就是根据运动矢量,在帧与帧间插入新运动矢量,使得整个GOP中矢量变化更加平滑。也有可能不止30帧的的数据,可能几十帧,上百帧的数据都是关联特别密切的。对于视频数据主要有两类数据冗余,一类是时间上的数据冗余,另一类是空间上的数据冗余。其中时间上的数据冗余是最大的。对于这些关联特别密切的帧,其实我们只需要保存一帧的数据,其它帧都可以通过这一帧再按某种规则预测出来,所以说视频数据在时间上的冗余是最多的。原创 2023-06-30 16:41:54 · 745 阅读 · 0 评论 -
【FFmpeg实战】AAC编码, 解码
读取数据到输入缓冲区,将输入缓冲区的数据送入。创建输入缓冲区AVPacket。将解析器的数据送入解码器进行解码。创建输出缓冲区AVFrame。原创 2023-06-30 16:10:21 · 468 阅读 · 0 评论 -
【FFmpeg实战】AAC编码介绍
AAC(dvancedudiooding,译为:高级音频编码),是由Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia等公司共同开发的音频编码和文件格式。AAC被设计为MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。AAC是一个庞大家族,为了适应不同场合的需要,它有很多种规格可供选择。最早是基于MPEG-2标准,称为:MPEG-2 AAC。原创 2023-06-29 22:28:53 · 832 阅读 · 0 评论 -
【FFmpeg实战】H265/HEVC&码流结构
H265 又被叫做HEVC(全称叫做 Hight Efficiency Video Coding,高效率视频编码),它同H264一样也是ITU-T和ISO两个组织共同制定的视频压缩标准,是H264/AVC标准的继承者。H265/HEVC是面向更高清晰度、更高帧率、更高压缩率视频的协议标准,是一套标准组织制定的视频压缩标准、规范。原创 2023-06-29 21:59:03 · 718 阅读 · 0 评论