
ffmpeg
文章平均质量分 76
comochris
Don't shout messager
展开
-
【FFmpeg】 H.264基础
H.264简介单纯的宏块发送是无序的,h.264编码对宏块进行结构化的处理,它制定了相互传输的格式,将宏块有组织,有结构有顺序的形程一系列码流,这种码流可以通过网络流进行传输,而也可以封装成一个文件来保存。在H264标准中有一个叫做“Annex-B”的字节流格式,他是H264编码的主要字节流格式。H.264网络传输header起始码0x 00 00 00 01或者0x 00 00 01作为分割符H.264的编码序列包括一系列的NAL单元,每个NAL单元包含一个RBSP(Raw Byte Sequ原创 2021-02-27 21:59:30 · 226 阅读 · 0 评论 -
【eegRudp】UDP网络编程
UDP报文大小0-1617-32源端口目的端口长度校验值在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),即MTU(Maximum Transmission Unit)为1500;在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480;在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472;(U原创 2021-02-22 00:07:59 · 128 阅读 · 0 评论 -
FFmpeg开发(四):音视频同步与音视频播放器
时间戳1、I 帧/P 帧/B 帧 I 帧:I 帧(Intra-coded picture, 帧内编码帧,常称为关键帧)包含一幅完整的图像信息,属于帧内编码图像,不含运动矢量,在解码时不需要参考其他帧图像。因此在 I帧图像处可以切换频道,而不会导致图像丢失或无法解码。I 帧图像用于阻止误差的累积和扩散。在闭合式 GOP 中,每个 GOP 的第一个帧一定是I 帧,且当前 GOP 的数据不会参考前后 GOP 的数据。P 帧:P 帧(Predictive-coded picture, 预测编码图像帧)是原创 2021-02-21 20:11:52 · 241 阅读 · 0 评论 -
【FFmpeg】ANativeWindow sws_scale视频大小适配问题
格式转换函数简介FFmpeg里面的sws_scale库可以实现的功能有:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。函数// 初始化sws_scalestruct SwsContext *sws_getContext(int srcW, int srcH,enum AVPixelFormat srcFormat,int dstW, int dstH,enum AVPixelFormat dstFormat,int flags,SwsFilter *srcFilte原创 2021-02-20 21:25:26 · 687 阅读 · 0 评论 -
FFmpeg开发(三):音频播放器的实现
OpenSL基础OpenSLES接口可以直接载Native层处理音频数据,减少了Java层到Native层在采集、播放和编解码过程中的数据拷贝。OpenSLES文档:OpenSL_ES_Specification1.1.pdf优点C语言接口,使用NDK,翻边深度优化,例如NEON优化。没有垃圾回收机制,需要自己实现垃圾回收支持PCM数据采集支持PCM数据的播放Objects 和 Interfaces官方为每一种Objects都定义了一系列Interface先通过GetInterfa原创 2021-02-19 23:51:20 · 364 阅读 · 0 评论 -
【FFmpeg】源码分析:avcodec_send_packet
旧API使用avcodec_decode_video2来进行写法: //旧API需要循环获取视频帧,需要自己实现video_queue while (av_read_frame(fmt_ctx.get(), &pkt) >= 0) { if (pkt.stream_index == video_stream_index) { //packet_queue_put(&video_queue, &pkt); } e原创 2021-02-17 19:25:21 · 871 阅读 · 0 评论 -
FFmpeg开发(二):源码架构分析基础开发
源码架构分析原创 2021-02-17 16:22:20 · 232 阅读 · 1 评论 -
【FFmpeg】【bug: #20210217】C++模版多重定义问题
在我的音视频项目中使用了模版特化的RAII,问题描述在对音视频上下文进行封装的时候遇到了重定义问题(即模版特化导致多重定义链接错误),代码如下(AVGuard.h)://模版特化的安全退出函数//AVFormateContexttemplate <>AVGuard<AVFormatContext>::AVGuard(){ m_ctx = avformat_alloc_context();}template <>AVGuard<AVForma原创 2021-02-17 13:48:31 · 153 阅读 · 1 评论 -
FFmpeg开发(一):mac项目环境搭建
FFmpeg简介FFmpeg 有六个常用的功能模块:libavformat:多媒体文件或协议的封装和解封装库,如 Mp4、Flv 等文件封装格式,RTMP、RTSP 等网络协议封装格式;libavcodec:音视频编解码库;libavfilter:音视频、字幕滤镜库;libswscale:图像格式转换库;libswresample:音频重采样库;libavutil:工具库;Android C开发...原创 2021-02-12 01:41:01 · 2581 阅读 · 2 评论