问题标签 [libav]
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.
c - libav:用 RGB24 样本数据填充 AVFrame?
我正在尝试为使用 RGB24 格式初始化的 AVFrame 填充样本数据。我使用以下代码片段来填充 RGB 数据。但是在编码的视频中,我只能看到仅覆盖视频帧 1/3 的灰度条。此代码片段假设仅填充红色。任何提示我在这里做错了什么?
permissions - 使用 minGW 和 MSYS 在 Windows 上构建 libav 时出错
我在使用libav 时遇到了问题。 我使用 MinGW 和 MSYS 在 Windows 上构建 libav。但是,当我使用“make”时,在构建一些文件(.o 文件)后我得到错误,它是
之后,我查看 libavcodec 文件夹的权限,我拥有所有权限。:| 请帮我解决这个问题或者给我一个完整的指导来在windows上构建libav(我使用win7 x64并且有msys,mingw)谢谢!!!
android - 寻找通过android和ios的phonegap平台组合图像制作视频的方法
我正在寻找可以组合图像然后形成视频的应用程序。我正在使用可在 Android 和 IOS 上使用的 Phonegap 框架。
我的问题是实现这一目标需要什么样的过程?
在这个阶段,我尝试阅读有关 ffmpeg 的内容,stackoverflow 上存在的大多数问题都谈到必须获取源代码,编译以制作一系列库以供使用。有了这些库,它需要与 Android/IOS 库绑定吗?(我注意到eclipse中有一个带有项目文件的'android.jar'。它会存在在那里吗?)之后我的困惑在于它是如何在Phonegap中实现的。开发插件?
补充一下,根据 wiki,libav 具有硬件加速的 H.264 解码,同时使用 x.264 进行 Android 编码。这是如何运作的?这是从 libav 库访问然后必须在 android.jar 中编译的东西吗?
在试图描述我不知道的东西时,我可能会混淆术语。
任何帮助,将不胜感激。
c++ - 使用 ffmpeg 库将 .264 转换为 .ts
我目前正在将 h.264 基本流(带有 postfiix .264 的文件)转换为传输流(带有 postfix .ts 的文件)。我已经使用 ffmpeg 命令行“ffmpeg -i in.264 -an -vcodec copy -f mpegts out.ts”成功完成了转换。
现在我想通过调用 ffmpeg 的库,使用我自己的 C++ 代码来实现这种转换。我已经下载了预编译的 ffmpeg 库(libavcodec、libavformat 等)。我的输入 h.264 是预先录制的文件,而不是实时流,我的输出 .ts 文件也是如此。所以我的问题是我应该调用库中的哪些函数来实现转换?
ios - 单元测试时的链接器错误:ld:从 .../libavutil.a(imgutils.o) 中的 _av_image_check_size 到 ... 中的 cstring 的非法文本重定位
在 Xcode 4.3.2 中,构建一个 iPad 应用程序,其中包括libavutil.a
ffmpeg 发行版,它可以正确构建和运行,但是当我尝试运行单元测试(Cmd-U)时,我收到以下链接器错误:
ld: 非法文本重定位到 /myPath/libavutil.a(imgutils.o) 中的 cstring 从 /myPath/libavutil.a(imgutils.o) 中的 _av_image_check_size 用于架构 armv7 clang: 错误:链接器命令失败,退出代码 1(使用-v 查看调用)
这是在设备上(我们目前无法在模拟器中运行它,因为我们没有包含所有库的胖二进制文件)。
为什么在运行单元测试时它会正常构建和运行但不能链接?
c++ - 在 C/C++ 中将 libavcodec 与 linux 一起使用时出错
问题: AVFormatContext::nb_streams 价值太小。我的 C++ 代码(错误处理、包含等省略以减少列表):
跑步:
但是“avplay”程序运行良好。
ffmpeg - 在没有命令行的情况下使用 libav?
我使用下面的这个命令来转换文件
./avconv -i inputFile -vcodec libx264 -trellis 2 -crf 23 -tune psnr -vf crop='trunc(iw/2)*2:trunc(ih/2)*2' -y outputFile
但是,我不想使用这个命令,我想做一个像
convert(char *inputFile, char *outputFile). (The option of my function like option in command line)
然后我将从我的 main 函数中调用它,例如
我也读过这篇文章。但我不清楚。
谁能告诉我如何解决这个问题?我用谷歌搜索了很多次,但没有找到解决方案。
encoding - sws_scale 在较小的 x264 mp4 编码中搞砸了最后一个像素行
我正在将 PIX_FMT_ARGB 格式的图片混合到 mp4 视频中。
一切都很好,除了输出图像的最后一个像素行被搞砸了,在大多数情况下最后一行是完全黑色的,有时还有其他颜色,它似乎在某种程度上取决于它运行的机器。
我绝对确定错误必须在 sws_scale 中,因为我在缩放之前和之后保存图像。输入图像没有错误,但是在 sws_scale() 之后我保存了 yuv 图像并且错误很明显。
这是一个例子:
原来的
Yuvfile(在 sws_scale 之后)
在 Yuvfile 的底部,您将看到黑色行。
这就是我进行缩放的方式(在官方 ffmpeg 示例之后,或多或少):
我还尝试了许多不同的 SWS_ 标志,但都产生了相同的结果。
这可能是 sws_scale 中的错误还是我做错了什么?我正在使用最新版本的 ffmpeg 库。
c++ - libav 通过 mpegts 将 h264 流式传输到 rtmp 服务器
我正在开发一个应用程序,我想通过 mpegts 将 h264 流式传输到 rtmp 服务器(FMS、C++ RTMP 服务器、Wowza)。我正在查看 libav 的 output-example.c。为了简单起见,我暂时删除了所有音频。
我将此代码用作测试(不起作用): https ://gist.github.com/fb450aee77471a1d86f3#comments
我在那里做错了什么?
谢谢
audio - LibAV - 采用什么方法进行实时音频和视频捕获?
我正在使用 libav 将原始 RGB24 帧编码为 h264 并将其复用到 flv。这一切正常,我已经流式传输超过 48 小时,没有任何问题!我的下一步是将音频添加到流中。我将捕捉现场音频,我想使用 speex、mp3 或 nelly moser 对其进行实时编码。
背景资料
我是数字音频的新手,因此我可能做错了。但基本上我的应用程序获得了一个带有交错音频的“浮动”缓冲区。这个“audioIn”函数被我正在使用的应用程序框架调用。缓冲区每个通道包含 256 个样本,我有 2 个通道。因为我可能混用了术语,所以我是这样使用数据的:
现在我有一个缓冲区,其中每个样本都是 16 位,我将 this 传递short* buffer
给我的包装av.addAudioFrame()
函数。在这个函数中,我在对音频进行编码之前创建了一个缓冲区。从我读到的,AVCodecContext
音频编码器的frame_size
. 调用时,此 frame_size 必须与缓冲区中的样本数匹配avcodec_encode_audio2()
。我为什么这么认为,是因为这里记录的内容。
然后,尤其是以下行:如果未设置,则除最后一帧外的所有帧都frame->nb_samples
必须等于avctx->frame_size
。*(如果我对此有误,请在此处纠正我)。
编码后,我调用av_interleaved_write_frame()
实际写入帧。当我使用 mp3 作为编解码器时,我的应用程序运行大约 1-2 分钟,然后接收视频/音频流(flv、tcp)的服务器断开连接并显示消息“ Frame too large: 14485504
”。生成此消息是因为 rtmp-server 正在获取一个很大的帧。这可能是因为我没有正确地与 libav 交错。
问题:
即使在浏览libav的源代码时,我也不确定有很多位,因此我希望如果有人有一个编码音频的工作示例,该示例来自来自“外部”libav的缓冲区(即您自己的)应用)。即如何为编码器创建一个足够大的缓冲区?当您需要等待此缓冲区填满时,如何使“实时”流工作?
正如我在上面所写的,我需要在编码之前跟踪缓冲区。其他人是否有一些代码可以做到这一点?我现在正在使用 AVAudioFifo。编码音频和填充/读取缓冲区的功能也在这里:https ://gist.github.com/62f717bbaa69ac7196be
我用 --enable-debug=3 编译并禁用优化,但我没有看到任何调试信息。如何使 libav 更详细?
谢谢!