![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ffmpeg
tony_jx
软件从业者
展开
-
FFmpeg基础概念+流程图示
FFmpeg是一套用来记录,转换数字音视频,并可以转换成流的开源程序,可以轻易地实现多种视频格式之间的转换。基础概念容器/文件(container/file):特定格式的多媒体文件,如mp4,flv等。 媒体流(stream):时间轴上的一段连续数据,如一段音频数据,一段视频数据或者一段字幕数据。可以非压缩的,也可以是压缩的(压缩需要关联特定的编解码器)。 数据帧/数据包(Frame/Packet):一个媒体流有大量的数据帧组成,对于压缩数据,帧是编解码器最小的处理单元。 Frame对应压缩前原创 2020-11-17 19:57:30 · 656 阅读 · 0 评论 -
视频编解码硬件加速器分类
视频编解码硬件加速器分类NVIDIA CUVID (N卡专用)。 Intel QuickSync(核显专用)。 DXVA:DXVA是DirectX Video Acceleration的简称,中文译为视频硬件加速。DXVA是微软公司专门定制的视频加速规范,它共有两个版本,分别是DXVA 1.0和DXVA 2.0,几乎所有的显卡都具备硬件加速能力。 DXVA2(native) (纯dxva,以上都不支持则推荐native)。 DXVA2(copy-back) (dxva无渲染)。...原创 2021-12-31 18:06:07 · 3541 阅读 · 0 评论 -
QtAV Windows编译
在.qmake.conf中添加CONFIG += no_config_testsINCLUDEPATH += $$PWD/ffmpeg/includeLIBS += -L$$PWD/ffmpeg/win_x64/libCONFIG+=config_avutil config_avformat config_avcodec config_swscale config_swresample原创 2021-10-27 15:25:34 · 277 阅读 · 0 评论 -
图像显示异常问题处理
图像变换问题 图像错位 图像宽高存在对齐问题。音视频图像问题 图像花屏 相关帧(非关键帧)解码失败。 图像卡顿 关键帧解码失败,造成该gop中的所有帧解码失败。原创 2021-10-26 13:53:02 · 221 阅读 · 0 评论 -
ffmpeg api(新)编码和获取编码器上下文
ffmpeg使用新版本api进行编码void encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *output){ int ret; //发送Frame到编码器 ret = avcodec_send_frame(ctx, frame); if (ret < 0) { //发送失败,则退出程序(编码器未准备好) fprintf(stderr, "Error sending the frame to th原创 2021-10-18 10:52:41 · 842 阅读 · 0 评论 -
av_seek_frame获取当前Frame
av_seek_frame对视频进行跳转,但该方法使用还是有些坑说明如下。I/P/B帧I frame:自身可以通过视频解压算法解压成一张单独的完整的图片。P frame:需要参考其前面的一个I/P/B来生成一张完整的图片。B frame:则要参考其前一个I或者P帧及其后面的一个P帧来生成一张完整的图片。两个I frame之间形成一个GOP。flag参数#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward,若你设置seek时原创 2021-10-15 14:44:34 · 608 阅读 · 0 评论 -
ffmpeg命令行
修改多媒体帧率ffmpeg -i in.mp4 -r 30 -an out.mp4修改多媒体帧率并取消B帧ffmpeg -i in.mp4 -r 30 -bf 0 -an out.mp4原创 2021-10-09 11:25:30 · 88 阅读 · 0 评论 -
ffprobe获取视频信息命令
获取视频总体信息ffprobe xxx获取流信息ffprobe -show_streams xxx获取每一个包的信息ffprobe -show_packets xxx获取每一帧信息ffprobe-show_frames xxx指定输出格式(如json)ffprobe -print_format json xxxffprobe -of json xxx...原创 2021-10-09 10:00:23 · 1285 阅读 · 0 评论 -
ffmpeg音频编码
ffmpeg音频数据编码,程序如下:extern "C"{#include <libavutil/avutil.h>#include <libavformat/avformat.h>#include <libavformat/avio.h>#include <libavcodec/avcodec.h>#include <libswscale/swscale.h>}#pragma warning(disable:4996)原创 2021-09-30 10:38:26 · 664 阅读 · 0 评论 -
ffmpeg api解码音频,得到pcm数据
ffmpeg解码音频extern "C"{#include "libavutil/avutil.h"#include "libavformat/avformat.h"#include "libavcodec/avcodec.h"#include "libswresample/swresample.h"}#pragma warning(disable:4996)static int MAX_AUDIO_FRAME_SIZE = 192000原创 2021-09-29 15:55:06 · 733 阅读 · 0 评论 -
ffmpeg解码视频流,并保存成图片
ffmpeg解码视频流,并保存成图片。程序如下:#include <stdio.h>extern "C"{#include "libavutil/avutil.h"#include "libavformat/avformat.h"#include "libavcodec/avcodec.h"#include "libswscale/swscale.h"}#pragma warning(disable:4996)static AVFormatContext *for原创 2021-09-27 10:17:14 · 842 阅读 · 0 评论 -
ffmpeg在复用和解复用过程中出现问题解决方法
ffmpeg在复用和解复用过程中出现问题,大致有两个角度来解决。第一个角度:ffmpeg初始化错误,编解码器复制错误等。第二个角度:写入AVPacket的pts,dts,duration错误,通过如下的日志来进行分析。/*输出当前packet的信息*/void logPacket(const AVFormatContext *context, const AVPacket *avPacket, const char *tag){ AVRational *time_ba原创 2021-09-23 13:49:03 · 337 阅读 · 0 评论 -
ffmpeg合并(复用)音频和视频文件,组成mp4
ffmpeg合并(复用)音频和视频文件,组成mp4。程序如下:/*合并音频和视频,形成音视频*/extern "C"{#include "libavutil/avutil.h"#include "libavformat/avformat.h"#include "libavformat/avio.h"#include "libavcodec/avcodec.h"}#pragma warning(disable:4996)int main(){ // const ch原创 2021-09-23 13:40:03 · 2226 阅读 · 0 评论 -
ffmpeg媒体格式转换
ffmpeg媒体格式转换,如mp4->flv/*媒体格式转换, mp4->flv*/extern "C"{#include "libavutil/avutil.h"#include "libavformat/avformat.h"#include "libavformat/avio.h"#include "libavcodec/avcodec.h"}#pragma warning(disable:4996)//输出packet信息void log_packet原创 2021-09-22 19:11:39 · 241 阅读 · 0 评论 -
ffmpeg截取mp4其中的一段音视频
ffmpeg截取MP4中的一段音视频,程序如下:#include <stdlib.h>extern "C"{#define __STDC_FORMAT_MACROS#include "libavutil/avutil.h"#include "libavutil/timestamp.h"#include "libavformat/avformat.h"#include "libavformat/avio.h"}#pragma warning(disable:4996)原创 2021-09-22 18:38:15 · 318 阅读 · 0 评论 -
ffmpeg创建输出上下文(AVFormatContext)方法
方法1原型:int avformat_alloc_output_context2(AVFormatContext **ctx, ff_const59 AVOutputFormat *oformat, const char *format_name, const char *filename);使用:int ret = avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, destMedia);说明:该方法等同于方法2的两原创 2021-09-22 18:23:40 · 426 阅读 · 0 评论 -
ffmpeg中AVPacket创建方式
方式1:申请空间:AVPacket avPacket;av_init_packet(&avPacket);方式2:申请空间:AVPacket *out = NULL;out = av_packet_alloc();清空数据:av_packet_unref(&avPacket);av_free_packet(&avPacket);释放空间:av_packet_free(&pkt);//原型:针对指针类型void av_pa原创 2021-09-22 15:29:14 · 320 阅读 · 0 评论 -
ffprobe输出音视频详情
ffprobe输出音视频详情Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\T2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf55.33.100 copyright : copyright-eng :原创 2021-09-22 10:29:15 · 454 阅读 · 0 评论 -
C++/vs2019使用ffmpeg报错:#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
C++/vs2019使用ffmpeg报错:#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS,解决办法-在common.h中添加宏定义,如下。#ifndef AVUTIL_COMMON_H#define AVUTIL_COMMON_H//添加宏定义#ifdef __cplusplus#define __STDC_CONSTANT_MACROS#ifdef _STDINT_H#undef STDI原创 2021-09-21 15:38:28 · 697 阅读 · 0 评论 -
ffmpeg从mp4(音视频)中提取h264(视频)
ffmpeg从mp4(音视频)中提取h264(视频)/* * 提取视频中的视频数据: https://www.jianshu.com/p/11cdf48ec248 * */#include <stdio.h>extern "C"{#include <libavformat/avformat.h>#include <libavutil/log.h>#include <libavformat/avio.h>}#pragma war原创 2021-09-16 19:48:34 · 2499 阅读 · 1 评论 -
ffmpeg从mp4(音视频)中提取音频aac
ffmpeg从mp4(音视频)中提取音频aacextern "C"{#include "libavutil/avutil.h"#include "libavformat/avformat.h"}#pragma warning(disable:4996)//全局变量static AVFormatContext *g_formatContext = NULL;static AVFrame* g_avFrame = NULL;static FILE *g_destFile = NUL原创 2021-09-15 16:11:39 · 2217 阅读 · 0 评论 -
ffmpeg使用avio读写文件
avio读取文件extern "C"{#include "libavutil/avutil.h"#include "libavformat/avformat.h"#include "libavformat/avio.h"}#pragma warning(disable:4996)int main(){ // //const char* file = "E:/media/test.txt"; const char* file = "../media/test.txt"; AV原创 2021-09-14 14:51:42 · 842 阅读 · 0 评论 -
音频数据计算
.wav" 的文件长度是 424,644 字节, 它是 "22050HZ / 16bit / 立体声" (格式可以从其 "属性->摘要" 里看到)。计算它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒),播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。但是这还不够精确, 包装标准的 PCM 格式的 WAVE 文件(*.wa.原创 2021-08-10 13:07:37 · 1179 阅读 · 0 评论 -
FFMPEG使用摄像头录像并编码
FFMPEG可以直接使用摄像头录像,并支持对其进行编解码。使用FFMPEG获取当前的摄像头设备原创 2021-06-12 18:07:15 · 1527 阅读 · 2 评论 -
FFMPEG获取音视频的设备列表
FFMPEG可以直接通过命令行获取音视频设备列表,命令如下:ffmpeg -list_devices true -f dshow -i dummy相关链接:原创 2021-06-12 17:29:13 · 2968 阅读 · 0 评论 -
ffmpeg解码流程
ffmpeg解码流程图示原创 2021-06-12 10:45:14 · 255 阅读 · 0 评论 -
ffmpeg获取网络视频信息
流程示意图原创 2021-06-06 11:17:06 · 429 阅读 · 2 评论 -
ffmpeg获取本地视频详情
流程示意图原创 2021-06-06 10:53:20 · 224 阅读 · 1 评论 -
ffmpeg配置并测试第一个程序
下载ffmpeg SDK。vs添加包含目录和附加库目录。编写第一个测试程序extern "C"{ #include "libavcodec/avcodec.h"}#pragma comment(lib, "avcodec.lib")int main(){ printf("%s\n", avcodec_configuration()); system("pause"); return 0;}输出...原创 2021-06-06 10:27:12 · 218 阅读 · 0 评论 -
YUV420格式
图示原创 2021-06-06 08:24:48 · 119 阅读 · 0 评论 -
ffmpeg常用命令
ffmpeg提取yuvffmpeg -i xxxxx.mp4 -s XXXxXXX -pix_fmt yuv420p yyyy.yuvH264视频转ts视频流ffmpeg -i xxx.h264 -vcodec copy -f mpegts test.tsmp4视频转flvffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv原创 2021-05-30 19:07:10 · 122 阅读 · 0 评论