问题标签 [libavcodec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2155 浏览

ffmpeg - 在 FFmpeg 中按字节查找

我将感谢您对以下内容的建议。我正在开发一个基于 FFmpeg 的 libavformat 的视频转换器,我需要实现一个准确的搜索 API。首先,我开发了一个视频流索引器,它只保存每个数据包的演示时间戳(PTS)。然后我的编码器使用这个索引来寻找视频文件。例如,在此操作之前,我将文件重新混合到 mp4 容器。内部没有正确索引的视频需要 Remux,或者视频根本没有索引。我需要实现按字节搜索,当然还有以前构建的索引。我尝试了很多方法来实现这一点,但没有任何成功。也许你知道如何在 FFmpeg 中实现精确的字节查找?最好的祝福。

0 投票
1 回答
6797 浏览

libavcodec - av_register_all() vs. avcodec_register()

Instead of calling av_register_all(), is there an example of selecting a single decoder to use? I guess I would have to call avcodec_register(), av_register_codec_parser() etc...

The question is, which functions exactly should be called, because av_open_input_file() fails with -2 if I don't use av_register_all().

0 投票
1 回答
269 浏览

android - ffmpeg - 强制使用的过滤器

我正在为 android 编译 ffmpeg。只是想知道配置中哪些过滤器是强制性的。如果有人知道请建议我。

0 投票
2 回答
1647 浏览

android - ffmpeg - avcodec_decode_audio3 总是返回 0,在 android 上使用 aac 解码

我正在为android编写一个基于ffmpeg的音频解码器,我必须解码aac音频,但由于某种原因,它总是返回解码的0字节。

看起来我通过了一切权利。谁能告诉我在我的情况下出了什么问题。我从 ffplay.c 复制了代码。avcodec_decode_audio3 函数总是返回零的原因是什么?

这是来自 ffplay.c 的代码:

0 投票
1 回答
1346 浏览

c# - C# 中的 FFmpeg 和 DirectSound/XAudio2

我一直试图让它工作一段时间,但有点卡住了。

我试图能够使用输出到 DirectX 和 DirectSound 或 XAudio2 的 libavcodec 在 C# 中播放视频。我已经设法让它播放视频,但我坚持让它输出声音。

我没有使用过 DirectSound 或 XAudio2 的经验,或者 libavcodec 的文档很少,这都无济于事。我设法获得了音频编解码器,但我一直试图解码它或通过 DirectSound/XAudio2 输出它。

如果有人能够指出我正确的方向,或者只是告诉我该怎么做,我将不胜感激。

0 投票
2 回答
35358 浏览

c - 使用 libavcodec 的 mpegts 容器中的原始 H264 帧

对于以下问题,我将不胜感激:

我有一个带摄像头的小工具,可以生成 H264 压缩视频帧,这些帧被发送到我的应用程序。这些帧不在容器中,只是原始数据。

我想用ffmpeg和libav函数创建一个视频文件,以后可以使用。

如果我解码帧,然后对它们进行编码,一切正常,我得到一个有效的视频文件。(解码/编码步骤是常用的libav命令,这里没什么花哨的,我从万能的互联网上拿来的,它们坚如磐石)......但是,我在解码和编码上浪费了很多时间,所以我想跳过这一步,直接将帧放入输出流中。现在,问题来了。

这是我想出的用于生成编码的代码:

变量如下:

frameData是来自相机的解码帧数据,它是在上一步中解码的,videoOutBuf是用于保存数据的普通 uint8_t 缓冲区

我已经修改了应用程序,以便不对帧进行解码,而只是简单地传递数据,例如:

在哪里

frameData是原始 H264 帧,currentFrameSize是原始 H264 帧的大小,即。我从小工具获得的每一帧的字节数。

突然应用程序不再正常工作,制作的视频无法播放。这很明显,因为我没有为数据包设置正确的 PTS。我所做的是以下(我很绝望,你可以从这种方法中看到:))

其中timestamps实际上是由上面的工作代码生成并写入文件的 PTS 列表(是的,您没看错,我记录了所有 PTS 的 10 分钟会话,并想使用它们)。

该应用程序仍然无法正常工作。

现在,我不知道该怎么做,所以这是一个问题:

我想使用 libav 函数创建一个“mpegts”视频流,在流中插入已经编码的视频帧并用它创建一个视频文件。我该怎么做?

谢谢,f。

0 投票
1 回答
3968 浏览

ffmpeg - 当编解码器使用 p 帧时,av_seek_frame 会中断 avcodec_decode_video2

我试图了解如何在用 p 帧(例如 H.264)编码的视频中寻找——现在我只知道如何在用每帧都是关键帧的编解码器编码的视频中寻找(例如 MJPEG)。

给定一个时间戳,最终它应该播放该时间戳的帧。但现在,我只是想在时间戳附近播放关键帧。所以,首先——

然后是一些中间代码,包括av_read_frame. 然后 -

观察:

  • 对于某些视频,这是可行的。对于其他人,avcodec_decode_video2返回错误(负数)。工作视频示例:此处。非工作视频示例:此处

  • 对于 MJPEG 视频,这是可行的。

  • 如果我取出av_seek_frame, 以便它按顺序播放帧,它就可以工作。

0 投票
1 回答
456 浏览

ffmpeg - 如何检测ffmpeg中的帧间编解码器?

在 ffmpeg 中,有没有办法判断编解码器(AVCodecAVCodecContext)是否支持帧间编码?

0 投票
1 回答
666 浏览

ffmpeg - 使用 libavcodec 时模拟 FFMPEG '-sameq' 标志所需的设置

目前正在尝试使用 libavcodec 将 MP4(MPEG4 和 H264)和 MPG (MPEG2) 视频文件转码为 .MP4、.MPG 和 .AVI 文件。以前使用 FFMpeg.exe 并使用“-sameq”标志完成此操作,以保留与输入文件相同/相似的质量输出文件。

现在使用 av_open_input_file、av_read_frame 和 avcodec_decode_video2 打开、读取和解码输入文件,然后分配一个 AVCodecContext 并使用 avcodec_encode_video 对数据进行编码。但是输出文件的视频质量很差。

这些是我正在使用的 AVCodecContext 设置?:-

有人知道模拟“-sameq”设置所需的额外设置或 AVCodecContext 中需要哪些额外设置来提高输出质量?

0 投票
4 回答
3150 浏览

c - 告诉 libavcodec/ffmpeg 丢帧

我正在构建一个创建视频的应用程序。问题是,有时(嗯......大部分时间)帧获取过程不够快。

如果我迟到了,我目前正在做的是跳过当前帧采集,但是 FFMPEG/libavcodec 将我传递给它的每一帧都视为下一帧,所以如果我从 2 帧中删除 1 帧,则为 20 秒视频只会持续 10 个。一旦我添加声音,就会出现更多问题,因为声音处理速度更快......

我想告诉 FFMPEG:“最后一帧应该比最初预期的持续时间长两倍”,或者任何可以让我实时处理的东西。

我试图将帧堆叠在一个点上,但这最终会杀死我所有的内存(我还尝试在硬盘驱动器中“堆叠”我的帧,这很慢,正如我所料)

我想我将不得不手动使用 pts,但我所有的尝试都失败了,并且阅读其他一些使用 ffmpeg 的应用程序代码(例如 VLC)并没有太大帮助......所以任何建议都会很多赞赏!

提前非常感谢!