• 2024-09-20[ffmpeg] 音视频编码
    本文主要梳理ffmpeg中音视频编码的常用函数API调用常用APIconstAVCodec*avcodec_find_encoder(enumAVCodecIDid);AVCodecContext*avcodec_alloc_context3(constAVCodec*codec);voidavcodec_free_context(AVCodecContext**avctx);intavcodec_open2(AVCode
  • 2024-07-28视频解码基础讲解
    视频解码流程视频解码的具体步骤如下:查找指定的解码器avcodec_find_decoder根据指定的解码器ID初始化相应裸流的解析器av_parser_init分配解码器上下文avcodec_alloc_context3打开解码器和关联解码器上下文avcodec_open2读取原始裸流fread解析出一个完整的数据包av_p
  • 2024-07-28音频解码基础讲解
    音频解码流程音频解码的总体流程如下:输入音频格式(例如AAC)通过音频解码器进行解码得到PCM数据FFmpeg解码流程音频解码的具体步骤如下:查找指定的解码器avcodec_find_decoder根据指定的解码器ID初始化相应裸流的解析器av_parser_init分配解码器上下文avcodec_alloc_conte
  • 2024-07-21ffmpeg解码基本流程
    1.分配解码器上下文AVCodecContext*avcodec_alloc_context3(constAVCodec*codec);首先,需要为解码器分配一个上下文,这一步通过avcodec_alloc_context3函数完成。这个函数会返回一个指向AVCodecContext结构的指针,它将保存解码器的相关信息。2.将码流中的编解码器信息拷贝到
  • 2024-07-20FFmpeg基础
    文章目录播放器框架常见音视频概念编解码器FFmpeg的整体结构FFmpeg常用函数简介注册相关封装格式相关解码器相关FFmpeg常用结构体简介ffmpeg内存模型播放器框架tips:音频和视频用的处理的是一套通用的框架AVFormatContext是解复用后音视频流的句柄(类似于文件描述
  • 2024-06-01ffmpeg编码之实现YUV转换成H264
    方法1:命令转换#转换ffmpeg-s720*1280-pix_fmtyuv420p-iinput.yuv-vcodeclibx264-b:v4096k-bf0-g10-r30output.h264#播放ffplayoutput.h264方法2:代码转换 main.c#include"libavutil/log.h"#include"libavutil/avutil.h"#include
  • 2024-05-28ffmpeg保存视频为bmp图片
    方法1:命令保存#保存bmp图片ffmpeg-iinput.mp4-vfscale=768:432picture/%d.bmp#播放ffplaypicture/87.bmp方法2:代码保存 main.c#include"libavutil/log.h"#include"libavformat/avformat.h"#include"libavutil/avutil.h"#include&quo
  • 2024-05-28ffmpeg修改颜色空间
    方法1:命令修改颜色空间#修改颜色空间ffmpeg-iinput.mp4-s1280*1024-pix_fmtrgb24output.rgb#播放ffplay-s1280*1024-pix_fmtrgb24output.rgb方法2:代码转换 main.c#include"libavutil/log.h"#include"libavformat/avformat.h"#include"libav
  • 2024-05-27ffmpeg修改分辨率
    方法1:命令修改分辨率#修改分辨率ffmpeg-iinput.mp4-vfscale=1280:1024-frawvideooutput.yuv#播放ffplay-s1280*1024-pix_fmtyuv420poutput.yuv方法2:代码转换 main.c#include"libavutil/log.h"#include"libavformat/avformat.h"#include"l
  • 2024-05-26ffmpeg解码YUV
    方法1:命令解码#解码命令ffmpeg-iinput.mp4-frawvideooutput.yuv#播放命令ffplay-s720x1280-pix_fmtyuv420poutput.yuv方法2:代码解码 main.c#include"libavutil/log.h"#include"libavformat/avformat.h"#include"libavutil/avutil.h&quo
  • 2024-04-06AVFrame(avcodec.h)
    AVFrameAVFrame是包含码流参数较多的结构体/***AudioVideoFrame.*NewfieldscanbeaddedtotheendofAVFRAMEwithminorversion*bumps.Similarlyfieldsthataremarkedastobeonlyaccessedby*av_opt_ptr()canbereordered.Thisallows2forks
  • 2024-04-06AVCodec(avcodec.h)
    AVCodecAVCodec是存储编解码器信息的结构体。/***AVCodec.*/typedefstructAVCodec{/***Nameofthecodecimplementation.*Thenameisgloballyuniqueamongencodersandamongdecoders(butan*encoderandadecodercansharethe
  • 2024-03-24FFMpeg笔记(十二)升级FFmpeg6.1
      FFmpeg最新版已更新6.1,许多之前标记为deprecated的api被彻底删除了,同时也增加了好多新的特性和功能。FFmpeg团队持续优化代码,新版本往往具有更高的编码和解码效率,因此及时更新FFmpeg版本,有利于提升应用的处理速度和资源利用率。本文记录项目中FFmpeg更新至6.1版本过程中遇到
  • 2024-03-20ffmpeg SDK编码MP4 AAC的一处小坑
    在最新版的ffmpegSDK中,如果我们按照一般的编码音频的步骤编码AAC并封入MP4,我们往往会写入一个很奇怪的音频Stream。它的MediaInfo会长这样:如图所示,解码器不能理解这个流,会认为它就是一个ERParametric而不能理解它是AAC。ffprobe查看stream其配置也会很奇怪:[STREAM]index=1c
  • 2024-03-10FFmpeg开发笔记(四)FFmpeg的动态链接库介绍
    FFmpeg不仅提供了ffmpeg、ffplay和ffprobe三个可执行程序,还提供了八个工具库,使得开发者能够调用库里面的函数,从而实现更精准的定制化开发需求。这八个库的名字是avcodec、avdevice、avfilter、avformat、avutil、postproc、swresample、swscale,下面分别对这些库展开介绍。更多详细
  • 2024-03-09AVCodec
    AVCodec是存储编解码信息的结构体。/***AVCodec.*/typedefstructAVCodec{/***Nameofthecodecimplementation.*Thenameisgloballyuniqueamongencodersandamongdecoders(butan*encoderandadecodercansharethesamename)
  • 2024-03-09AVCodecContext(avcodec.h)
    AVCodecContext(位于avcodec.h)AVCodecContext是包含变量较多的结构体(感觉差不多是变量最多的结构体).本文将会大概分析一下该结构体里面每个变量的含义和作用。/***mainexternalAPIstructure.*Newfieldscanbeaddedtotheendwithminorversionbumps.*Rem
  • 2024-02-07详解avcodec_receive_packet 11
    详解avcodec_receive_packet在音视频处理中,avcodec_receive_packet是一个重要的函数,它负责接收编码器输出的数据包。在本篇文章中,我们将详细介绍avcodec_receive_packet函数的用法和参数,并说明其在音视频处理中的作用。函数介绍avcodec_receive_packet是FFmpeg中的一个函数,其定义如
  • 2024-01-23详解avcodec_encode_video2 AVERROR(EAGAIN)
    详解avcodec_encode_video2AVERROR(EAGAIN)在视频编码过程中,可能会遇到错误码AVERROR(EAGAIN)。本篇技术博客将详细解释avcodec_encode_video2函数中的AVERROR(EAGAIN)错误码的含义,并讨论可能的原因和解决方案。什么是avcodec_encode_video2?avcodec_encode_video2是FFmpeg(一个流行
  • 2024-01-21详解ffmpeg avcodec_encode_video2 函数报错
    详解ffmpegavcodec_encode_video2函数报错在使用FFmpeg进行视频编码时,开发者经常会使用avcodec_encode_video2函数来进行编码操作。然而,有时候会遇到该函数报错的情况,本文将详细解析这个问题及其可能的解决方法。问题描述当调用avcodec_encode_video2函数时,可能会出现以下错误信
  • 2023-09-09ffmpeg新旧函数对比
    从FFmpeg3.0开始,使用了很多新接口,对不如下:1.avcodec_decode_video2()原本的解码函数被拆解为两个函数avcodec_send_packet()和avcodec_receive_frame()具体用法如下:old:avcodec_decode_video2(pCodecCtx,pFrame,&got_picture,pPacket);new:avcodec_send_packet(pCo
  • 2023-08-22FFmpeg将视频转换成一帧一帧的jpeg图片(代码实现)
      #include<iostream> usingnamespacestd; extern"C" { #include"libavcodec/avcodec.h" #include"libavformat/avformat.h" #include"libswscale/swscale.h" #include
  • 2023-08-22ffmpeg把读取的视频流保存为jpeg文件
    intimg_savejpeg(AVFrame*pFrame,char*out_filename){//视频流保存为jpegintwidth=pFrame->width;intheight=pFrame->height;AVCodecContext*pCodeCtx=NULL;AVFormatContext*pFormatCtx=avformat_alloc_context();//设置输出文件格式pFormatCtx->oformat=av
  • 2023-08-20x86_64/aarch64架构下ffpyplayer源码编译
    问题来源:某鱼上挂着pytorch的aarch64架构下的源码编译,遇到某网友提出的要在aarch64架构下的ubuntu上ffpyplayer源码编译,于是有了本文。  =================================================   1.下载源码ffpyplayer源码下载地址:https://github.com/matham/ffpypla
  • 2023-08-11ffmpeg使用avformat_close_input()函数释放结构体时崩溃的问题
    先看一下我调试时,发现程序崩溃的代码位置  //这是我的程序释放流上下文时的操作 if(m_pAvFormatContext) { //释放视频解码器上下文 if(m_iVideoStreamIndex>=0) avcodec_free_context(&m_pVideoDecodeContext);//此处是发生崩溃