自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 ffplay源码分析__audio_decode_frame()

audio_decode_frame函数主要功能是从FrameQueue中取出解码后的音频数据,判断是否需要重采样。如果需要,把音频数据重采样后再给SDL使用。audio_decode_frame()可以分为三部分。第一部分从音频FrameQueue中读取解码后的音频数据,第二部分判断是否需要重采样,第三部分是重采样功能。

2025-05-02 17:45:08 719

原创 ffplay源码分析__解码函数decoder_decode_frame

decoder_decode_frame函数的主要功能是:判断从PacketQueue取出的MyAVpacketList序列号是否和Decoder的序列号一致,如果两者不一致,就一直从队列中取,直到取到的序列号一致为止。如果两者序列号一致,就用avcodec_send_packet函数向解码器输送数据,然后通过avcodec_receive_frame从解码器获取解码后的数据返回。正确取到解码数据后返回1,读取到解码器末尾时返回0,其余返回负数。

2025-04-22 11:38:41 1014

原创 win10环境下msys+vs2022编译ffmpeg6.1

本文是在windows10,msys2+vs2022的环境下,编译ffmpeg6.1。

2025-04-21 21:52:23 898

原创 ffplay源码__音频解码线程audio_thread

audio_thread主要功能是从音频PacketQueue中读取数据并解码,然后把解码后的数据插入到音频FrameQueue中。audio_thread和video_thread基本流程一致,都用到解码函数decoder_decode_frame(),队列函数frame_queue_peek_writable()和frame_queue_push()。

2025-04-12 19:08:59 677

原创 ffplay源码分析__视频解码线程video_thread

video_thread线程是在read_thread线程中创建的,主要作用是从视频PacketQueue队列中获取AVPacket数据用于解码,并把解码后的数据封装成Frame,保存到视频的FrameQueue中。真正的解码是在decoder_decode_frame()中完成。把解码数据插入到队列是用三个函数完成,分别是frame_queue_peek_writable(),queue_picture(),frame_queue_push()。

2025-04-10 10:25:17 691

原创 ffplay源码分析__sdl_audio_callback回调函数

sdl_audio_callback 函数在 SDL 音频处理中扮演关键角色,它在单独的线程中被调用,负责向 SDL 音频驱动填充音频数据。该函数通过 audio_decode_frame 从音频帧队列中获取解码数据,并根据需要进行重采样。随后,数据被填充到 SDL 音频缓冲区中,如果缓冲区未满,则继续填充;如果发生错误,则输出静音。SDL 采用双缓冲机制,确保音频的连续播放。此外,音频时钟的更新依赖于缓冲区的填充状态,通过计算剩余数据和时间戳来同步音频播放时刻。

2025-04-08 17:52:19 7

原创 ffplay源码__stream_component_open函数分析

1、stream_component_open函数是在read_thread子线程被调用的。其中有三个地方调用了stream_component_open()函数,实际运行时只有音频和视频部分生效,所以又产生了两个子线程audio_thread和video_thread。

2025-03-17 11:26:47 659

原创 ffplay源码_read_thread线程分析(三)

本文详细介绍了在VS2017的Debug x86模式下调试运行FFplay的初始化过程。首先,通过SDL_CreateMutex()创建wait_mutex锁,用于配合SDL_CondWaitTimeout函数。接着,初始化媒体索引数组并分配AVPacket和AVFormatContext的内存。然后,设置中断回调函数和字典,用于处理耗时操作和传递额外参数。通过avformat_open_input()函数打开媒体文件,并获取媒体信息。随后,判断是否为网络流,并查找最佳媒体流。最后,打开音视频流,读取文件数

2025-03-12 13:08:49 904

原创 ffplay源码分析__stream_open函数(二)

FFplay是 FFmpeg 官方提供的一个播放器的实现,支持快进快退,逐帧播放,滤镜等。本文是在VS2017的Debug x86模式下调试运行的,ffplay.c移植到VS2017工程可以参考ffplay移植vs2017stream_open函数主要是做了些初始化工作,并创建了读文件线程read_thread。先分析部分结构体。

2025-03-11 09:17:32 828

原创 win10环境下msys2+vs2017编译ffmpeg(64位含ffplay)

本文在win10下用msys2和vs2017编译ffmpeg 64位(包含ffplay),以及把ffplay.c移植到vs2017环境中,便于学习。ffmpeg 的源码是跨平台的,通过 configure(shell脚本) 实现不同平台的编译规则。在 configure 的时候指定--toolchain=msvc就可以使用 msvc 来编译 ffmpeg。

2024-11-29 12:07:19 1872

原创 win10环境下msys2+vs2017编译ffmpeg(32位含ffplay移植)

本文在win10下用msys2和vs2017编译ffmpeg32位。ffmpeg 的源码是跨平台的,通过 configure(shell脚本) 实现不同平台的编译规则。在 configure 的时候指定就可以 使用 msvc 来编译 ffmpeg。

2024-11-22 15:21:08 1933

原创 win10环境下msys2+mingw编译ffmpeg(64位含ffplay)

windows下用msys2 mingw64环境编译ffmpeg64位,包含ffplay.exe

2024-11-17 11:21:05 2374

原创 windows环境vs2017编译sdl2.0库

windows环境vs2017编译sdl2.0库

2024-11-12 17:20:21 918

ffmpeg6.1.rar

win10环境下用VS2022编译的ffmpeg6.1库文件

2025-04-27

ffmpeg编译工具-msys2-x86-64-20250221

windows环境下编译ffmpeg时用到的msys软件,msys2-x86_64-20250221

2025-04-21

ffplay.c+vs2017工程文件(ffplay播放器)

本文件是ffplay.c源代码移植到vs2017环境下的工程文件,适用于音视频开发的程序人员,用于研究ffplay播放器的开发人员。

2025-02-12

windows环境下ffmpeg4.4.5-32位库文件.rar

该库文件是windows10环境下用vs2017编译的ffmpeg4.4.5库文件,应用程序含ffmpeg.exe,ffprobe.exe,用于音视频开发

2025-02-11

windows环境下ffmpeg4.4.5-64位库文件(含ffplay).rar

win10环境下编译下的ffmpeg4.4.5,64位。里面有两个包,分别是在msys2+mingw64环境下和msys2+VS2017环境下编译的64位库,应用程序包括ffplay(含SDL相关库文件),ffmpeg,ffprobe程序,适用于windows环境下音视频开发的相关领域。

2025-02-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除