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

c++ - 绿色输出写入 FLV 文件 libavformat

我编写了一段 C++ 代码,可以捕获网络摄像头视频帧,对其进行解码,将它们转换为 YUV420P,对其进行编码,然后将它们写入文件。如果我使用 mpeg2 编解码器并写入 .mpg 文件,则一切正常。但是,如果我使用 flv,那么产生的输出只是一个绿屏。我不确定是否需要为编码 flv 视频设置不同的编码器设置?这是我的代码(相关部分):

编码器设置:

写框架:

0 投票
1 回答
538 浏览

c++ - FFmpeg 进入 Qt 5.0.2:在 av_register_all() 上退出代码 -1073741515;

我正在尝试将 FFmpeg 集成到我的 Qt 应用程序中。我使用了来自Zeranoe FFmpeg 构建页面的 FFmpeg git-0fb64da 64 位开发源代码,并将 avformat.lib 添加到我的项目中。我的简历:

我将 libavformat/avformat.h 包含在“extern“C””块中。

只要我不调用 av_register_all(),这一切都可以正常工作,但是一旦我这样做,我的应用程序就会以代码 -1073741515 退出。关于为什么的任何想法?

0 投票
0 回答
1789 浏览

android - Mac 上 Libavcodec.so 和 libavformat.so 的简单构建

谁需要ffmpeg?不是我。我需要的是能够解码视频流及其音频流,以便可以将帧放在 opengl 表面上与音频同步。

FFmpeg 是一个视频转码工具。那不是我需要的。我需要它的库。

问题是构建 FFmpeg 的每个示例都包含我不需要的垃圾。我浪费时间的最新示例:

https://github.com/appunite/AndroidFFmpeg

使用诸如 freetype2 之类的东西,我真的,真的,不需要。更烦人的是,它甚至不会像描述的那样构建,因为示例引用了 freetype,而不是 freetype2,所以构建步骤被破坏了。甚至不要让我开始解决我在使用 libtool 时遇到的问题。

踢球者正在寻找 libav.org,他们在其 about 页面上描述了 ffmpeg 项目中的混乱情况。也许这就是为什么这很困难。

那么,仅仅构建共享库就这么难吗?有人可以指点我一些文档或有效的教程吗?我承认这对我来说是一个新领域,但我使用谷歌发现的只是混乱。

0 投票
2 回答
2760 浏览

c++ - 为 ffmpeg 编码设置 RGB 帧的单个像素

我正在尝试将 ffmpeg 流媒体的测试模式Trouble syncing libavformat/ffmpeg with x264 and RTP更改为熟悉的 RGB 格式。我更广泛的目标是动态计算流式视频的帧。

因此,我将其替换AV_PIX_FMT_MONOWHITE为根据http://libav.org/doxygen/master/pixfmt_8h.htmlAV_PIX_FMT_RGB24的“压缩 RGB 8:8:8、24bpp、RGBRGB ...” 。

为了填充它的像素数组data,我尝试了很多变体

HEIGHTx WIDTH= 80x60 时,这个版本产生 红到蓝条纹的截图,当我期望一个蓝色到红色的水平渐变时。

640x480 产生相同的 4 列模式,但水平条纹更多。

640x640、160x160 等,产生列,青色/洋红色/黄色,具有相同的水平条纹。

垂直渐变的表现更加怪异。

外观不受AV_PIX_FMT_RGBA尝试的影响(每个像素 4 个而不是 3 个字节,alpha=255)。也不受从 C 到 C++ 的移植的影响。

srcStrides传递给的参数sws_scale()是一个长度为 1 的数组,包含单个 int HEIGHT

访问 AVFrame的每个像素都会以较少的细节提出相同的问题,目前尚未得到解答。

流光发出一个警告,我怀疑这会影响外观:

[rtp @ 0x269c0a0] Encoder did not produce proper pts, making some up.

所以。如何设置要发送到 sws_scale()(然后发送到 x264_encoder_encode() 和 av_interleaved_write_frame())的帧中像素的 RGB 值?

0 投票
2 回答
4206 浏览

c - How do I use bitstream filters in

I'm trying to demux an RTSP stream and remux it into a TS file, using libavformat, libavcodec,etc., copying the video and transcoding the audio. If I use ffmpeg, the command is roughly like this:

I've looked at the muxing/demuxing examples, but aside from having difficulty understanding how to make a stream copy, I can't find any mention of bitstream filters. I'm currently getting the following error:

How do I create a bitstream filter and how do I assign it? Do I assign it to the input stream, or the output stream?

0 投票
1 回答
617 浏览

c - 在 C 代码中使用 libavformat,未定义的 x86_64 符号

我正在做一个项目,我必须创建一个简单的 C 程序,libavformat用于将文件从一种格式转换为另一种格式。

我正在使用 OS X (10.8.3) 并已libav通过以下步骤进行安装。

首先,使用 Homebrew 安装依赖项:

接下来,从这里下载 libav:http://libav.org/download.html 使用libav 9 "plain 9"发行版)

最后,使用以下命令进行配置:

一切都正确编译并给出了支持的编解码器、编码器、解码器、复用器、解复用器等的列表。

然后我运行make && sudo make install

但是,一旦我尝试av_register_all()在自己的 C 代码中使用和其他一些关键函数,就会收到以下错误:

我曾尝试使用gcc -Wall base.c -o baseas 和编译它clang -Wall base.c -o base,但都给出了上述错误。我担心库的链接方式有问题,但我对 C 编程的经验不足,不知道下一步该往哪里看。当我删除av_register_all()调用时,C 代码本身编译得很好。

libavformat 的包含如下所示:#include "libavformat/avformat.h"

任何帮助表示赞赏。我尝试添加-arch x86_64到 CFLAGS 导出,但没有任何区别。

0 投票
0 回答
654 浏览

ffmpeg - FFMPEG:无法播放从图像编码的 MPEG4 视频。持续时间和比特率未定义

我一直在尝试将从图像创建的 H264 视频流设置到 MPEG4 容器中。我已经能够成功地从图像中获取视频流。但是当在容器中混合它时,我必须做错事,因为没有播放器能够重现它,尽管 ffplay - 播放视频直到最后,然后图像被冻结直到永恒 -。

ffplay 无法识别 Duration 和比特率,所以我认为这可能是与 dts 和 pts 相关的问题,但我已经搜索了如何解决它但没有成功。

这是ffplay的输出:

结构

我的代码是 C++ 风格的,所以我有一个处理所有编码的类,然后是一个对其进行初始化的 main,在一个 bucle 中传递一些图像,最后通知进程结束,如下所示:

提示

我看过很多关于解码视频和编码到另一个视频的例子,但没有从头开始混合视频的工作例子,所以我不确定如何处理 pts 和 dts 数据包值。这就是为什么我怀疑问题必须在以下方法中的原因:

任何帮助或见解将不胜感激。提前致谢!!

PS 完成配置的其余代码如下:

0 投票
1 回答
4021 浏览

ffmpeg - 使用 libavformat API 读取 H264 SPS 和 PPS NAL 字节

如何使用 libavformat API 读取 H264 SPS 和 PPS NAL 字节?

我尝试使用“av_read_frame(input_avFormatContext, &avPkt)”API 从 .mp4 视频(编解码器为 h264)文件中读取视频数据到“AVPacket”结构。

我将 avPkt->data 转储到文件中。但是读取的第一帧是 IDR 帧。

使用“ffmpeg -i video.mp4 video.h264”生成的文件将在 IDR 开始之前的开始中包含 SPS 和 PPS。

我想从 .mp4 文件中提取原始 .h264 视频并将其转储为 SPS、PPS、IDR、P1、P2... 顺序。

我想使用 libavformat API 以编程方式完成这项工作。

有什么想法吗?

谢谢。

0 投票
0 回答
230 浏览

c - 使用 FFMPEG 降低网络视频流的帧速率

我有一个使用 ffmpeg C 库解码的网络视频流。
我想将最大帧速率降低到某个最大值,比如 15 fps。
我使用了 filter fps=fps=15,但即使在 25 fps 的视频流上,这也会导致帧重复。我认为这是由于网络延迟。

有没有办法降低最大帧速率但避免帧重复而只是得到延迟?
如果不是,有没有办法识别解码的帧是否是重复帧之一?

0 投票
2 回答
669 浏览

c - 如何导出 ffurl_register_protocol()?

我有一些需要ffurl_register_protocol()导出的遗留代码。我找到了这个补丁:

但是,它没有帮助。知道怎么做吗?