- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 rtmp 和 ffmpeg/libav。我有一个 fps 为 60 fps 的剪辑,由 2 个连续视频帧和 1 个音频帧组成。 2 个连续帧对应于来自 2 个摄像机的左右图像(已同步)。我使用 av_read_frame
来读取帧,然后如果它是视频帧,我使用 avcodec_decode_video2
(我知道它已被弃用,但它仍然有效,我稍后会替换它)。现在,由于我必须将 2 个视频帧并排放置,所以我等到 2 个帧完全读取后,用 OpenCV 将它们放在一起。问题是,我似乎总是只读取左帧,有时会被右帧打断。我搜索了一下这个问题,似乎与解码器的刷新有关。因此,我尝试使用空包或使用 avcodec_flush_buffers 来刷新解码器,但情况更糟糕,我得到了左右图像,但只有几帧。下面是我的代码示例:
bool left = false;
while(true)
{
ret = av_read_frame(fmt_ctx, &pkt);
if(ret < 0)
break
if(pkt.stream_index == video_index)
{
ret = avcodec_decode_video2(video_dec_ctx, frame, &got_frame, &pkt);
if(got_frame)
{
if(!left)
{
//I SAVE THE LEFT FRAME
left = true;
}
else
{
//I PUT THE LEFT AND RIGHT FRAME TOGETHER
left = false;
}
}
}
}
更新
我弄清楚了问题所在:基本上我试图读取的剪辑/流是由 1 个 I 帧和实际上是 I 帧的 P 帧组成,因为每个帧代表左和右。我无法使用 av_read_frame
强制执行任何操作,因此我必须找到解决方法。
最佳答案
我猜测相邻帧(左和右)可能具有相同的 PTS 值。您可以首先缓冲帧,然后根据 PTS 值(查找相同的值)来获取帧,在正确获取帧后,将它们连接起来可能很简单。
希望有帮助。
关于c++ - 使用 av_read_frame() 获取 2 个连续帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920864/
我想在不解码的情况下在编码域中读取和打开视频。到目前为止,我已经编写了代码,并且它可以正常工作。但是方法 av_read_frame() 的输出只是给出了零的数量,并且相同的负整数值正在重复。 我不确
我使用 ffmpeg 解码 RTSP 视频。它喜欢这样: 当它在文件末尾时,它在 av_read_frame() 中阻塞了很长时间,为什么? 最佳答案 各种原因都可能导致长时间阻塞。但是您可以控制 I
我使用ffmpeg的dll读取USB摄像头,在控件上显示图片,并将图片保存到文件中。起初,读数正常。可以保存声音和图像。但是读了几分钟后,无法读取数据,av_read_frame返回错误码为-5,相机
我正在使用 FFMPEG解码 H264从 IP 摄像机流。有时函数 av_read_frame()返回错误 AVERROR_EXIT . 我用两台相机进行了测试。在这里,LAN network 中的摄
我是 FFMPEG 的新手,正在尝试使用 FFMPEG 进行 HLS 流式传输。当我尝试使用函数“av_read_frame”时,只要数据不可用,它就会返回一个负值。有什么方法可以让这个函数等到收到一
StackOverflow 上发布了一个问题,询问是否有任何模式可以等待 av_read_frame 提供有效数据。 : link . 我的问题是相反的: 我可以确定此方法将始终返回 -1、0 或 1
好的,所以我下载了一些 .yuv 格式的原始 UHD 序列,并在 .mp4 容器中使用 ffmpeg 对它们进行编码(h264 4:4:4,100% 质量,25fps)。当我使用 ffprobe 找出
我正在使用 libav 读取 MPEG 流。 我正在使用函数 av_read_frame() 将一些帧读入数据包: av_read_frame(pFormatCtx, &packet) 然后我使用函数
我目前正在尝试学习 FFmpeg API,关注 this tutorial .但是,我已经对视频解码的第一课产生了疑问。除了我使用的是 C++ 之外,我的代码与教程中的代码基本相同。我的问题是视频流与
是否有可能检测到 av_read_frame() 可以读取的最大数据包 (AVpacket) 大小? 最佳答案 我最近也在找同样的东西。似乎 av_read_frame 在内部为每个编解码器/格式调用
我已经编写了一些 C 代码来访问 ffmpeg 并将其包装在 C++/CLI(.NET 管理)类中。该程序获取实时视频流并提取帧并将它们转换为 PNG 文件。 不幸的是,保存到磁盘的图像总是黑色的(在
我正在使用 ffmpeg 实现一个(非常)低延迟的视频流 C++ 应用程序。客户端收到使用 x264 零延迟预设编码的视频,因此无需缓冲。如所述here ,如果您使用 av_read_frame()
我对ffmpeg有以下疑问。请澄清。 1.我正在使用 ffmpeg 并在执行 av_read_frame 之后读取 mp4 文件 我正在获取视频(stream_index = 0),音频(stream
我希望将 FFMpeg 合并到 PHP 脚本中。我的理解是,两个最好的解决方案是通过 exec() 使用命令行并提取结果或使用 PHP-FFMpeg ( https://github.com/PHP-
我一直在尝试在 android 中编写一个 rtsp 播放器。我是新手。并想知道如何存储从 av_read_frame 检索到的数据包以供进一步使用。 [例如。 不同的线程来解码它 ]。 while
我正在使用 rtmp 和 ffmpeg/libav。我有一个 fps 为 60 fps 的剪辑,由 2 个连续视频帧和 1 个音频帧组成。 2 个连续帧对应于来自 2 个摄像机的左右图像(已同步)。我
我正在尝试使用 opengl 逐帧处理视频。我使用 ffmpeg 从视频文件中读取帧。 在开始处理帧之前,我想先读取一些帧并将它们存储在内存中。所以我尝试在 while 循环中使用 av_read_f
我有一个 3500 帧的 HEVC 序列,我正在编写一个解码器来读取它(逐帧读取并转储到 yuv)。在我的 main() 中,我有一个调用 decoder() 3500 次的 for 循环(我假设在这
过去两周我一直在试验 FFMpeg,但遇到了一些麻烦...... 首先,我一直在使用 Galaxy S3,它工作得非常好,给了我有史以来最好的照片,但我最近换了 Galaxy NEXUS,这给了我很多
我正在使用 KxMovie:https://github.com/kolyvan/kxmovie 它似乎停止了一个流并关闭了应该使用的 View Controller [暂停]; 但是,如果流未正确关
我是一名优秀的程序员,十分优秀!