ffmpeg--mux/demux
山西茄子
多媒体工程师,从事ffmpeg,gstreamer,视频编码,deepstream等开发,做做笔记。
展开
-
av_write_frame与av_interleaved_write_frame
ffmpeg的 Mux 主要分为三步操作:avformat_write_header: 写文件头。av_write_frame/av_interleaved_write_frame: 写packet。av_write_trailer: 写文件尾。 av_write_frame()用于输出一帧视音频数据,它的声明位于libavformat\avformat.h,直接将包写进Mux,没有缓存和重新排序...转载 2018-02-18 13:26:31 · 6057 阅读 · 0 评论 -
Demuxer和muxer模块分析
1概述ffmpeg的demuxer和muxer接口分别在AVInputFormat和AVOutputFormat两个结构体中实现,在av_register_all()函数中将两个结构分别静态初始化为两个链表,保存在全局变量:first_iformat和first_oformat两个变量中。在FFmpeg的文件转换或者打开过程中,首先要做的就是根据传入文件和传出文件的后缀名匹配合适的demuxer和...转载 2018-02-19 12:43:52 · 5648 阅读 · 0 评论 -
ffmpeg时间戳计算
ffmepg中的时间戳,是以微秒为单位,关乎timebase变量,它是作为dts、pts的时间基准粒度,数值会很大。视频编码前,会设置帧率,如1秒25帧, 按90000的时间基,一帧就是3600。avcodec_encode_video2成功后(如ffmpeg.c中do_video_out),pkt->pts被设置成帧序号,如33帧。紧接着是av_packet_rescale_ts(&...原创 2018-02-19 16:39:22 · 5602 阅读 · 0 评论 -
ffmpeg读取文件时长
主要介绍的函数:estimate_timings,estimate_timings_from_pts,update_stream_timings.estimate_timings static void estimate_timings(AVFormatContext *ic, int64_t old_offset){ int64_t file_size; /* get the fil...原创 2018-03-08 17:32:22 · 4219 阅读 · 0 评论