当前位置:   article > 正文

ffmpeg ffplay.c 源码分析

ffmpeg ffplay.c 源码分析

1 ffplay.c的意义

ffplay.c是FFmpeg源码⾃带的播放器,调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。
例如哔哩哔哩著名开源项⽬ijkplayer也是基于ffplay.c进⾏⼆次开发。
ffplay实现了播放器的主体功能,掌握其原理对于我们独⽴开发播放器⾮常有帮助。

2 FFplay框架分析

2.1 通过 stream_open  方法 播放器初始化

2.1.1 初始化packet queue

创建音视频解码前的数据缓存队列
我们会将从 音频或者视频读取的数据 ,存储到 packet queue ,也就是调用 av_read_frame 后的packet会 使用 packet_queue_put方法 存储到 packet queue中。

2.1.2 初始化frame queue

创建音视频解码后的数据缓存队列

2.1.3初始化clock

初始化时钟(音频,视频,外部时钟)

2.1.4 创建数据读取线程

ffplay.c 重要逻辑解析

  1. ffplay.c 代码 重要逻辑分析
  2. avdevice_register_all
  3. 该函数用于注册输入和输出设备,属于libavdevice模块,是libavformat模块的补充,包含muxers与demuxers两部分。
  4. 这个函数何时调用呢?当需要基于硬件设备实现功能时,应该在应用程序开头调用该函数。
  5. #if CONFIG_AVDEVICE
  6. avdevice_register_all();
  7. #endif
  8. avformat_network_init();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/852703
推荐阅读
相关标签
  

闽ICP备14008679号