FFmpeg
文章平均质量分 77
ffmpeg入门级教程
灬Sunnnnn
承接各种定制开发,Qt、音视频、流媒体、客户端、服务端,需要的私聊。
展开
-
SDL2 播放音频(MP4)
这里引入FFmpeg库,获取音频流数据,然后通过FFmpeg将视频流解码成pcm原始数据,再将pcm数据送入到SDL库中实现音频播放。原创 2023-11-15 21:44:54 · 897 阅读 · 0 评论 -
SDL2 播放视频文件(MP4)
这里引入FFmpeg库,获取视频流数据,然后通过FFmpeg将视频流解码成YUV原始数据,再将YUV数据送入到SDL库中实现视频播放。原创 2023-11-14 16:28:49 · 1017 阅读 · 0 评论 -
FLV文件简介
FLV是Adobe发布的一种可以作为直播也可以作为点播的封装格式,格式非常简单,均以FLVTAG的形式存在,并且每一个TAG都是独立存在的。2.1FLV文件头以下是我打开一个FLV文件,查看16进制数据。 从上图中分析可知:2.2FLV文件内容格式FLV文件内容如下所示:表中可以看见FLV文件内容格式主要是FLVTAG,FLVTAG分为两部分TAGHeader+TAGBody。如下图所示,我展示了一个音频的TAG,可以看见header为11字节 body 为4字节,紧接着跟了一个4字节大小的 “上一个TAG原创 2022-07-27 20:54:10 · 961 阅读 · 0 评论 -
FFmpeg 视频添加水印
本示例,在视频中添加一个logo图片,把添加水印好的图片保存到本地。原创 2022-07-25 21:27:17 · 4914 阅读 · 5 评论 -
FFmpeg 视频编码
编码视频数据,如下图所示,将原始的YUV数据编码为H.264或者H.265。原创 2022-07-25 18:55:37 · 1955 阅读 · 1 评论 -
FFmpeg 音频编码
编码音频数据,把pcm原始数据编码为MP3或者AAC。原创 2022-07-21 21:04:54 · 2019 阅读 · 0 评论 -
FFmpeg 音频解码(秒懂)
解码音频数据,如下图所示,把MP3或者AAC数据解码成原始的数据pcm。原创 2022-07-20 21:10:03 · 4503 阅读 · 2 评论 -
FFmpeg 视频解码(秒懂)
解码如下图所示,将H.264数据解码为YUV。原创 2022-07-18 22:17:15 · 6361 阅读 · 0 评论 -
FFmpeg 音视频截取
在日常处理视频文件时常常会用到视频片段的截取功能,FFmpeg支持该功能,拥有视频的起始时间定位以及截取视频长度的接口av_seek_frame。原创 2022-07-18 19:42:39 · 960 阅读 · 0 评论 -
FFmpeg 音视频转封装(MP4与FLV互转,流数据转FLV、MP4)
音视频文件转封装操作就是把一种格式转换为另外一种格式,例如从flv转到MP4,或者把流地址数据转换为MP4。本文主要讲解流地址数据转为flv文件。原创 2022-07-14 22:24:28 · 2318 阅读 · 0 评论 -
FFmpeg 音视频解封装
解封装如下图所示,就是将FLV、MKV、MP4等文件解封装为视频H.264或H.265压缩数据,音频MP3或AAC的压缩数据,下图为常用的基本操作。原创 2022-07-14 20:21:22 · 987 阅读 · 0 评论 -
MP4文件简介
首先了解以下几个概念:下图为主要的box:MP4infoMP4info-C++文档类资源-CSDN下载MP4info更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/wzz953200463/86033110使用MP4info工具打开任意一个MP4文件,如下图所示。3.1moov容器至少包含以下3种中的一种:也可以包含其他容器信息,例如:一个或几个trakAtom(trak)、User Data Atom(udta)等。trak中定义了媒体文原创 2022-07-11 23:24:32 · 4083 阅读 · 0 评论 -
FFmpeg 简介
FFmpeg框架基本组成包含AVFormat、AVCodec、AVFilter、AVDevice、AVUtil等模块库。AVFormat中实现了绝大多数媒体封装格式,包括封装和解封装,如MP4、FLV、TS等文件封装格式,RTMP、RTSP、HLS等网络协议封装格式。AVCodec实现了绝大多数常用的编解码格式,既支持编码,也支持解码。除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式外,还支持第三方的编解码器,如H.264编码、H.265编码;MP3编码。AVFilter提供来了一个通用的音频、原创 2022-07-11 20:43:57 · 1055 阅读 · 0 评论 -
M3U8 文件格式简介
HLS协议HLS是一个由苹果公司提出的基于 HTTP的流媒体网络传输协议,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。工作原理:整个流分成一个个小的基于 HTTP的ts格式文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。HLS 只请求基本的 HTTP..原创 2021-04-28 18:27:09 · 36273 阅读 · 0 评论 -
Qt+ffmpeg实现视频流编码成MP4
1.实现思路拉流cctv1:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u81.1编码线程头文件#pragma once#include <QThread>#include "Config.h"class EncodeThread : public QThread{ Q_OBJECTpublic: EncodeThread(QObject *parent); ~EncodeThread();public: void se原创 2021-04-21 23:42:01 · 2447 阅读 · 8 评论 -
QT+Opencv实现视频流播放
1.流程首先通过opencv打开视频流,获取到数据帧,然后将数据帧转换为QT可识别的图像,显示到QT界面上。2.opencv解码线程源码//DecodeOpencv.h#pragma once#include <QThread>#include <QObject>#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/img..原创 2020-09-23 14:36:38 · 5943 阅读 · 2 评论 -
Qt+ffmpeg实现视频流播放
1.版本Qt版本:5.11 64位ffmpeg版本:>3.064位2.实现思路ffmpeg拉流、解码,因为Qt不支持显示yuv数据,需要ffmpeg转换为rgb数据,再用QImage显示,这种方式性能会不好,暂时先实现这种简单的。一般情况下会用opengl渲染。3.示例拉流cctv1:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8,此例子只解码视频数据,不处理音频。代码:解码线程#pragma once#include <.原创 2021-04-21 11:37:58 · 6199 阅读 · 3 评论 -
H.264简介
一.基础概念I帧:帧内编码帧(intra picture),采用帧内压缩去掉空间冗余信息。P帧:前向预测编码帧(predictive-frame),通过将图像序列中前面已经编码帧的时间冗余信息来压缩传输数据量的编码图像。参考前面的I帧或者P帧。B帧:双向预测内插编码帧(bi-directional interpolated prediction frame),既考虑源图像序列前面的...原创 2019-12-19 19:34:49 · 6094 阅读 · 1 评论 -
FFmpeg常用数据结构
一. 总体关系图二. 简介1.在以往的版本 av_register_all()放在最开头,作用是注册所有组件,但现在的ffmpeg版本已经不需要调用这个接口2.avformat_open_input():打开多媒体文件流,并读取文件的头,将读取到的信息填充到AVFormatContext结构体中。int avformat_open_input(AVFormat...原创 2019-12-11 22:12:39 · 468 阅读 · 0 评论 -
搭建QT+ffmpeg+Visual Studio开发环境
1.环境介绍本文使用的是版本 Qt5.9.2+VS2017+ffmpeg4.2.1,这里版本均使用32位版本2.Qt版本下载http://download.qt.io/archive/qt/3.下载ffmpeg打开https://ffmpeg.zeranoe.com/builds/,该网站中的FFMPEG分为3个版本:Static,Shared,Dev,都下载下来。...原创 2019-12-10 20:53:45 · 1339 阅读 · 0 评论 -
音视频开发基础知识
一. 颜色模式1.RGBRGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。①RGB24:RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。②RGB32:RGB32使用32位来表示一个像素,RGB分量各用去8位表示,剩下...原创 2019-12-09 14:06:34 · 2349 阅读 · 0 评论