
FFmpeg
文章平均质量分 59
美丽的欣情
3年C++音视频工作经验、1年Qt界面开发经验
展开
-
FFmpeg播放Hls录像控制解码速度
进行hls录像文件播放,播放速度很快,并未按照正常1秒25帧的帧率进行播放;播放速度过快的原因是因为代码中没有根据视频的帧率(Frame Rate)来控制帧的显示时间。HLS 视频通常有一个固定的帧率(例如 25 FPS),而代码在解码后立即显示每一帧,没有考虑帧之间的时间间隔,导致播放速度过快。要解决这个问题,需要在显示每一帧时,根据帧率或帧的时间戳(PTS,Presentation Time Stamp)来控制帧的显示时间。原创 2025-03-11 13:56:55 · 432 阅读 · 0 评论 -
Qt通过FFmpeg打开RTSP并截图一帧作为背景
整体来看,该代码逻辑清晰、模块分明,结合了 Qt 的 UI 渲染能力和 FFmpeg 的视频解码能力,实现了高效的 RTSP 视频帧截取与显示。该代码基于 Qt 和 FFmpeg 实现了从 RTSP 视频流中截取一帧图像,并将其渲染到。方法负责使用 FFmpeg 解析 RTSP 地址,获取视频帧,并将其转换为。随后,遍历流列表,查找视频流的索引。同时,为了将解码后的 YUV 图像转换为 RGB,代码使用。逐帧读取数据包,检查是否属于视频流,并调用。,用于显示截取的图像,并将其添加到。原创 2025-02-10 20:10:59 · 415 阅读 · 0 评论 -
解决GB28181对接RTSP倍速播放导致FFmpeg缓冲区满导致花屏问题
为了避免这一问题,我通过调整每一帧的时间戳,使其与倍速播放的速率相匹配。具体来说,在接收到每一帧数据时,重新计算该帧的显示时间,确保帧与帧之间的时间间隔按照倍速播放的设定进行压缩或扩展,从而实现流畅的播放效果。此外,我还优化了缓冲区管理策略,在播放过程中适时清空已处理的帧,并控制缓冲区的最大填充量,避免过多的帧数据堆积造成溢出。这种方式有效避免了由于帧积压而导致的渲染问题,使得倍速播放时FFmpeg能够顺利地处理高吞吐量的数据流,减少了花屏和卡顿现象,确保了视频播放的稳定性和流畅性。原创 2025-01-20 11:07:30 · 745 阅读 · 0 评论 -
海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明
该博主详细解释了rtsp的取流规则!原创 2024-10-29 19:45:44 · 396 阅读 · 0 评论 -
使用FFmpeg实现简单的拉流、推流、视频解码Demo
使用FFmpeg实现一个RTSP拉流、RTMP推流及视频解码的Demo可以分为几个主要步骤。该Demo展示了如何通过FFmpeg处理多媒体流,实现从RTSP拉流到RTMP推流的功能,创建RTMP推流上下文,并配置输出流参数。将解码后的帧编码为RTMP流格式后,通过。同时,为了实现RTMP推流,需要创建一个新的RTMP输出上下文,通过。循环读取每一帧数据,判断是否为视频帧,如果是,则调用。首先是头文件--------Streamer.h。进行解码,得到原始的YUV数据。找到合适的解码器,使用。原创 2024-09-04 14:34:58 · 1602 阅读 · 0 评论 -
使用FFmpeg的AVFilter转换YUV到RGB
AVFilter是 FFmpeg 提供的一个模块化框架,允许用户将多个滤镜(filters)串联起来,形成一个滤镜图(filter graph),以对音视频数据进行逐步处理。滤镜图定义了数据流的处理路径,每个滤镜节点负责特定的处理任务。原创 2024-09-04 14:18:42 · 1370 阅读 · 0 评论 -
(Windows环境)FFMPEG编译,包含编译x264以及x265
本文使用 MSYS2 来编译 ffmpegMSYS2 是 Windows 下的一组编译套件,它可以在 Windows 系统中模拟 Linux 下的编译环境,如使用 shell 运行命令、使用 pacman 安装软件包、使用 gcc (MinGW) 编译代码等。MSYS2 的安装也非常省心,只需要到下载.exe安装包,管理员身份运行安装即可。安装完毕后,开始菜单里就会有下面的程序:点击它们就会启动一个 shell 窗口,Just like on Linux!原创 2024-07-10 15:25:21 · 1750 阅读 · 0 评论 -
(Linux环境)FFMPEG编译,包含编译x264以及x265
编译成功后,执行 ./ffmpeg -codecs 可以看到支持h264,hevc的编解码。执行ldd ./ffmpeg,可以看到仅依赖一些系统的动态库。可以发现,x264的链接选项都放在Libs里,而不是Libs.private。由于install指令不太好用(只拷贝了一个bin过去),所以参考x265的内容,将x264的内容手动拷贝到dist目录下。检测x265的过程,就是编一个简单的带main函数的小程序,仅仅链接x265库。编译成功后,可以看到dist目录下已经有x265相关的内容了。翻译 2023-06-13 17:16:18 · 1263 阅读 · 0 评论 -
PTS时间戳的计算
例如,如果音频的采样率是44100Hz,第一帧的时间戳为0,第二帧的时间戳为0.0000227s(1/44100),第三帧的时间戳为0.0000454s(2/44100),以此类推。例如,如果视频的帧率是25fps,第一帧的时间戳为0,第二帧的时间戳为0.04s(1/25),第三帧的时间戳为0.08s(2/25),以此类推。在大多数情况下,PTS和DTS是相同的,即视频或音频帧在解码时和播放时的时间戳是一致的。显示时间戳(PTS)是指视频或音频帧在播放时的时间戳,用于控制视频或音频帧的显示顺序和播放速度。原创 2023-04-25 11:31:22 · 2547 阅读 · 0 评论 -
avformat_find_stream_info调用read_frame_internal死循环卡死
read_frame_internal这个函数调用,可以解析出不同流的es流,而read_frame_internal函数除非出错否则必须解析出一帧数据才能返回.发现服务调用ffmpeg库函数avformat_find_stream_info出现卡死,进入死循环现象,经过排查是调用了上图接口。因为原始流之中有编解码器信息,但没有数据包,所以解析不出帧,但rtsp流没有错误,所以死循环卡死在其中!具体原因还有待排查!至少定位了是卡死在哪里了!原创 2023-03-14 17:49:08 · 859 阅读 · 0 评论 -
ffmpeg:rtsp报错method SETUP failed: 461 Unsupported Transport
试用请求rtsp流时,UDP端口时无法返回。转载 2023-03-14 17:27:44 · 4150 阅读 · 2 评论