问题标签 [libavformat]

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 投票
4 回答
3051 浏览

.net - .NET 中是否有一组适用于 FFMpeg、libavutil、libavformat 和 libavcodec 的有效 P/Invoke 声明?

我目前正在寻找从 .NET 访问 libavutil、libavformat 和 libavcodec(FFMpeg 的所有部分)。

目前,我从每天晚上为 Windows 32 位执行的共享 FFMpeg 包的自动构建中获取库。

我也在使用ffmpeg-sharp 项目中的代码。在那个项目中,我删除了一些未编译的类(它们是包装类而不是 P/Invoke 声明)。

代码编译得很好,但我遇到了一些问题。

首先,av*.dll 的构建似乎使用了cdecl 调用约定PInvokeStackImbalanceException,因为我在尝试调用时收到了一些av_open_input_file。这很容易改变以使其正常工作。该AVFormatContext结构已填充。

之后,我想调用av_find_stream_info以获取有关文件中流的信息。但是,当使用AVFormatContext从调用中检索到的 to调用它时av_open_input_fileAccessViolationException会抛出一个表明我正在尝试从受保护的内存中读取或写入的信息。

有没有人使用 P/Invoke 通过 P/Invoke 访问 libavutil、libavformat 和 libavcodec dll 库并让它工作?

我应该提到,使用 FFMpeg 的命令行版本虽然是一种解决方案,但在这种情况下并不是一个可行的解决方案,需要通过库进行访问。这样做的原因是我不得不过多地敲打磁盘来做我需要做的事情(我必须对一些非常高清的视频进行逐帧分析)并且我想避免磁盘越多越好。

0 投票
3 回答
3630 浏览

c - ffmpeg(libavcodec)警告:编码帧太大

我正在尝试使用 libavcodec (ffmpeg) 将原始像素数据编码为 mp4 格式。一切都很顺利,我得到了质量不错的 .avi 文件,但有时编解码器会发出“编码帧太大”的警告。当它这样做时,某些帧的一部分(通常是帧的底部)看起来会乱码或全部混淆。任何人都可以告诉我何时发出此警告。以下是我用于编码器的设置:

问候,

0 投票
4 回答
2351 浏览

c++ - FFmpeg:如何在不重新编码的情况下将编码的媒体数据从一个容器放到另一个容器?

例如:我有 file.mp3,我知道我想要的格式可以播放没有视频的声音(例如 FLV),所以如何使用 ffmpeg 从 mp3 容器将编码的 mp3 数据放入 flv(在哪里获取文章/代码示例这)?

我的意思不是来自 cmd,而是来自使用 ffmpeg 作为库的 C++。(见标签)

0 投票
1 回答
3123 浏览

ffmpeg - 是否有适用于 linux 的 MS-DRM 客户端库?

我已经使用库(libavformat 和 libavcodec)来解码一些 MMS 流 url。但其中一些受DRM保护。当我尝试解码它们时,库会发出警告

在 libavformat/asfdec.c 中:

变量 s 是结构 AVFormatContext。我的问题是从哪里得到钥匙?它似乎使用 DRM 密钥对其进行解码。


我查看了 ASF 规范,并尝试修补 asfdec.c。现在,我有了获取许可证的 URL 和密钥 ID。问题可以重写为“是否有适用于 linux 的 MS-DRM 客户端库?” (旧:如何通过 ffmpeg 解码带有 DRM 的 MMS 流 url?)

是否可以使用许可证 url 和密钥 id 来获取内容密钥?

0 投票
1 回答
3262 浏览

c++ - 使用 ffmpeg 进行 Wma 解码

我是 ffmpeg 的新手,我尝试使用 api-example.c 解码 wma 文件。但是,当我运行该程序时,它给了我一个错误说

“frame_len 溢出”。有谁知道如何解决这个错误?

这是我的代码:

我已经坚持了很长时间。请帮我。有人知道我的代码有什么问题吗?

谢谢,

伊扎克

0 投票
1 回答
1195 浏览

ffmpeg - 通过ffmpeg使用x264需要什么参数?

我有一个 AVI 文件,我先将其解码为 Raw 格式,现在我想将其编码为 .h264 格式。我正在使用 libavcodec.dll 和 libavformat.dll。关键是当我尝试从 avcodec_open(AVCodecContext,AVCodec) 打开编解码器时它没有打开。我是否缺少一些我需要为 lib x264 执行此方法指定的参数?任何帮助将不胜感激。谢谢

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 回答
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。