原帖地址:http://blog.csdn.net/austinblog/article/details/25099979

该函数的主要功能是一步完整的转换工作,下面看看源代码:

static int transcode_step(void)
{OutputStream *ost;InputStream  *ist;int ret;//选择一个有效的输出流进行处理ost = choose_output(); if (!ost) {if (got_eagain()) {reset_eagain();av_usleep(10000);return 0;}av_log(NULL, AV_LOG_VERBOSE, "No more inputs to read from, finishing.\n");return AVERROR_EOF;}//选择一个输入流if (ost->filter) {if ((ret = transcode_from_filter(ost->filter->graph, &ist)) < 0)return ret;if (!ist)return 0;} else {av_assert0(ost->source_index >= 0);ist = input_streams[ost->source_index];}//读取并处理每一个包ret = process_input(ist->file_index);if (ret == AVERROR(EAGAIN)) {if (input_files[ist->file_index]->eagain)ost->unavailable = 1;return 0;}if (ret < 0)return ret == AVERROR_EOF ? 0 : ret;return reap_filters(); //根据滤波器做滤波处理,并把处理完的音视频输出到输出文件中
}

解码流程是:

process_input() -> output_packet() -> decode_audio()/decode_video()/transcode_subtitles()

而decode_audio() 是调用 avcodec_decode_audio4() 来完成工作的。decode_video() 则是通过调用 avcodec_decode_video2() 来完成的。

编码流程是:

reap_filters() -> do_video_out() 或 do_audio_out() -> avcodec_encode_video2() 或 avcodec_encode_audio2()。

转载于:https://www.cnblogs.com/wainiwann/p/4074434.html

ffmpeg源码分析四:transcode_step函数 (转4)相关推荐

  1. ffmpeg源码分析:transcode()函数

    还是先看一下主函数吧:(省略了很多无关大雅的代码) int main(int argc, char **argv) { OptionsContext o = { 0 }; int64_t ti; // ...

  2. ffmpeg源码分析:transcode_init()函数

    2019独角兽企业重金招聘Python工程师标准>>> transcode_init()函数是在转换前做准备工作的.此处看一下它的真面目,不废话,看注释吧: //为转换过程做准备 s ...

  3. ffmpeg源码分析-transcode_step

    本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 ffmpeg 源码分析系列以一条简单的命令开始,ffmpeg -i a.mp4 b.flv,分析其内部逻辑. a. ...

  4. FFMPEG源码分析(二)

    ffmpeg源码分析之数据流 本文主要介绍ffmpeg的数据流,在ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制. 媒体流的解码播放 在ffmpeg ...

  5. FFMPEG 源码分析

    FFMPEG基本概念: ffmpeg是一个开源的编解码框架,它提供了一个音视频录制,解码和编码库.FFMPEG是在linux下开发的,但也有windows下的编译版本. ffmpeg项目由以下几部分组 ...

  6. 【投屏】Scrcpy源码分析四(最终章 - Server篇)

    Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...

  7. ffmpeg源码分析-parse_optgroup

    本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 ffmpeg 源码分析系列以一条简单的命令开始,ffmpeg -i a.mp4 b.flv,分析其内部逻辑. a. ...

  8. ffmpeg源码分析-ffmpeg_parse_options

    本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 ffmpeg 源码分析系列以一条简单的命令开始,ffmpeg -i a.mp4 b.flv,分析其内部逻辑. a. ...

  9. FFMPEG源码分析(一)

    FFMPEG源码分析(一) ffmpeg之前公司项目中就使用过,但是多停留于应用层面,实现某个功能时,需要哪些结构体以及调用哪些函数.最近想系统的学习一下ffmpeg,于是开始看雷霄骅https:// ...

最新文章

  1. eclipse 开发常见问题集锦
  2. 野路子码农系列(3)plotly可视化的简单套路
  3. Unicode(UTF-8, UTF-16)令人混淆的概念
  4. 算术编码(Arithmetic Coding)源代码
  5. 对每个小组的评论和建议
  6. python缺失值类型与分析_3.1.1 缺失值分析
  7. 浅谈opencl之错误码
  8. Vjudge 2016-5-10 math test
  9. t–sql pl–sql_SQL Server性能疑难解答的DBA指南–第1部分–问题和性能指标
  10. LightTable:更改Julia代码字体和console中字体
  11. 不存在有效_文水2单位存在安全隐患!
  12. vb连接mysql教程视频_VB连接MYSQL数据的方法
  13. 计算机机械制图试题及答案,机械制图习题集-附带答案
  14. 【GIS风暴】什么是EPSG?常见坐标系对应的EPSG代号、经度范围、中央经线是多少?
  15. Typora导出word文档自动生成目录
  16. 阿里云购买的域名绑定腾讯云的空间
  17. 挑战程序设计竞赛: Jess's Reading Problem
  18. 中国超级计算机gpu,英伟达(NVIDIA)Tesla GPU为全球最快的超级计算机提供动力支持...
  19. mybatis spring springMVC
  20. Error: unknown pseudo-op: `.arch_extension'

热门文章

  1. Hbase出现ERROR: Can‘t get master address from ZooKeeper; znode data == null解决办法
  2. python基础期末考试_python基础试题(4)
  3. 'ascii' codec can't encode characters in position 20-24:ordinal not in range(128)报错根本解决办法
  4. 【slighttpd】基于lighttpd架构的Server项目实战(4)—简单的echo服务器
  5. Pandas处理数据缺失值
  6. DOS 网络命令之 netstat
  7. 剑指offer 顺时针打印矩阵
  8. spring boot 报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default p
  9. 使用IntelliJ IDEA搭建多maven模块JAVA项目
  10. 神圣的NLP!一文理解词性标注、依存分析和命名实体识别任务