FFmpeg入门详解之71:获取ffmpeg转码的实时进度

Posted 福优学苑@音视频+流媒体

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg入门详解之71:获取ffmpeg转码的实时进度相关的知识,希望对你有一定的参考价值。

transcode()函数:

static void print_report(int is_last_report, int64_t timer_start, int64_t cur_time)

/// 获取实时的转码进度

double get_tc_progress()

int64_t __g_total_duration;

int64_t __g_tc_cur_pts;

double get_tc_progress();

/// 获取实时的转码进度

// 问题1:总时长,微妙转毫秒,只能第一次时转

// 问题2:获取当前进度的时机

double get_tc_progress()

if (__g_total_duration <= 0) return 0;

/// 微妙转毫秒

///__g_total_duration /= 1000;// 问题1:总时长

///__g_tc_cur_pts /= 1000;

/printf("&&&&&&duration=%lld, pts=%lld\\n", __g_total_duration, __g_tc_cur_pts);

/printf("******progress=%lf\\n", (double)__g_tc_cur_pts / (double)__g_total_duration);

return  (double)__g_tc_cur_pts / (double)__g_total_duration;

 大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦。

《FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社》

京东自营链接:https://item.jd.com/13377793.html
京东其它链接:https://search.jd.com/Search?keyword=FFmpeg%E5%85%A5%E9%97%A8%E8%AF%A6%E8%A7%A3--%E9%9F%B3%E8%A7%86%E9%A2%91%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8&enc=utf-8&suggest=1.his.0.0&wq=&pvid=24e80535073b4e1f98e30a3e6963fe81
 

 

出书过程非常艰辛,来回校正了好几遍,后续还有FFmpeg系列的其它图书。

第一本:FFmpeg入门详解--音视频原理及应用--梅会东--清华大学出版社

第二本:FFmpeg入门详解--流媒体直播原理及应用--梅会东--清华大学出版社

第三本:FFmpeg入门详解--命令行及音视频特效原理及应用--梅会东--清华大学出版社

第四本:FFmpeg入门详解--SDK二次开发及直播美颜原理及应用--梅会东--清华大学出版社

===================================

Qt之FFMpeg 实现视频解码编码转码流程详解

一、FFmpeg模块分类

libavformat,格式封装,包含了多媒体格式的分离器和混流器的库
libavcodec,包含音频/视频解码器和编码器的库
libavutil,包含简化编程功能的库,如通用音视频工具,像素、IO、时间等工具
libavfilter,包含媒体过滤器的库,可以用作音视频特效处理,添加滤镜、水印
libavdevice,包含输入输出设备的库,如摄像头、拾音器
libswscale,视频图像缩放,像素格式互换的库
libavresample,libswresample,重采样,类似图像缩放

二、FFmpeg核心结构体

AVFormatContext:封装格式上下文结构体,保存了视频文件封装格式相关信息,如文件名、音视频流、时长、比特率等信息;
AVCodecContext:编解码器上下文结构体,保存了视频(音频)编解码相关信息,如编解码器类型、视频宽高、音频通道数、采样率等;
AVCodec:每种视频(音频)编解码器(例如H.264解码器)对应一个该结构体;
AVStream:存储音频或视频流信息的结构体;
AVPacket:存储音频或视频编码数据;
AVFrame:存储一帧解码后像素(采样)数据(原始数据)。

三、播放流程

四、实现FFmpeg解码

解码实现的是将压缩域的视频数据解码为像素域的 YUV 数据。实现过程大致如下图所示。

实现过程描述:

  1. 有待解码的压缩域的视频。
  2. 根据压缩域的压缩格式获得解码器。
  3. 解码器的输出即为YUV像素数据

五、实现FFmpeg转码

1、传统的编码转换步骤

2、转码流程图

拓展:

1、编码的目的:

压缩媒体数据。在图像或音频压缩的时候,可借助图像特性或声音特性进行压缩,可以达到比通用文件压缩技术更高的压缩比。

2、封装的目的:

2.1 为了在一个文件流(Stream)中能同时存储视频流、音频流、字幕流、附件(t)、数据(d)等内容。

2. 2确保数据在网络环境下实现可靠快速传输

以上是关于FFmpeg入门详解之71:获取ffmpeg转码的实时进度的主要内容,如果未能解决你的问题,请参考以下文章

找不到用于FFmpeg转码的x264编解码器设备

Qt之FFMpeg 实现视频解码编码转码流程详解

使用ffmpeg转码的MP4文件需要加载完了才能播放的解决办法

FFMPEG进阶系列03-ffmpeg转码专题(中)x264参数详解

FFMPEG实现的转码程序

【FFMPEG做视频转码】