自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SuperLi

不老实程序员

  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 PCM数据格式介绍

PCM原始音频数据格式介绍文章目录PCM原始音频数据格式介绍什么是PCMSampling(采样)采样率(Sample rate)Quantization(量化)Encoding(编码)PCM数据常用量化指标PCM数据流音量控制采样率调整什么是PCMPCM全称Pulse-Code Modulation,翻译一下是脉冲调制编码。其实大可以不用关心英文释义,之所以这么命令是因为一些历史原因。在...

2019-05-30 00:58:41 25385 14

原创 NuPlayer源码分析四:渲染模块&音视频同步

渲染模块&音视频同步渲染模块的作用是,将音频、视频数据安装一定的同步策略通过对应的设备输出。这是所有的播放器都不可或缺的模块。NuPlayer的渲染类为Renderer,定义在NuPlayerRenderer.h文件中。它的主要功能有:缓存数据音频设备初始化&数据播放视频数据播放音视频同步功能缓存数据在表明缓存逻辑之前,先介绍一下NuPlayerRenderer...

2019-05-27 23:41:54 2333 10

原创 NuPlayer源码分析三:解码模块

解码模块NuPlayer的解码模块相对比较简单,统一使用了一个基类NuPlayerDecoderBase管理,该类中包含了一个MediaCodec的对象,实际解码工作全靠MediaCodec。如果你不会知道MediaCodec是什么,推荐去官网看看:MediaCodec尽管解码工作都被MediaCodec接管,我还是会按照播放器的一般步骤,来分析一下NuPlayerDecoderBase...

2019-05-27 23:37:38 1801

原创 NuPlayer源码分析二:解封装模块

NuPlayer解封装模块解封装模块的重要作用,是将封装好的音视频源文件,通过不同的封装协议,解析成码流后,送到解码器解码。NuPlayer中和解封装相关的类有:NuPlayer::Source:解封装模块的基类,定义了解封装的基本接口。GenericSource:本地文件相关。HTTPLiveSource:HLS流媒体使用的解封装类。RTSPSource:SDP协议媒体流使用的解封...

2019-05-27 23:33:33 2448 5

原创 NuPlayer源码分析一:播放器创建

摘要

2019-05-20 00:28:41 2233 5

原创 SDL2:第五个程序:播放pcm数据

播放音频数据对一个播放器来说是不可或缺的,索性SDL2支持播放视频数据之外,也支持播放音频数据。废话不多说,先来试试吧!使用FFmpeg命令提取PCM数据这里从网上下了一首歌Forevermore,非常好听,是mp3格式的:Forevermore.mp3。在提取Forevermore中的pcm数据时,为了使提取数据的基本采样率编解码格式等不发生改变,先用ffprobe命令探测一下该原数据的基...

2019-05-17 00:26:58 2081 4

原创 FFmpeg播放器(一):FFmpeg+SDL2播放视频数据

基本调用流程做了一个利用ffmpeg解码出yuv数据,通过SDL2显示数据的demo,记录一下。视频源使用的是网上源:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4也不知道是谁家的,先感谢一下吧。代码算是最基本的代码了,没有做过度的抽取封装,个人觉得这种代码更加易学。能够直观的看出FFmpeg和SDL2的接口调用顺序。其中FFmpeg...

2019-05-14 23:41:30 1675 2

原创 SDL_UpdateTexture+ffmpeg播放YUV数据程序异常崩溃:VM Regions Near 0x113e3d000:MALLOC_LARGE

异常代码:#include <iostream>#include <map>#include <pthread.h>extern "C" {#include <libavformat/avformat.h>#include <libavcodec/avcodec.h>#include <libswscale/swsc...

2019-05-14 13:19:06 22358 1

原创 SDL2:第四个程序(Mac):显示YUV数据

在上一个程序SDL2:第三个程序(Mac):显示任意图片我们利用sdl2_image库已经可以做到显示任意格式的图片了。可我这种最终要利用SDL2做视频工具的男人,怎么会满足于小小的图片呢。因为FFmpeg解码出来的视频帧数据是以YUV数据的格式展现,所以我必须先弄清楚YUV格式,在SDL2中是怎么显示的。为此,我专门用FFmpeg命令,将小王子的图片从jpg格式,转成了I420的YUV4:...

2019-05-10 21:04:15 778 2

原创 SDL2常用函数&结构分析:SDL_Texture&SDL_CreateTexture&SDL_UpdateTexture

SDL_TextureSDL_Texture是计算机图形图像中,如何在屏幕上显示图像的一个数据的抽象。中文也已翻译为纹理。这种概念在OpenGL中也有出现。对于SDL_Texture本身来说,它包含了显示驱动用于显示的特定数据结构。SDL_Texture的创建一半通过SDL_CreateTexture创建,创建一次后,可以重复使用,通过SDL_UpdateTexture函数更新数据。SDL_...

2019-05-10 20:54:39 4797

原创 SDL2常用函数&结构分析:SDL_Renderer&SDL_CreateRenderer&SDL_RenderCopy&SDL_RenderPresent

SDL_RendererSDL_Renderer是一个结构体,用来表示SDL2中渲染器的状态。从代码的使用上来讲,你也可以把它视为渲染器本身。我们可以利用它产生纹理,也可以用来渲染视图。通常,SDL_Renderer实例由SDL_CreateRenderer函数创建。SDL_CreateRenderer函数原型:SDL_Renderer* SDL_CreateRenderer(SDL_Wi...

2019-05-09 23:30:31 4017

原创 YUV格式到底是什么?

简介YUV是视频、图片、相机等应用中使用的一类图像格式,实际上是所有“YUV”像素格式共有的颜色空间的名称。 与RGB格式(红 - 绿 - 蓝)不同,YUV是用一个称为Y(相当于灰度)的“亮度”分量和两个“色度”分量表示,分别称为U(蓝色投影)和V(红色投影),由此得名。YUV也可以称为YCbCr,虽然这些术语意味着略有不同,但它们往往会混淆并可互换使用。Y表示亮度分量:如果只显示Y的话,...

2019-05-08 19:43:40 33950 2

原创 SDL2:第三个程序(Mac):显示任意图片

在上一个程序SDL2:第二个程序(Mac):显示BMP位图中,我们利用SDL2的公共API,在SDL窗体上加载了一个位图(BMP)。要加载任意格式的图片,仅仅依靠默认API是不够的,需要引入另外的图片库:sdl2_image安装sdl2_image执行命令:brew install sdl2_image执行结果:==> Installing dependencies for s...

2019-05-04 00:54:42 932

原创 SDL2:第二个程序(Mac):显示BMP位图

继上一个SDL2程序(SDL2:第一个程序(Mac)),我们使用SDL2打开了一个黑色的窗口。世界应该是彩色的,怎么能让黑色霸占呢,是时候让阳光驱逐黑暗了,今天,我要用SDL2显示一张图片。为此,我花重金请了位模特,拍了张照片。我待会儿就要让小王子进入SDL的世界。代码还是第一个程序的代码,只不过在上面稍作修改。首先是CMakeLists.txt文件cmake_minimum_req...

2019-05-03 18:44:00 758 2

原创 SDL2常用函数&结构分析:SDL_BlitSurface&SDL_UpdateWindowSurface

SDL_BlitSurface函数功能:将一个surface的数据快速复制到目标surface中。函数原型:int SDL_BlitSurface(SDL_Surface* src, const SDL_Rect* srcrect, SDL_Surface* dst, ...

2019-05-03 17:47:08 2406

原创 SDL2常用函数&结构分析:SDL_Surface&SDL_GetWindowSurface&SDL_LoadBMP

SDL_SurfaceSDL_Surface的官方定义为:A collection of pixels used in software blitting.(软件blitting中使用的像素集合)这么一看,还真不好理解,blitting到底是个啥意思,起初我以为是文化差异造成的。Google了一下,发现有搜索这个解释的国外大兄弟还有很多,在Stack overflow中找到一个比较靠谱易懂的说...

2019-05-03 17:23:29 5483 1

原创 SDL2常用函数&结构分析:SDL_Event&SDL_PollEvent

SDL_EventSDL_Event是个联合体,是SDL中所有事件处理的核心。 SDL_Event是SDL中使用的所有事件结构的并集。 只要知道了那个事件类型对应SDL_Event结构的那个成员,使用它是一个简单的事情。下表罗列了所有SDL_Event的所有成员和对应类型。Uint32typeevent type, shared with all eventsSDL_C...

2019-05-03 15:16:19 5228

原创 SDL2常用函数&结构分析:SDL_Window&SDL_CreateWindow

SDL2常用函数&结构分析:SDL_Window&SDL_CreateWindowSDL_WindowSDL_Window:结构体,描述了一个窗体对象,表示的是会呈现在设备上一个窗体,所有图像的载体。一般通过SDL_CreateWindow函数创建,和SDL_DestroyWindow销毁。SDL_CreateWindow函数原型:SDL_Window* SDL_Crea...

2019-05-03 15:13:08 4834

原创 SDL2常用函数&结构分析:SDL_Init

SDL_Init函数原型如下:int SDL_Init(Uint32 flags)使用此函数初始化SDL库,必须在使用大多数其他SDL函数之前调用它。参数:flags 表示需要初始化那些子系统。常见的子系统和对应的flag如下:flags子系统SDL_INIT_TIMER计时器子系统SDL_INIT_AUDIO音频子系统SDL_INIT_VIDEO...

2019-05-03 15:09:51 1345 1

原创 SDL2:第一个程序(Mac)

SDL官网:https://www.libsdl.org/SDL2.0文档地址:http://wiki.libsdl.org/Introduction简介直接翻译了一下官网介绍:简单的DirectMedia Layer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频,键盘,鼠标,操纵杆和图形硬件的低层访问。 它被视频播放软件,模拟器和流行游戏使用,包括Valve屡获殊荣...

2019-05-02 21:21:38 7658 4

原创 Clion-mac版引入FFmepg库

碎碎念利用FFmpeg库开发完了一个完整的Android播放器应用之后(后面抽空整理一下发出来),我用起来并不是很爽。因为,我发现光是能开发播放器,并不能很好的解决实际工作场景下的问题。现在市场上已经有很多播放器了,不管什么平台的,我们很少会从零开发播放器的机会。而现在的音视频领域的开发者,大部分时间都在做什么呢?答案是维护。我自己在工作中,做的最多的也是维护。说的直白一点,就是一线发现b...

2019-05-02 16:11:48 1135 3

原创 FFmpeg:AVIOContext结构体分析

分享一个FFmpeg的文档地址,如果本文有什么没讲清楚的,建议直接去查找:传送门AVIOContext这个结构体,是FFmpeg中有关io操作的顶层结构体,是avio的核心。FFmpeg支持打开本地文件路径和流媒体协议的URL。虽然AVIOContext时avio操作的核心,但AVIOContext中的所有函数指针都不应该直接调用,它们只应在实现自定义I / O时由客户端应用程序设置。 通常...

2019-05-02 11:51:53 2439

原创 FFmpeg:AVCodecContext结构体解析

文档:传送门AVCodecContextAVCodecContext也是FFmpeg使用过程中比较重要的结构体,保存了编解码器上下文相关信息。不管是编码,还是解码都会用到,但在两种不同应用场景中,结构体中部分字段作用和表现并不一致,这一点需要特别注意。AVFormatContext包含了一个媒体流的解码器的上下文信息,比较重要的有:AVMediaType:解码器类型,表示这个解码器是用来...

2019-05-02 11:50:38 3642 1

原创 FFmpeg:AVFrame结构体分析

最近发现了ffmpeg有个网页版的文档,分享给大家:ffmpeg文档,查询起来看是挺方便的。现在才发现,是不是有点太晚了?之前都是直接看源码上的注释,反过来想想,那些注释写的也都听清晰易懂的哈(自我安慰)。AVFrameAVFrame结构体描述了解码后的(原始)音频或视频数据。AVFrame通常被分配一次,然后多次重复使用以持有不同的数据(例如,单个AVFrame持有从解码器接收的帧)。 ...

2019-05-02 11:48:37 5836

原创 FFmpeg:AVInputFormat结构体解析

AVInputFormat文档:传送门AVInputFormat是解复用器(解封装)作用时读取媒体文件并将其拆分为数据块(数据包)。每个数据包,包含一个或者多个编码帧比较重要的字段有:long_name:格式的长名称(相对于短名称而言,更易于阅读)。mime_type:mime类型,它用于在探测时检查匹配的mime类型。next:用于链接下一个AVInputFormat。(*rea...

2019-05-02 11:46:59 1478

原创 FFmpeg:AVPacket结构体分析

AVPacket文档地址:传送门在AVPacket结构体的说明部分:有这么一段描述,足够说明它的作用和重要性。该结构存储压缩数据。 它通常由解复用器导出,然后作为输入传递给解码器,或作为编码器的输出接收,然后传递给复用器。对于视频而言,它通常应包含一个压缩帧。 对于音频,它可能包含几个压缩帧。 允许编码器输出空包,没有压缩数据,只包含不重要的附加信息数据。例如在编码结束时更新一些流参数。...

2019-05-02 11:43:50 1316

TransparentWidget.rar

Qt在透明控件上自由绘画的源码。1、解决QWidget透明背景为题。2、解决在透明widget上获取鼠标事件问题。最终效果为可以在桌面自由绘制。

2019-11-15

little_prince_yv12_960x540.yuv

该图片为yv12格式,宽高为960x540。主要用于代码验证。后面的信息没有用,可以不看。

2019-05-08

java_ee_api_中英文对照版

2016-03-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除