qt中实现ffmpeg音视频相关开发
文章平均质量分 64
在学习ffmpeg的过程中,发现一些c语言底层的方法功能较为繁琐,特此记录,方便后续使用。此专栏为本人自己使用,并没有考虑新手的使用状况
小土同学!
c++小白开发工程师,现在在做linux下qt开发
展开
-
十二、h.264解码
【代码】十二、h.264解码。原创 2023-11-22 14:36:38 · 597 阅读 · 0 评论 -
十二、h.264解码
【代码】十二、h.264解码。原创 2023-11-22 14:33:36 · 1178 阅读 · 0 评论 -
十一、h.264编码
使用H.264编码对YUV视频进行压缩。原创 2023-11-22 14:32:34 · 651 阅读 · 0 评论 -
十、sdl显示yuv图片
SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL。显示yuv图片需要知道yuv图片的尺寸和采样格式。原创 2023-11-22 14:30:42 · 534 阅读 · 0 评论 -
九、sdl显示bmp图片
SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL。原创 2023-11-22 14:28:12 · 468 阅读 · 0 评论 -
八、ffmpeg录制视频为yuv文件
若要进行色度二次采样,则采样格式有三种,A:B:C,A表示一块A*2个像素的概念区域,一般都是4。B表示第1行的色度采样数目。:如果在色度分量上进行(相对亮度分量)较低分辨率的采样,也就是存储较多的亮度细节、较少的色度细节,这样就可以在不明显降低画面质量的同时减小图像的体积。采样完成之后,还要考虑YUV三个分量的存储方式(每个Y、U、V分别占一个字节,完整的YUV理论上是3字节,24位)录制时的输出信息如下,即录制的视频信息为,分辨率:1280x720,像素格式:yuvj422p,帧率:30fps。原创 2023-11-22 14:27:12 · 818 阅读 · 0 评论 -
七、通过libfdk_aac编解码器实现aac音频和pcm的编解码
AAC编码是MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。由于libfdk_aac最好,但是网上下载好的ffmpeg编译好的版本不带libfdk_aac编解码器。自己手动编译FFmpeg源码,将libfdk_aac集成到FFmpeg中,这种方式最好,但在windows环境下较为麻烦。pcm与aac的转换需要AAC编解码器(如下列举几种常用的AAC编解码器)fdk-aac对需要编解码的pcm音频有一定的格式要求。原创 2023-11-22 14:25:47 · 1721 阅读 · 0 评论 -
windows下msys2编译64位的ffmpeg源码
目前遇到过两次需求,需要编译ffmpeg源码。网上下载的编译好的源码里面可能不全,很多时候需要自行编译源码。本文介绍自行编译ffmpeg64位源码(32位通过相似的方式为编译成功,不知道原因)原创 2023-05-05 09:52:58 · 987 阅读 · 1 评论 -
六、ffmpeg录制音频为wav文件
ffmpeg录制音频为wav文件,思路和录制成pcm相同,关键思路是在打开文件之初,先加上wav文件头,后续再写入音频数据的二进制信息即可。.h文件中包含pcmtowavthread.h是为了使用其内部的WAVHeader结构体。完整代码:(我这里是将功能封装在线程里,其中还考虑了线程的关闭问题)在主函数的构造方法中还要初始化一下时间。WAVHeader结构体如下。原创 2022-12-14 15:59:31 · 1237 阅读 · 0 评论 -
五、使用ffmpeg对音频重采样
有些音频编码器对输入的原始PCM数据是有特定参数要求的,比如要求必须是44100_s16le_2。但是你提供的PCM参数可能是48000_f32le_1。这个时候就需要先将48000_f32le_1转换成44100_s16le_2,然后再使用音频编码器对转换后的PCM进行编码。通过下面的命令行可以将44100_s16le_2转换成48000_f32le_1。完整代码:(我这里是将功能封装在线程里,其中还考虑了线程的关闭问题)重采样的主要思路是看创建重采样上下文的方法。原创 2022-12-14 10:59:17 · 816 阅读 · 0 评论 -
四、qt中通过sdl播放wav视频
这里表示SDL_LoadWAV被定义为了SDL_LoadWAV_RW(即SDL_LoadWAV_RW和SDL_LoadWAV是一样的)代码中播放wav视频和播放pcm的思路类似,但首先需要解析wav的头文件。完整代码:(我这里是将功能封装在线程里,其中还考虑了线程的关闭问题)关于SDL_LoadWAV_RW的方法介绍如下。播放wav音频,sdl提供了封装好的方法。原创 2022-12-13 20:40:56 · 661 阅读 · 0 评论 -
三、pcm音频转wav
具体功能是先将文件头的十六进制数据写入文件(需要记录下变化的地方,等待读取pcm的数据之后才能确定),然后将pcm中的十六进制数据写入wav文件。首先分析wav文件格式(wav的本质是在pcm数据前加上文件头),即在pcm的十六进制数据前加上文件头(文件头也是十六进制数据,但有些内容是固定的,有些内容是变化的)(以下是wav文件头的格式,第二张图为文件头十六进制存储的样子,一个十六进制为一个字节,一个ASCII编码占一个字节,文件头总长为44字节)pcm和wav文件大小对比,wav多了44字节的文件头。原创 2022-12-13 19:55:08 · 4638 阅读 · 0 评论 -
二、qt中通过sdl播放pcm视频
在qt中实现ffmpeg通过外接设备录制音频,因c语言相关代码执行步骤较为复杂,于是做此记录。ffmpeg系列博客会陆续记录下来。测试环境:注意:播放音频在命令行使用的是ffplay,其底层是通过ffmpeg和sdl实现音频的播放,故代码中需要使用sdl库qt中实现使用sdl播放视频在使用sdl前,需要配置导入库(不需要配置sdl的环境变量),这里不多介绍sdl播放pcm视频思路:1、导入库(.pro文件中导入库的时候需要多加一个DEFINES)2、导入头文件3、初始化子系统sdl通过不同的子系统实现对原创 2022-06-20 14:19:47 · 663 阅读 · 0 评论 -
一、ffmpeg录制音频为pcm文件
在qt中实现ffmpeg通过外接设备录制音频,因c语言相关代码执行步骤较为复杂,于是做此记录。ffmpeg系列博客会陆续记录下来。测试环境:使用ffmpeg首先需要下载ffmpeg相关库,并将其配置到环境变量和导入编译器中,这里下载shared版本(这样既有ffmpeg的可执行程序,又有ffmpoeg库文件)导入环境变量只需将D:\1c++\ffmpeg-N-103922-g3ee4502753-win64-lgpl-shared\bin\路径添加到环境变量即可,这里视自己的路径而定,路径不能有中文(这里不原创 2022-06-20 14:15:54 · 1544 阅读 · 0 评论