随笔分类 -  FFmpeg

摘要:寻找自己的采集图像设备 av_find_input_format() 根据名称查找链表当中的输入的格式 如果要查找设备在使用之前去调用: avdevice_register_all(); avformat_open_input() 主要用来打开输入流并存储到格式化上下文AVFormatContext 阅读全文
posted @ 2020-01-19 06:21 FANDX 阅读(3922) 评论(0) 推荐(0)
摘要:分析视频流 stream[0] duration = 2019840 // 视频的时长时间戳,计算秒 2019840/12800 index = 0 // 流索引,这是一个视频流 nb_frames // 视频的总帧数 avg_frame_rate // 视频的帧数, num/den就是帧数 tim 阅读全文
posted @ 2020-01-18 06:27 FANDX 阅读(2881) 评论(0) 推荐(0)
摘要:采样率 sample_rate: 44100 采样率指一秒钟采集44100次 声道 channels: 2 一般有左声道,右声道,声道数量越多采集出来的文件大小越大 样本大小(采样的格式) sample_size/sample_fmt: AV_SAMPLE_FMT_S16 AV_SAMPLE_FMT 阅读全文
posted @ 2020-01-17 06:24 FANDX 阅读(1255) 评论(0) 推荐(0)
摘要:PTS/DTS(时间戳) 要想解决时间同步问题就必须要了解ffmpeg中的PTS和DTS到底是什么 PTS: PTS(Presentation TimeStamp)是渲染用的时间戳,播放器会根据这个时间戳进行渲染播放 DTS: DTS(Decoding TimeStamp)解码时间戳,在视频pack 阅读全文
posted @ 2020-01-16 06:46 FANDX 阅读(2897) 评论(0) 推荐(0)
摘要:sws_scale 可以使用它进行图像像素的转换,分辨率的转换 sws_getContext 分配并返回一个SwsContext, 在sws_scale中可以执行执行转换和缩放的功能 阅读全文
posted @ 2020-01-12 08:49 FANDX 阅读(664) 评论(0) 推荐(0)
摘要:常用的结构体 AVCodec:编解码结构体 AVCodecContext:编解码上下文 AVFrame:解码后的帧 结构体的常用api av_frame_alloc():生成AVFrame结构体的 av_frame_free():释放AVFrame结构体 avcodec_alloc_context3 阅读全文
posted @ 2020-01-10 08:25 FANDX 阅读(417) 评论(0) 推荐(0)
摘要:```c#include extern "C"{#include #include #include #include #include #include #include }using namespace std;static AVFrame *alloc_audio_frame(enum AVSampleFormat sample_fmt, uint64_t channel_la... 阅读全文
posted @ 2020-01-07 06:23 FANDX 阅读(744) 评论(0) 推荐(0)
摘要:```c++#include extern "C"{#include #include #include #include #include #include #include }using namespace std;static AVFrame *alloc_picture(enum AVPixelFormat pix_fmt, int width, int height) { AVFr... 阅读全文
posted @ 2020-01-07 06:20 FANDX 阅读(670) 评论(0) 推荐(0)
摘要:H264中的I/B/P帧 I帧是关键帧,它采用了帧内压缩技术 B帧是前后参考帧,它属于帧间压缩技术,在压缩B帧之前,会参考前后非压缩视频帧,记录前后两帧不存放“残差值”,目的是为了得到更好的压缩率 P帧是向后参考帧,P帧也属于帧间压缩技术,对于B帧来说,P帧的压缩率要比b帧低 为了降低直播的延迟,在 阅读全文
posted @ 2020-01-03 22:36 FANDX 阅读(526) 评论(0) 推荐(0)
摘要:多媒体互转的主要使用API 分配一个输出上下文的空间:avformat_alloc_output_context2(); 释放输出上下文的空间:avformat_free_context(); 生成一个新的流:avformat_new_stream(); 拷贝视频的参数:avcodec_parame 阅读全文
posted @ 2019-12-31 10:58 FANDX 阅读(248) 评论(0) 推荐(0)
摘要:主要使用函数 ffmpeg中的所有编解码库,网络协议注册到程序里面来:av_register_all() 打开一个多媒体文件:avformat_open_input() 关闭一个多媒体文件:avformat_close_input() 打印meta信息:av_dump_format() 实例 vim 阅读全文
posted @ 2019-12-31 10:57 FANDX 阅读(403) 评论(0) 推荐(0)
摘要:主要使用函数 特征码:Start code 解码的一些视频参数,分辨率和帧率:SPS/PPS ffmpeg获取SPS/PPS:codec extradata 实例 阅读全文
posted @ 2019-12-31 10:55 FANDX 阅读(1116) 评论(0) 推荐(0)
摘要:主要使用函数 特征码:Start code 解码的一些视频参数,分辨率和帧率:SPS/PPS ffmpeg获取SPS/PPS:codec extradata 实例 阅读全文
posted @ 2019-12-31 10:48 FANDX 阅读(529) 评论(0) 推荐(0)
摘要:概念 多媒体文件其实是个容器 在容器里面有很多流(stream/track) 每种流是不同的编码器编码的 从流中读出的数据称为包 在一个包中包含着一个或者多个帧的 几个重要的结构体 多媒体文件上下文: AVFormatContext 流处理:AVStream 包处理:AVPacket FFmpeg操 阅读全文
posted @ 2019-12-31 10:34 FANDX 阅读(400) 评论(0) 推荐(0)
摘要:重要函数 打开文件夹:avio_open_dir() 读取文件夹:avio_read_dir() 关闭文件夹:avio_close_dir() 结构体, 操作目录的上下文:AVIODirContext() 目录项,用于存放文件名,文件大小等信息:AVIODirEntry() 实例 vim ffmpe 阅读全文
posted @ 2019-12-31 10:23 FANDX 阅读(480) 评论(0) 推荐(0)
摘要:文件的删除与重命名 举例操作 vim ffmpeg_file.c c // FFmpeg文件操作的头文件 include int main(int argc, char argv[]) { int ret; ret = avpriv_io_move("111.txt", "222.txt"); if 阅读全文
posted @ 2019-12-31 10:11 FANDX 阅读(333) 评论(0) 推荐(0)
摘要:日志文件的三大步 常用的日志级别 例子 vim ffmpeg_log.c clang g o ffmpeg_log ffmpeg_log.c lavutil ./ffmpeg_log 阅读全文
posted @ 2019-12-31 10:08 FANDX 阅读(406) 评论(0) 推荐(0)
摘要:![](https://img2018.cnblogs.com/blog/1440669/201912/1440669-20191231100123294-1593445960.png) 阅读全文
posted @ 2019-12-31 10:02 FANDX 阅读(344) 评论(0) 推荐(0)
摘要:直播推流 ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName -re : 减慢帧率 -i : 指定的文件 -c : 指定音视频 copy -f : 指定格式化的格式为flv格式 rtmp://server/live/s 阅读全文
posted @ 2019-12-31 08:36 FANDX 阅读(4964) 评论(0) 推荐(0)
摘要:视频转图片命令 ffmpeg -i input.flv -r 1 -f image2 image-%3d.jpeg -i : 指定输入文件 -r : 帧数 1 -f : 指定格式化的格式为image2 生成的结果 image-%3d.jpeg %3d是指3位数字 图片转视频 ffmpeg -i im 阅读全文
posted @ 2019-12-31 08:22 FANDX 阅读(9521) 评论(0) 推荐(0)