随笔分类 -  FFmpeg

摘要:什么是TS? TS(Transport Stream,传输流),一种常见的视频封装格式,是基于MPEG-2的封装格式(所以也叫MPEG-TS),后缀为.ts TS的分层 TS文件分为三层,如下所示(可以倒序更好理解) TS层(Transport Stream):在PES层基础上加入了数据流识别信息和 阅读全文
posted @ 2024-04-21 22:15 不会笑的孩子 阅读(597) 评论(0) 推荐(0)
摘要:代码 #include <stdio.h> #define __STDC_CONSTANT_MACROS //因为ffmpeg是C语言编写的所以要继承C语言的语法格式 extern "C" { #include "libavcodec/avcodec.h" #include "libavformat 阅读全文
posted @ 2024-04-14 09:51 不会笑的孩子 阅读(44) 评论(0) 推荐(0)
摘要:作用 SDL(Simple DirectMedia Layer)库的作用,说白了就是封装了复杂的视音频交互工作,简化了视音频处理的难度 特点 跨平台 开源 结构 SDL结构如下所示。可以看出它实际上还是调用了DirectX等底层API完成了和硬件的交互 SDL的工作过程 SDL视频显示的数据结构 S 阅读全文
posted @ 2024-04-11 19:39 不会笑的孩子 阅读(110) 评论(0) 推荐(0)
摘要:AVCodec AVCodec是存储编解码器信息的结构体。 /** * AVCodec. */ typedef struct AVCodec { /** * Name of the codec implementation. * The name is globally unique among e 阅读全文
posted @ 2024-04-06 20:47 不会笑的孩子 阅读(173) 评论(0) 推荐(0)
摘要:AVFrame AVFrame是包含码流参数较多的结构体 /** * Audio Video Frame. * New fields can be added to the end of AVFRAME with minor version * bumps. Similarly fields tha 阅读全文
posted @ 2024-04-06 20:47 不会笑的孩子 阅读(183) 评论(0) 推荐(0)
摘要:FLV的封装格式 FLV(Flash Video)是一种常见的视频封装格式,最初由Adobe公司开发,用于在网络上播放的视频内容。FLV格式通常用于将视频和音频流组合在一起,并以一种紧凑的方式存储在单个文件中。下面是FLV封装格式的一些关键点: FLV Header Header记录了FLV的类型, 阅读全文
posted @ 2024-03-27 22:00 不会笑的孩子 阅读(183) 评论(0) 推荐(0)
摘要:什么是SSA SSA(SubStation Alpha),是由CS Low,比传统字幕格式如SRT格式功能更加先进的字幕文件格式。 该格式字幕的外挂文件以*.ssa作为后缀。 什么是ASS? ASS(Advanced SubStation Alpha),是一种比SSA更为高级的字幕格式,其实质版本是 阅读全文
posted @ 2024-03-22 16:46 不会笑的孩子 阅读(197) 评论(0) 推荐(0)
摘要:什么是AAC AAC(Advanced Audio Coding,高级音频编码)是一种声音数据的文件压缩格式分为:AAC分为ADIF和ADTS两种文件格式。 什么是ADIF和ADTS? ADIF:音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需要进行在音频数据流中间开始的解码 阅读全文
posted @ 2024-03-22 16:34 不会笑的孩子 阅读(51) 评论(0) 推荐(0)
摘要:PCM PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样 量化、编码转换成的标准数字音频数据。 如何理解PCM 模拟信号数字化:PCM是一种将模拟信号转换为数字信号的技术。在模拟信号中,声音、视频等信息是连续变化的,而在数 阅读全文
posted @ 2024-03-22 16:14 不会笑的孩子 阅读(155) 评论(0) 推荐(0)
摘要:什么是H.264 高度压缩数字视频编解码器标准。 H.264的数据格式是怎样的? H.264是一种视频编码标准,定义了视频数据的压缩和编码方式,但没有规定特定的数据格式。然而,H.264编码生成的视频流通常会采用一种常见的容器格式来封装,以便存储和传输。常见的容器格式包括MP4 AVI MKV MO 阅读全文
posted @ 2024-03-22 15:54 不会笑的孩子 阅读(119) 评论(0) 推荐(0)
摘要:YUV YUV是一种颜色编码方式,通常用于数字视频和图像处理中。它将颜色信息分解成亮度(Y)和色度(U和V)两个分量 Y表示亮度(Luminance),即灰度信息,决定了图像得明暗程度。 U和V表示色度(Chromminance),用于描述图像得色彩信息和饱和度。U表示蓝色得色度,V表示红色得色度。 阅读全文
posted @ 2024-03-22 14:47 不会笑的孩子 阅读(41) 评论(0) 推荐(0)
摘要:AVPacket AVPacket是存储压缩编码数据相关信息的结构体。 typedef struct AVPacket { /** * Presentation timestamp in AVStream->time_base units; the time at which * the decom 阅读全文
posted @ 2024-03-09 17:55 不会笑的孩子 阅读(159) 评论(0) 推荐(0)
摘要:AVStream是存储每一个视频/音频信息的结构体。 /** * Stream structure. * New fields can be added to the end with minor version bumps. * Removal, reordering and changes to 阅读全文
posted @ 2024-03-09 17:36 不会笑的孩子 阅读(177) 评论(0) 推荐(0)
摘要:AVCodec是存储编解码信息的结构体。 /** * AVCodec. */ typedef struct AVCodec { /** * Name of the codec implementation. * The name is globally unique among encoders a 阅读全文
posted @ 2024-03-09 16:40 不会笑的孩子 阅读(24) 评论(0) 推荐(0)
摘要:AVIOContext /** * Bytestream IO Context. * New fields can be added to the end with minor version bumps. * Removal, reordering and changes to existing 阅读全文
posted @ 2024-03-09 14:53 不会笑的孩子 阅读(43) 评论(0) 推荐(0)
摘要:AVCodecContext(位于 avcodec.h) AVCodecContext是包含变量较多的结构体(感觉差不多是变量最多的结构体).本文将会大概分析一下该结构体里面每个变量的含义和作用。 /** * main external API structure. * New fields can 阅读全文
posted @ 2024-03-09 14:28 不会笑的孩子 阅读(141) 评论(0) 推荐(0)
摘要:typedef struct AVFormatContext结构体介绍 表示解复用(解码)或复用(编码)多媒体流的格式上下文。在使用FFMPEG进行开发的时候,AVFormatContext是一个贯穿时钟的数据结构,很多函数都要用它作为参数。它是FFMPEG解封装(flv,mp4,rmvb,avi) 阅读全文
posted @ 2024-03-09 09:48 不会笑的孩子 阅读(1024) 评论(0) 推荐(0)
摘要:背景知识 FFmpeg是一个强大的开源软件项目,包含一套大量的库和程序,用于处理多媒体数据。它可以编码、解码、流式传输、过滤和播放几乎任何人类和及其创建的音频和视频。 使用FFMPEG作为内核视频播放器 Mplayer、 ffplay 射手播放器 暴风影音 KMPlayer QQ影音 使用FFMPE 阅读全文
posted @ 2024-03-08 20:41 不会笑的孩子 阅读(447) 评论(0) 推荐(0)
摘要:开源地址 https://github.com/mumble-voip/mumble Mumble Mumble:语音通信软件 低延迟、高质量 低延迟通信 C/S(Client/Server) 跨平台(跨风俗来运行) Opus音频编码器 SSL/TLS加密 源码整体结构分析 mumble/src/c 阅读全文
posted @ 2023-12-10 17:21 不会笑的孩子 阅读(277) 评论(0) 推荐(0)
摘要:总体架构 音频基本原理: 声波捕获:音频信号是由声波振动引起的,通常使用麦克风等传感器将声波转化为电信号。声波的频率和振幅决定了声音的音调和音量。 采样和量化:模拟音频信号需要经过采样和量化,将连续的模拟信号转换为离散的数字信号。采样率表示每秒采集的样本数,量化位数表示每个样本的精度。 编码:采样后 阅读全文
posted @ 2023-09-28 21:00 不会笑的孩子 阅读(345) 评论(0) 推荐(0)