音视频
文章平均质量分 77
音视频基本、FFmpeg实战、流媒体客户端、流媒体服务器、webRTC实战、AndroidNDK
怪我冷i
这个作者很懒,什么都没留下…
展开
-
如何优化B站视频(bilibili )视频标题
如何优化B站视频(bilibili )视频标题。原创 2024-06-13 12:36:12 · 173 阅读 · 0 评论 -
debian11安装code-server以非root用户开机启动
debain11安装code-server以非root用户开机启动code-server是什么Run VS Code on any machine anywhere and access it in the browser.安装debain11虚拟机Linux machine with WebSockets enabled, 1 GB RAM, and 2 CPUs下载code-server安装包运行sudo dpkg -i code-server_4.4.0_amd64.deb显示如原创 2022-05-11 23:13:39 · 2550 阅读 · 0 评论 -
FFmpeg基础到工程-多路H265监控录放开发学习笔记
课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。具体内容包括:一、视频监控的架构和流程二、FFmpeg4.3+SDL2+Qt5开发环境的搭建三、FFmpeg的SDK编程回顾总结并操练四、SDL2.0的编程回顾总结并操练五、颜色空间转换RGB和YUV的原理与实战六、Qt5+FFmpeg本地摄像头采集预览实战七、代码封装:摄像头h264/5编码并存储。原创 2022-12-13 21:01:55 · 1702 阅读 · 2 评论 -
MediaMuxer和MediaExtractor API 简介
顾名思义,MediaExtractor 可以从数据源中提取经过编码的媒体数据。MediaExtractor 不仅可以解析本地媒体文件,还可以解析网络媒体资源。原创 2022-11-11 14:58:04 · 947 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg分离出PCM数据实战
PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。原创 2022-11-11 14:48:45 · 1984 阅读 · 0 评论 -
音视频编解码——YUV格式思维导图
常用的YUV格式 为节省带宽起见,大多数YUV格式平均使用的每像素位数都少于24位。主要的抽样(subsample)格式有YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4:4。原创 2022-11-09 09:00:03 · 266 阅读 · 0 评论 -
RTSP协议学习Ubuntu环境准备
实时流传输协议(RTSP:Real Time Streaming Protocol)是⼀种网络传输协议,旨在发送低延迟流。该协议由RealNetworks,Netscape和哥伦⽐亚⼤学的专家在1996年开发。它定义了应如何打包流中的数据以进行传输。原创 2022-11-04 16:31:44 · 1529 阅读 · 0 评论 -
最简单的基于FFMPEG 4.2的封装格式转换器(无编解码MP4转FLV)
本文介绍一个基于 FFMPEG 的封装格式转换器。所谓的封装格式转换,就是在 AVI,FLV,MKV,MP4 这些格式之间转换(对应. avi,.flv,.mkv,.mp4 文件)。需要注意的是,本程序并不进行视的编码和解码工作。而是直接将视音频压缩码流从一种封装格式文件中获取出来然后打包成另外一种封装格式的文件。传统的转码程序工作原理如下图所示:上图例举了一个举例:FLV(视频:H.264,音频:AAC)转码为AVI(视频:MPEG2,音频MP3)的例子。原创 2022-10-17 16:33:15 · 1057 阅读 · 0 评论 -
FFmpeg之av_err2str、av_ts_buff、av_ts2str、av_ts2timestr报错解决方案
FFmpeg之av_err2str、av_ts_buff、av_ts2str、av_ts2timestr报错解决方案。原创 2022-10-17 11:55:48 · 841 阅读 · 0 评论 -
音视频从入门到精通——YUV格式
YUV4:2:0并不是说只有U(即Cb),V(即Cr)一定为0,而是指U:V互相援引,时见时隐,也就是说对于每一个行,只有一个U或者V分量,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0…RGB诉求于人眼对色彩的感应,YUV则着重于视觉对于亮度的敏感程度,Y代表的是亮度,UV代表的是彩度(因此黑白电影可省略UV,相近于RGB),分别用Cr和Cb来表示,因此YUV的记录通常以Y:UV的格式呈现。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。原创 2022-09-26 17:10:01 · 268 阅读 · 0 评论 -
音视频从入门到精通——视频 码率 帧率 分辨率
3.也就是说1M 的宽带下载速度不会超过 128KB/s ,也就是理论上1秒钟,可以下载128K的内容,实际上1M宽带,下载速度100k/s就属于正常,毕竟理论值不⼀定能达到。在码率⼀定的情况下,分辨率与清晰度成反⽐关系:分辨率越⾼,图像越不清晰,分辨率越低,图像越清晰。视频是由⼀张张的图⽚形成的,我们看起来很流畅是因为⼈眼有视觉停留的现象,当图⽚以24张每秒的速度匀速播放时,这些图⽚看起来就是连续的。视频在采集后都需要进⾏压缩,如果不压缩,实在是太⼤了,此时就需要根据分辨率、帧率、码率做个平衡。原创 2022-09-26 08:36:07 · 4076 阅读 · 1 评论 -
音视频从入门到精通——SDL例子
SDL(Simple DirectMedia Layer)是一个向外提供C接口的跨平台开发库。原创 2022-09-25 16:39:36 · 264 阅读 · 1 评论 -
音视频从入门到精通——超简单的基于FFMPEG+SDL的视频播放器(二)
先看一下FFmpeg的解码流程再看一下SDL显示渲染流程使用SDL播放一个视频代码流程大体如下SDL_Init(): 初始化SDL。SDL_CreateWindow(): 创建窗口(Window)。SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。SDL_CreateTexture(): 创建纹理(Texture)。SDL_UpdateTexture(): 设置纹理的数据。SDL_RenderCopy(): 纹理复制给渲染器。原创 2022-09-25 16:34:11 · 836 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg之Duration计算
计算方式参考av_dump_format函数。原创 2022-09-25 10:38:41 · 1412 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg之av_image_get_buffer_size函数
10的图⽚,每个像素点占2个字节,对⻬数align为4,那么⾏数是多少呢,从条件可知,每⾏3 个像素点,每个像素点占2字节,那么每⾏就是6字节,⽽对⻬数是4,6不是4的整数倍,因此6需要补 2个字节凑成8,8就是4的整数倍了,那么我们就知道每⾏在内存中实际占⽤了8个字节,后两个字节是 为了对⻬补上的,总共有10⾏,那么这张图⽚在实际内存中就占⽤了8。以ffmpeg的av_image_get_buffer_size为例,你能准确说出下⾯的结果吗,如果可以,那么证明你确实 理解了ffmpeg中的对⻬了。原创 2022-09-25 09:42:13 · 2726 阅读 · 0 评论 -
ffmpeg 在window下使用 PRId64 报错Error C3688 invalid literal suffix ‘PRId64‘
2、定义宏:#define __STDC_FORMAT_MACROS,也可以通过编译时加-D__STDC_FORMAT_MACROS,或者在包含文件之前定义这个宏。PRId64表示64位整数,在32位系统中表示long long int,在64位系统中表示long int。给c用的,C++要用它,就要定义一个__STDC_FORMAT_MACROS宏显示打开它。我是通过编译时添加了 D__STDC_FORMAT_MACROS。这是一种跨平台的书写方式,主要是为了同时支持32位和64。转载 2022-09-24 17:39:31 · 397 阅读 · 0 评论 -
FFmpeg错误a parenthesized type followed by an initializer list is a non-standard explicit type convers
error C4576: 后跟初始值设定项列表的带圆括号类型是一个非标准的显式类型转换语法。原创 2022-09-23 11:36:13 · 848 阅读 · 0 评论 -
FFmpeg例子分析---音频解码decode_audio
FFmpeg流程音频解码流程音频解码详细步骤原创 2022-09-22 10:53:22 · 761 阅读 · 0 评论 -
音视频从入门到精通——超简单的基于FFMPEG+SDL的视频播放器(一)
SDL(Simple DirectMedia Layer)是一个向外提供C接口的跨平台开发库。不只是初学C/C++,即使学过一段时间的程序员也会认为C/C++没有较好可移植性,因为它把系统级API和内存对象的布局直接暴露给了开发人员!C/C++的确无法做到在系统级API层跨平台,这里使用的是把那部分代码提取出来形成个轻量级SDK,即SDL库,SDL处理系统级API差异,然后向上层提供统一API。SDL是轻量级库,只提供基本的画图、播放声音、处理输入事件。原创 2022-09-20 15:47:58 · 617 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg 播放器实现音视频同步的三种方式
播放器实现音视频同步的这三种方式中,选择哪一种方式合适要视具体的使用场景而定,比如你对画面流畅度要求很高,可以选择音频向视频同步;你要单独实现视频或音频播放,直接向系统时钟同步更为方便。转载 2022-09-15 15:49:12 · 539 阅读 · 0 评论 -
音视频从入门到精通——ffmpeg3之打印多媒体文件音视频信息
相对于MPEG2,VC-1的压缩比更高,但相对于H.264而言,编码解码的计算则要稍小一些,目前来看,VC-1可能是一个比较好的平衡,辅以微软的支持,应该是一只不可忽视的力量。以国内最流行,大家最熟悉的RMVB视频文件为例,RMVB中的VB,指的是VBR,即Variable Bit Rate的缩写,中文含义是可变比特率,它表示RMVB采用的是动态编码的方式,把较高的采样率用于复杂的动态画面(歌舞、飞车、战争、动作等),而把较低的采样率用于静态画面,合理利用资源,达到画质与体积可兼得的效果。原创 2022-09-12 14:44:38 · 652 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg数据结构分析
FFmpeg解码流程。原创 2022-09-09 15:52:21 · 1518 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg结构体:AVPacket分析
从媒体流中读取帧填充到Packet的数据缓存空间。如果Packet->buf为空,则Packet的数据缓存空间会在下次调用的时候失效。这也就是为何在FFmpeg3:播放音频中,从流中读取到Packet的时,在将该Packet插入队列时,要调用重新复制一份缓存数据。: 创建一个AVPacket,将其字段设为默认值(data为空,没有数据缓存空间): 释放使用创建的AVPacket,如果该Packet有引用计数(packet->buf不为空),则先调用(&packet)。: 其功能是。原创 2022-09-09 15:37:33 · 1166 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg之av_seek_frame函数分析
timestamp: int64_t类型的时间戳,表示要跳转到的时间位置。stream_index : int类型表示要进行操作的流索引。s: AVFormatContext类型的多媒体文件句柄。flags 的值为1,2,4,8。所以,flags 应该是要通过或运算,加起来使用的。flags : 跳转方法,主要有一下几种。av_seek_frame函数分析。原创 2022-09-09 14:19:32 · 1760 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg之swr_convert音频重采样函数分析
4.5 音频帧,音频数据和视频帧不一样,视频帧就是一张图像,音频数据是流式结构,本身没有明确的一帧的概念,只是为了音频算法处理传输方便,约定2.5ms~60ms为单位的数据量为一帧音频。AudioTrack 提供了两种播放模式,一种是static方式,一种是streaming方式,前者需要一次性将所有数据都写入播放缓冲区,简单高效,通常用于铃声播放,系统提醒的音频片段,后者需要按照一定时间间隔不断写入音频数据,理论上可以任何音频播放的场景。位数越多,表示越精细,声音质量就越好,当然,数据量也成倍增大。原创 2022-09-09 14:18:45 · 2306 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg结构体:AVFrame分析
AVFrame结构体一般用于存储原始数据(即非压缩数据,例如对视频来说是YUV,RGB,对音频来说是PCM),此外还包含了一些相关的信息。比如说,解码的时候存储了宏块类型表,QP表,运动矢量表等数据。编码的时候也存储了相关的数据。因此在使用FFMPEG进行码流分析的时候,AVFrame是一个很重要的结构体。AVPacket:存储压缩数据(视频对应H.264等码流数据,音频对应AAC/MP3等码流数据)AVFrame:存储非压缩的数据(视频对应RGB/YUV像素数据,音频对应PCM采样数据)原创 2022-09-09 14:17:38 · 1742 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg结构体:AVCodecContext(编码解码)分析
av_register_all():注册所有组件,4.0已经弃用avdevice_register_all():对设备进行注册,比如V4L2等。avformat_network_init():初始化网络库以及网络加密协议相关的库(比如openssl)原创 2022-09-05 17:48:27 · 882 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg结构体:AVFormatContext分析
在使用 FFmpeg 进行开发的时候,AVFormatContext 是一个贯穿始终的数据结构,很多函数 都要用到它作为参数。它是 FFmpeg 解封装(flv,mp4,rmvb,avi)功能的结构体。AVFormatContext 结构体定义在 中。原创 2022-09-06 09:30:00 · 501 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg之av_read_frame函数分析
**PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。/**DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。要深入理解PTS,DTS,需要了解一下视频编码的知识。如视频编码之I,P,B帧。也可以用VideoEye工具分析。原创 2022-09-05 15:07:34 · 1326 阅读 · 0 评论 -
音视频从入门到精通——FFmpeg结构体:AVStream分析
AVStream是存储每一个视频/音频流信息的结构体。本文分析一下该结构体里重要变量的含义和作用。原创 2022-09-04 18:41:18 · 1887 阅读 · 0 评论 -
音视频从入门到精通——Visual Studio 2019 配置 ffmpeg5 详细方法
进入https://www.gyan.dev/ffmpeg/builds/,选择 shared版本下载。第一步,添加一个Src目录,添加Application.cpp文件,粘贴代码,切换项目为x64,运行。右键项目名称->属性->配置属性->链接器->常规->附加库目录。右键项目名称->属性->配置属性->链接器->输入->附加依赖项。右键项目名称->属性->配置属性->c/c+±>附加包含的目录。,改名为ffmpeg,bin目录里面的文件移入。新建一个Empty Project。目录,其他目录文件删除。原创 2022-09-04 15:00:00 · 1298 阅读 · 0 评论 -
音视频从入门到精通——指数哥伦布码原理
在计算机中,一般数字的编码都为二进制,但是由于以相等长度来记录不同数字,因此会出现很多的。原创 2022-08-18 16:23:54 · 732 阅读 · 0 评论