问题标签 [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 投票
2 回答
1834 浏览

ffmpeg - 使用 FFmpeg 的 libavformat API 通过直接流复制创建的文件以 3600 fps 播放速度太快

我正在开发一个 libavformat API 包装器,它将带有 H.264 和 AAC 的 MP4 文件转换为适合流式传输的 MPEG-TS 段。我只是在没有重新编码的情况下进行简单的流复制,但是我生成的文件以3600 fps而不是 24 fps 播放视频。

以下是 ffprobe https://gist.github.com/chrisballinger/6733678的一些输出,损坏的文件如下:

通过 ffmpeg 手动发送的相同输入文件具有正确的时间戳信息:

我相信问题出在我这里的 libavformat 设置中:https ://github.com/OpenWatch/FFmpegWrapper/blob/master/FFmpegWrapper/FFmpegWrapper.m#L349我重新利用了来自 ffmpeg.c 的一堆代码,这是必需的用于直接流复制。

由于 3600 看起来像是一个“幻数”(60*60),它可能就像我没有正确设置时间刻度一样简单,但我无法弄清楚我的代码与 ffmpeg/avconv 本身的差异。

类似的问题在这里,但我认为他们没有像我所做的那样:Muxing a H.264 Annex B & AAC stream using libavformat with vcopy/acopy

0 投票
1 回答
562 浏览

c - libavformat / ffmpeg c 程序“不适合的输入格式”

您好,我正在尝试使用 C ffmpeg 库对视频进行编码。出于某种原因,当我尝试创建格式上下文时,出现以下错误:

[NULL @ 0x7ff574006600] Requested output format 'mp4' is not a suitable output format

我知道我的 ffmpeg 是用 x264 标志编译的,作为一个简单的

ffmpeg -i test.mov test.mp4

工作正常。我还链接了所有生成的 pch 文件,libav* 库中的所有其他内容都运行良好。这是我收到的错误的完整工作示例:

0 投票
1 回答
2397 浏览

ffmpeg - 使用 libavcodec 编码视频时比特率极高

我正在尝试捕获相机输出并使用 libavcodec 制作视频。作为如何完成此操作的示例,我使用了ffmpeg muxing 示例

问题是 4 秒视频的大小约为 15mb,比特率约为 30000 kb/s,尽管我已将 AVCodecContext 上的比特率设置为 400000(我认为此值以比特/秒为单位,而不是 kb/s) .

我还尝试使用命令行中的 ffmpeg 录制视频,它的比特率约为 700 kb/s。

有谁知道为什么不保留比特率,因此生成的文件非常大?我用来初始化编解码器上下文的代码如下:

初始化部分:

0 投票
2 回答
2175 浏览

ffmpeg - 如何在 libavformat 中设置复用器选项?

我正在尝试使用 libavformat 多路复用器“hlsenc.c”....查看多路复用器的代码,看起来多路复用器通过 AVOption 机制支持参数...例如,hlsenc.c 多路复用器支持 AVOption名为“hls_time”的参数...

我正在使用 av_guess_format("hls",NULL,NULL) 来查找合适的输出格式,但是如何设置这些选项?

(似乎互联网上的所有示例都在编解码器上设置选项......我想在多路复用器上设置选项)。

0 投票
1 回答
4821 浏览

video - 在ffmpeg中可靠地获取PTS值?

我正在尝试编写一种方法,该方法将在查询时提供下一帧和演示时间戳。代码目前看起来像这样:

到目前为止,我一直在关注 Dranger 教程,但在可靠地获取帧的 PTS 值方面停滞不前(http://www.dranger.com/ffmpeg/tutorial05.html)。返回的 PTS 值始终为 0。

另外,get_buffer()已弃用,所以我现在使用该get_buffer2()方法来设置全局 pts 值。但是,该release_buffer方法也已被弃用,我似乎找不到它的替代品。这让我相信教程中列出的方法可能不再是完成这项任务的最佳方式。

简而言之,使用最新的 ffmpeg,可靠地获取帧 pts 值的最佳方法是什么?

0 投票
1 回答
572 浏览

flv - 通过 libavcodec 编码 flv 视频不起作用

我正在尝试使用 libavcodec 对 flv 视频进行编码。以下代码是生成 mpeg 视频的示例代码,效果很好。但是将编解码器ID替换为AV_CODEC_ID_FLV1后,生成的视频文件无法播放。

0 投票
1 回答
2277 浏览

c++ - FFmpeg av_read_frame 返回大小但没有数据?

我编写了一些 C 代码来访问 ffmpeg 并将其包装在 C++/CLI(.NET 托管)类中。该程序获取实时视频流并提取帧并将其转换为 PNG 文件。

不幸的是,保存到磁盘的图像总是黑色的(在 Notepad++ 中打开它们显示它们充满了空值)。

我正在使用程序集 aformat/codec-55.dll 以及开发头文件和库从 ffmpeg-20131120-git-e502783-win64-dev 进行编译。整个项目是使用 64 位的托管 C++ (Cpp/cli) .NET 4.0 编译的。

经过一番调查,问题似乎是 av_read_frame 正确填充了 AVPacket->size 值,但 AVPAcket->data 始终为空。当帧完成(得到==1)时,AVFrame 的数据只是一个空矩阵。:(

这是代码: 示例代码(抱歉,它没有很好地粘贴到 SO)

我认为当数据包返回时,问题出在第 34 行,如下所示: 大小已设置但数据为空

请问,我怎样才能让它工作?我做错了什么?

0 投票
1 回答
669 浏览

video - FFMPEG:是否必须为编解码器定义上下文?

我有一个解码器代码。我正在尝试将其集成到ffmpeg framework.

我指的是这里给出的 HOW TO:http ://wiki.multimedia.cx/index.php?title=FFmpeg_codec_howto

根据那篇文章,我需要在我的decoder_name.c文件中定义一个结构。

示例结构如下所示:

在哪里,

但是,我的怀疑是根据上面提到的文章,还有另一个名为的字段.priv_data_size包含某些上下文的大小。

是否必须有这个字段.priv_data_size,因为根据上面的文章,我不需要定义结构的所有参数AVCodec。此外,我的解码器没有任何此类上下文。

但是,当我浏览libavcodecffmpeg 中其他可用解码器的代码时,我发现每个解码器都定义了这一点。如果我不指定,我的解码器会工作吗?因此,我无法继续。请提供一些相同的指导。

- 提前致谢。

0 投票
1 回答
324 浏览

c - 如何使用我自己的自定义函数覆盖 libavformat 中的内存访问函数(malloc、realloc 等)

我正在使用 libavformat-dev 包来获取一些媒体文件属性,例如比特率、持续时间等。但是,我想使用我的自定义 malloc、calloc、realloc 函数来代替 libavformat 使用的系统函数。有没有办法在 libavformat 中注册我的自定义函数?

0 投票
1 回答
639 浏览

ffmpeg - 是否保证整个流的数据包持续时间是统一的?

我使用数据包持续时间从帧索引转换为 pts 并返回,我想确保这是一种可靠的方法。

或者,是否有更好的方法将 pts 转换为帧索引,反之亦然?

显示我的用法的片段: