
ffmpeg
文章平均质量分 75
朱韦刚
qq群:62054820
展开
-
ffmpeg中如何取出AVFormatContext::void *priv_data到一个结构体中;
ffmpeg中如何取出AVFormatContext::void *priv_data到一个结构体中;其中SRTContext在对应ffmpeg_4.2.3_win32源码中ffmpeg-4.2.3\libavformat\libsrt.c的结构体,不同版本应对应;SRTContext* srt_ffio_geturlcontext(AVIOContext *s){ AVIODirContext *internal; if (!s) { return NULL; } intern原创 2020-06-05 14:23:29 · 778 阅读 · 0 评论 -
ffmpeg通过spspps的信息解析视频宽高和yuv格式(一)
本文内容是ffmpeg通过spspps的信息解析视频宽高和yuv格式,ffmpeg对这个支持没有对外接口,可以参考下面文章。http://ffmpeg.org/pipermail/ffmpeg-devel/2015-July/176434.html。如果想解析请看下面:/* 通过sps/pps和一个idr帧获取视频宽高以及yuv格式(必须包含一帧IDR帧否则解析不出来,也可以...原创 2020-06-11 10:37:15 · 1434 阅读 · 0 评论 -
ffmpeg关于io的输入输出操作
ffmpeg关于io的输入输出操作ffmpeg 无论转码是本地文件输入输出,例如将mp4文件 转成 flv文件,或者从rtmp流接入到rtsp流,这时候我们在输入输出端拿不到数据流,只能拿到输入输出的地址,这时候ffmpeg的 io就出场了,道理是把输入输出流写入到缓存中,在做处理。应用场景例如:从http 拿到的数据流,从摄像头拿到的数据流,这些都能作为io输入,将mux后的数据write到原创 2016-09-29 14:26:07 · 5213 阅读 · 0 评论 -
av_bitstream_filter_filter memory free
How may I free pkt in an ffmpeg write frame methodRate this: See more: C++ ffmpegGreet转载 2016-11-29 14:30:11 · 2251 阅读 · 0 评论 -
ffmpeg重采样中swr_convert和swr_get_out_samples的用法
ffmpeg重采样中swr_convert和swr_get_out_samples的用法在做mux的时候关于重采样可以用fifo,或者audiofifo做缓存处理,当做demux的时候关于重采样就可以用到上面的swr_convert和swr_get_out_samples做配合处理。先看下这两个函数的注释:/** Convert audio. * * in and in_count c原创 2016-11-29 16:51:31 · 5823 阅读 · 1 评论 -
FFmpeg关于nb_smples,frame_size以及profile的解释
FFmpeg关于nb_smples,frame_size以及profile的解释原来一直记得固定编码格式需要固定的sample,例如下面:1) AAC:nb_samples和frame_size = 1024一帧数据量:1024*2*av_get_bytes_per_sample(s16) = 4096个字节。会编码:88200/(1024*2*av_get_bytes原创 2016-11-25 16:09:48 · 12973 阅读 · 0 评论 -
ffmpeg视频添加filter-yuv
ffmpeg_视频添加filter-yuv直接上代码,具体问题请看注释。//main.cpp#define __STDC_CONSTANT_MACROS #include #include extern "C" { #include "libavformat/avformat.h" #include "libavformat/avio.h" #include原创 2017-01-23 17:38:09 · 1686 阅读 · 0 评论 -
ffmpeg视频添加filter-flv
ffmpeg视频添加filter-flv具体问题请看代码及代码注释。//.h#ifndef __FFMPEG_H__#define __FFMPEG_H__#include "info.h"extern "C"{#include "libavformat/avformat.h"#include "libavformat/avio.h"#include "lib原创 2017-01-23 17:49:18 · 1440 阅读 · 0 评论 -
ffmpeg关于timebase的理解
ffmpeg关于timebase的理解一:ffmpeg的分层结构写这篇文章的时候先把ffmpeg分层问题大致说明一下,我们按照最常见的 "转码程序" 和 "摄像头采集" 以及 "播放器" 三个模型总结。1:转码转码基本流程:flv格式数据-->h264/aac数据-->yuv/pcm数据-->h264/aac数据-->mp4格式数据。a:我们把flv格式数据或者m原创 2017-03-22 17:24:26 · 15041 阅读 · 18 评论 -
ffmpeg转码多路输出(二)
ffmpeg转码多路输出(二)本程序支持一路输入多路输出,可根据map配置自行添加,第1路为纯拷贝,其他2路经过编解码,格式转换缩放和重采样,纯拷贝方面不同格式适应方面还没做全,以后补充。本程序适合多分辨率切换等方面内容。注意重采样等方面的注释内容。具体看代码://main.cpp#include "ffmpeg_transcode.h"/*int main(){ AV原创 2017-05-18 18:33:13 · 11921 阅读 · 2 评论 -
ffmpeg重采样resample包含AVAudioFifo(三)
ffmpeg重采样resample包含AVAudioFifo(三)本篇文章记录ffmpeg重采样和AVAudioFifo一起用的实现,如果看完整的流程请看这边文章:http://blog.youkuaiyun.com/zhuweigangzwg/article/details/72481966,本文只讲重采样和AVAudioFifo的用法,具体看代码注释。SwrContext * ffmpeg_ini原创 2017-05-22 11:29:18 · 5746 阅读 · 5 评论 -
最简单的基于FFmpeg的AVDevice例子(屏幕录制)
原文地址:http://blog.youkuaiyun.com/leixiaohua1020/article/details/39706721 雷神的博客,致敬雷神。抓屏方法上篇文章记录了libavdevice的使用方法,本文不再重复。在Windows系统使用libavdevice抓取屏幕数据有两种方法:gdigrab和dshow。下文分别介绍。1. gdigrabgdigrab是FFmpeg专门用于抓取Wi转载 2017-11-08 15:51:10 · 5517 阅读 · 3 评论 -
FFMPEG关于推流端降低延迟调节(一)
FFMPEG关于推流端降低延迟调节(一)本文所写的是调节推流端降低延迟能调节的一些方案,有不足请补充,其他端方向类似,例如降低采集缓存,减少编码时间等等,如有需要请参考。本文以windows推流端为例做解释。1:减少采集缓存 av_dict_set(&p_device_optio...原创 2018-08-30 16:18:15 · 30923 阅读 · 2 评论 -
FFmpeg新版本(2016年10月份以后) 支持硬件解码
转载链接:http://www.cnblogs.com/wainiwann/p/6972984.htmlFFmpeg provides a subsystem for hardware acceleration.Hardware acceleration allows to use specific devices (usually graphical card or other spec...转载 2018-10-10 10:03:36 · 5950 阅读 · 0 评论 -
ffmpeg关于音频的总结(一)
ffmpeg关于音频的总结(一)一:关于音频分片的问题enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, ///< unsigned 8 bits AV_SAMPLE_FMT_S16, ///< signed 16 bits AV_SAMPLE_FMT_S32,原创 2016-05-25 16:01:03 · 23772 阅读 · 6 评论 -
ffmpeg文件生成m3u8文件及ts切片程序(一)
ffmpeg文件生成m3u8文件及ts切片程序(一)实现目标:输入本地文件,实现m3u8切片,功能点请看注释,注意:注释很重要。//ffmpeg.h#ifndef __FFMPEG_H__#define __FFMPEG_H__#include "info.h"extern "C"{#include "libavformat/avformat.h"#inclu原创 2016-03-09 17:23:29 · 17385 阅读 · 3 评论 -
FFMPEG(二)-通用复用器
FFMPEG(二)-通用复用器一:技术要点 上一篇文章讲过,mp4类型的复用结构和其它类型不同,例如MP4,MOV,FLV等格式,里面的H264数据不包含SPS,PPS等说明信息,以减少开销,同样AAC数据也是如此,需要将前面的7个字节的ADTS头转换为两个字节的帧长度等。FFMPEG提供了一个叫filter过滤器的东西来实现此操作。为此下面列出了一些filter来实现原创 2013-12-09 14:39:16 · 3723 阅读 · 4 评论 -
ffmpeg缩放和格式转换yuv数据
ffmpeg缩放和格式转换yuv数据下面代码是实现用ffmpeg将yuv的宽高或者yuv格式变更的代码。例如:352*288->720*576(采用双三次或双线性差值),yuv420p->yuv422pint VideoScaleYuvZoom(int Is_flip,int in_width ,int in_height,int in_pix_原创 2015-02-11 14:56:01 · 6664 阅读 · 1 评论 -
播放器(一)-FFMPEG-SDL-MFC-本地文件
1:原理ffmpeg读取出来一个包如果是视频包放入视频包队列,如果是音频包放入音频包队列。视频:从视频队列中取出一个包解码根绝帧率或pts等等算出一帧数据的持续时间将这一帧数据放入VideoPicture这个结构体的bmp中,这只是内存,还未到显示,根据,Sleep()控制时间显示这一帧视频,并算出下一次刷新的时间,此时消耗了一个VideoPicture这个结构体的bmp。重新循环原创 2013-12-10 09:57:39 · 17868 阅读 · 11 评论 -
ffmpeg处理rtmp/文件/rtsp的推流和拉流
ffmpeg处理rtmp/文件/rtsp的推流和拉流本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用。由于本程序只写了3个小时,还要忙别的,所以会有一些bug和优化的地方。不过demo的意义已经达到了。//info.h#ifndef __INFO_H__#define __INFO_H__#in原创 2015-02-11 15:11:43 · 42242 阅读 · 22 评论 -
ffmpeg从AVFrame取出yuv数据到保存到char*中
ffmpeg从AVFrame取出yuv数据到保存到char*中很多人一直不知道怎么利用ffmpeg从AVFrame取出yuv数据到保存到char*中,下面代码将yuv420p和yuv422p的数据取出并保存到char*buf中。其他格式可以自己去扩展,前提先看戏yuv的各种格式,yuv的各种格式链接:http://blog.youkuaiyun.com/zhuweigangzwg/articl原创 2015-02-11 15:03:09 · 7874 阅读 · 1 评论 -
FFMPEG(一)-通用解复用器
一:技术要点:h264有两种封装,一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度很多解码器只支持annexb这种模式,因此需要将mp4做转换:在ffmpeg中用h264_mp4toa原创 2013-12-09 14:36:22 · 5764 阅读 · 0 评论 -
ffmpeg关于avformat_write_header问题
最近做转码遇到一些问题,先贴个代码在说明:int init_mux(){ int i = 0; /* allocate the output media context */ avformat_alloc_output_context2(&ocodec, NULL,NULL, OUTPUTURL); if (!ocodec) { return getchar(); } A原创 2015-07-21 19:02:15 · 7577 阅读 · 0 评论 -
ffmpeg编码器支持情况
ffmpeg 音视频编码器需要查看支持才能用否则打不开编码器。下面代码将展示查看ffmpeg中音频支持声道,采样率,样本情况;视频支持输入yuv格式情况,具体看下面代码。int audio_support(AVCodec * pCodec,int *channel,int * playout,int *samplePerSec,AVSampleFormat_t * sample_fmt)原创 2015-08-06 15:02:14 · 3553 阅读 · 0 评论 -
ffmpeg实现音频resample(重采样)(二)
本篇文章将增加AVFifoBuffer和音频样本是av_sample_fmt_is_planar的样式采样率讲解,下面上代码AVFifoBuffer * m_fifo = NULL;SwrContext * init_pcm_resample(AVFrame *in_frame, AVFrame *out_frame){ SwrContext * swr_ctx = NULL;原创 2015-08-06 15:19:12 · 12667 阅读 · 3 评论 -
linux编译ffmpeg(一)
linux编译ffmpeg(一)网上有很多ffmpeg编译的方法,但乱七八糟的比较多,今天编译了一下,下面是步骤,需要的可以看下。一:需要的库 可以上官网上下载最新版,不想上官网的可以下载下面的库,然后将下面的库解压并编译 “./configure” 。1:faac-1.28.tarhttp://download.youkuaiyun.com/detail/zhuwei原创 2015-02-28 18:58:38 · 2883 阅读 · 1 评论 -
ffmpeg:fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS参考文章:https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=15&t=158fatal error C1189: #error :转载 2015-11-12 15:24:38 · 3296 阅读 · 0 评论 -
ffmpeg关于文件头
在做转码的时候遇到些问题上述代码中codec_tag很重要生成的转码后的预览图:上面注释的可以用两种做判断,有些复用格式是需要全局头的。例如 mp4,flv,mov,3gp等格式。特此记录一下:交流请加QQ群:62054820QQ:379969650原创 2015-07-22 18:21:14 · 3375 阅读 · 0 评论 -
ffmpeg视频生成jpg图片截图(一)
ffmpeg视频生成jpg图片截图(一)实现目标:输入本地文件,实现截图生成jpeg图片到本地,功能点请看注释,注意:注释很重要。//ffmpeg.h#ifndef __FFMPEG_H__#define __FFMPEG_H__#include "info.h"extern "C"{#include #include #include "libavfo原创 2016-03-09 17:17:56 · 9426 阅读 · 0 评论 -
ffmpeg转码本地文件(一)
ffmpeg转码本地文件(一)实现目标:输入本地文件,实现本地文件转码,里面包含mux层转码,codec层转码,视频格式转换,音频重采样等功能,功能点请看注释,注意:注释很重要。#ifndef __FFMPEG_H__#define __FFMPEG_H__#include "info.h"extern "C"{#include "libavformat/原创 2016-03-09 17:27:51 · 4825 阅读 · 3 评论 -
fmpeg 自定义IO中断 AVFormatContext::interrupt_callback ,AVIOInterruptCB具体处理方法
fmpeg 自定义IO中断 AVFormatContext::interrupt_callback以前不知道ffmpeg里还可以设置自定义的io interrupt, 赶紧记录起来。Custom interrupt callbacks for the I/O layer.decoding: set by the user before avformat_open_input().原创 2014-07-18 14:47:40 · 10946 阅读 · 1 评论