ffmpeg
文章平均质量分 53
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
[FMMPEG] parse与 demuxer
FFmpeg源码分析:av_parser_parse2()解析数据包ffmpeg 4.3添加自定义demuxerffmpeg API基础原创 2023-08-30 08:47:45 · 1259 阅读 · 0 评论 -
FFMEPG内存管理
FFmpeg5.0源码阅读——内存池AVBufferPool深入理解FFMPEG-AVBuffer/AVBufferRef/AVBufferPool原创 2023-06-30 00:53:56 · 169 阅读 · 0 评论 -
【FFLAY】 struct Frame 和 FrameQueue队列
真正存储解码后⾳视频数据的结构体为AVFrame ,存储字幕则使⽤AVSubtitle,该Frame的设计是为了⾳频、视频、字幕帧通⽤,所以Frame结构体的设计类似AVFrame,部分成员变量只对不同类型有作⽤,⽐如sar只对视频有作⽤。2 ffplay中创建了三个frame_queue:⾳频frame_queue,视频frame_queue,字幕frame_queue。每⼀个frame_queue⼀个写端⼀个读端,写端位于解码线程,读端位于播放线程。1 这个 int64_t pos 这个·怎么表示的?原创 2023-06-02 08:30:31 · 290 阅读 · 0 评论 -
h264码流结构解析
超详细的h264码流结构解析!转载 2023-08-22 01:51:54 · 103 阅读 · 0 评论 -
ffplay音视频同步之视频同步音频
对于音视频同步是有三种方案的,一种是以外部时钟为基准,音频时钟和视频时钟在播放时都以外部时钟为参考系,谁快了就等待,慢了就丢帧;第二种是以视频时钟为基准,音频时钟在播放的过程中参考视频时钟;第三种是以音频时钟为基准,视频时钟在播放的过程中参考音频时钟。由于人体器官对视觉的敏感读没有听觉的灵敏度高,因此为了更好的体验,在音视频同步时一般都是以音频时钟为基准的方案。那是不是说其他两种方案没有用处呢?也不是的,比如说一个只有视频没有音频的的视频文件,在播放的时候就需要以视频为基准了。转载 2023-08-20 23:25:52 · 82 阅读 · 0 评论 -
实时传输控制协议---RTCP【详解】
实时传输控制协议(Real-time ControlProtocol,RTCP)是和 RTP一起工作的控制协议。在RTP会话期间,通过使用不同的端口号可把RTP数据包和RTCP信息包区分开来,每个会话参与者周期性地向所有其他参与者发送RTCP控制信息包。转载 2023-08-09 23:12:05 · 567 阅读 · 0 评论 -
RTSP、RTMP、HLS流媒体协议的区别与联系
https://zhuanlan.zhihu.com/p/546452574https://blog.csdn.net/m0_60259116/article/details/124729523转载 2023-06-26 08:37:06 · 196 阅读 · 0 评论 -
【FFPLAY】过滤器
/ 获取FFmpeg中定义的filter,调⽤该⽅法前需要先调⽤avfilter_register_all();// 创建⼀个滤波器实例AVFilterContext,并添加到AVFilterGraph中。// 从⽬的滤波器buffersink中获取处理完的数据。// 创建⼀个滤波器图filter graph。// 往源滤波器buffer中输⼊待处理的数据。// 连接两个滤波器节点。原创 2023-06-19 08:52:05 · 1070 阅读 · 0 评论 -
【FFMEPG】时间框架
【代码】【FFMEPG】时间框架。原创 2023-06-06 08:33:44 · 109 阅读 · 0 评论 -
ffmpeg的player之video_refresh()
这个时间是video refresh的sleep时间,默认0.01s,也就是10ms,一刷新,一个fps=24的video,一帧差不多是0.041708s,那么得用4次刷新,但是,第五次怎么办,就得计算remaining_time了,计算下一帧显示完的时间和当前系统时间的差值,如果当前系统时间还大于下一帧显示完成时候的时间,那么说明显示慢了,就要丢掉(is->frame_timer + duration- time)。上一帧显示时刻加上delay(还应显示多久(含帧本身时长))即为上一帧应结束显示的时刻。转载 2023-02-28 08:36:00 · 140 阅读 · 0 评论 -
ffmpeg如何实现播放音视频同步
就是今天要讲的内容,本文简单介绍了几种视频时钟同步的方法,不算特别难,但是在网上查找的资料比较少。可以参考的ffplay的实现也有点复杂,本文的实现部分借鉴了ffplay。本文实现的时钟同步还是可以继续优化的,比如用pid进行动态控制。以及duration的计算可以细化调整。C语言 ffmpeg与sdl实现播放视频同时同步时钟详解。转载 2023-02-24 08:33:08 · 311 阅读 · 0 评论 -
音频 Audacity使用技巧详解
http://www.360doc.com/content/13/0620/17/1437142_294320939.shtml原创 2023-02-23 00:53:44 · 494 阅读 · 0 评论 -
ijkplayer-丢帧策略深入分析
1.测试拿过来个视频,发现用ijk播放器与系统播放器(mediaplayer)播放感觉不一样,用ijk播放感觉播放页面卡顿一点,没有系统播放器那么流畅。下面看一下这个问题,这个问题的原因其实很简单,由于我丢帧值设置的是5,改成1就可以感觉2个播放器在体验上感觉差不多了。(丢5帧人眼就可以看出来差别了!2.在高通660的机器上播放一个4k(30fps)视频,但是无法正常播放,实际一秒的解码帧只有20帧,实际播放只有4帧这样。导致画面卡顿,音视频不同步。转载 2023-02-23 00:38:30 · 806 阅读 · 0 评论 -
MP4文件中音视频时间戳的计算
size字段表示该Box的长度,如果size值为1,则表示box的长度超过了32位的表示范围,需要由type之后的64位用于表示实际的长度。type字段表示该Box的类型,一般使用4个可打印的字符组合表示,也称为FOURCC,如ftyp、moov、meta、mdat等。大部分box除了包含有size和type字段外,还包含有version和flag字段,用于处理在标准升级时产生的box内容定义不一致的问题。除去以上数据后box剩余的数据为该box的实际数据,根据type不同,表示的含义也各不相同。转载 2023-02-21 23:38:04 · 1172 阅读 · 0 评论 -
【FFmpeg小点记】AV_DISPOSITION_ATTACHED_PIC
因此,也可以很好的解释了文章开头提到的为什么 st->disposition & AV_DISPOSITION_ATTACHED_PIC 这个操作可以决定是否可以继续向缓冲区中添加 AVPacket。这里可以回答,是因为,如果这个流中包含这个标志的话,说明这个流是 *.mp3 文件中的 Video Stream。如果一个流中含有这个标志的话,那么就是说这个流是 *.mp3 文件中的一个 Video Stream。这个 AVPacket 中所存储的内容就是这个 *.mp3 文件的封面图片。转载 2023-02-19 12:56:32 · 260 阅读 · 0 评论 -
FLV文件格式基础
FLV,F4V,MP4广泛应用于各主流直播和点播平台,能够非常方便的流媒体和存储处理。本篇记录一下FLV文件的格式学习,FLV相对MP4格式比较简单。第一个B帧40ms需要显示,所以40ms以前必须解码好,而第一个B帧要解码需要依赖P帧,所以在40ms以前P帧和第一个B帧都要解码好。Data tags在本篇没解析,基本由AMF1和AMF2组成,包括视频分辨率,比特率,帧率,时长,大小,采样率,通道数常用信息。如果H264编码中没有B真,则PTS==DTS,所以CompositionTime CTS==0。转载 2023-02-15 21:45:10 · 348 阅读 · 0 评论 -
AVCodecParserContext 和 av_parser_parse2
其中poutbuf指向解析后输出的压缩编码数据帧,buf指向输入的压缩编码数据。如果函数执行完后输出数据为空(poutbuf_size为0),则代表解析还没有完成,还需要再次调用av_parser_parse2()解析一部分数据才可以得到解析后的数据帧。av_parser_parse2()拿到AVPaket数据,将一个个AVPaket数据解析组成完整的一帧未解码的压缩数据;av_parser_parse2():解析数据获得一个Packet, 从输入的数据流中分离出一帧一帧的压缩编码数据。转载 2023-02-14 00:32:58 · 490 阅读 · 0 评论 -
ffmpeg音视频编码入门:音频编码(pcm编码aac)
一秒44100个采样点(两个声道各有22050个采样点),一个采样点2字节(16位),总数据量为88200字节;一帧nb_samples次采样,数据量为nb_samples x 2 x 2;一秒有88200/(nb_sample x 4)帧音频。nb_samples表示一帧音频数据中采样的数量(次数)(每通道),nb_samples与具体的码流类型和编码级别有关。nb_samples和AVCodecContext中的frame_size相同。转载 2023-02-06 01:26:23 · 232 阅读 · 0 评论 -
ffmpeg 结构体关系
AVFormatContext,AVIOContext结构体原创 2022-12-15 23:34:55 · 60 阅读 · 0 评论 -
ffmpeg-muxing原理分析
https://blog.csdn.net/quange_style/article/details/90078628原创 2022-09-01 00:46:38 · 422 阅读 · 0 评论 -
ffmpeg的pts之解析
我们在拿到frame(AVFrame 类型)里面有个变量pts,顾名思义:是的时间显示,但是这个并不是时间为单位的数值,是可以转换成时间的数值,需要用 frame->pts * av_q2d(tb)得到。video_thread()函数 ,每获取一个frame就打印一下log。audio_thread()函数 ,每获取一个frame就打印一下log。frame->pts :时间计数。av_q2d(tb) :时间基数。原创 2022-08-20 01:21:09 · 1226 阅读 · 0 评论 -
ffplay关键函数解析
ffplay 关键函数原创 2022-08-14 19:50:27 · 146 阅读 · 0 评论 -
ffplay 解析
/* * Copyright (c) 2003 Fabrice Bellard * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation;原创 2022-04-11 08:38:34 · 297 阅读 · 0 评论 -
ffmpeg录像代码
录像代码#include <stdio.h>extern "C"{ #include <libavcodec/avcodec.h> #include<libavformat/avformat.h> #include <libswscale/swscale.h> #include <libavdevice/avdevice.h> #include <libavutil/opt.h>}#pragma comment(l原创 2022-04-08 08:05:55 · 1308 阅读 · 2 评论 -
ffmpeg 命令学习
1 封装, 音频不改,视频帧处理 (filter),编解码格式ffmpeg -i our.mp4 -acodec copy -vcodec libx264 -s 1280x720 1.flvffmpeg -i our.mp4 -acodec copy -vcodec libx265 -s 1280x720 1.mkv2 MP3 转成 pcm注意: 看上去 -f 指定了 大小端 ,而且 -acodec 也指定了 大小端,但是如果去掉 -f 就会出错小端ffmpeg -i my.mp3原创 2022-04-04 10:39:25 · 2926 阅读 · 0 评论 -
音频的格式
若 sample 是 AV_SAMPLE_FMT_S16, 則 sample 會是 int16 格式,且值域为 [-32767, +32767]若 sample 是 AV_SAMPLE_FMT_FLTP,則 sample 會是 float 格式,且值域为 [-1.0, 1.0]点型的 AV_SAMPLE_FMT_FLTP 格式,MP3解码输出的数据为 AV_SAMPLE_FMT_S16P 格式(使。Packed⽅式为两个声道的数据交错存储;FFmpeg解码不同格式的⾳频输出的⾳频采样格式不是⼀样。原创 2022-04-04 01:09:53 · 409 阅读 · 0 评论 -
ffmpeg mp4 mp3 wav flac webm aac ac3 ogg格式转换
参考文章ffmpeg mp4 mp3 wav flac webm aac ac3 ogg格式转换里面的 acc 转成 ogg 的命令是错的改为:ffmpeg -i 123456789.aac -acodec libvorbis 123456789.ogg原创 2021-11-18 15:58:04 · 3875 阅读 · 0 评论 -
ffmpeg函数
int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,int *got_picture_ptr,const AVPacket *avpkt);作用:是解码一帧视频数据。输入一个压缩编码的结构体AVPacket,输出一个解码后的结构体AVFrame。 int *got_picture_ptr :如果没有可以解压缩的帧,则为零,否则为非零。...原创 2022-03-30 23:41:15 · 315 阅读 · 0 评论 -
ffmpeg 学习
1AVCodecContext和AVCodecAVCodec 是描述 codec。(名字 , 类型 ,在编码组里面的编号)AVCodecContext 是 描述1 使用codec的参数细节。例如:采样率,通道数2 以及系统如何 使用codec 例如:编码时的线程数,时间基线AVCodecContext和AVCodec...原创 2022-03-25 23:43:27 · 736 阅读 · 0 评论 -
ffmpeg 命令行 录像
ffmpeg -y -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -t 10 out.mp4原创 2022-03-16 00:13:37 · 2028 阅读 · 0 评论