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

c++ - 在 C/C++ 中将 libavcodec 与 linux 一起使用时出错

问题: AVFormatContext::nb_streams 价值太小。我的 C++ 代码(错误处理、包含等省略以减少列表):

跑步:

但是“avplay”程序运行良好。

0 投票
0 回答
203 浏览

libavcodec - 使用 libavcodec 的 mpeg1 编码性能低下

我正在使用 mpeg1 编解码器来创建我的高清和标清内容的代理视频。Mpeg1 分辨率和比特率是;高清视频代理:704x576 4.5 Mbit 标清视频代理:352x288 1.5 Mbit

我的视频参数是这样的;如何获得更多性能来更改任何参数...

此致,

0 投票
1 回答
8346 浏览

encoding - ffmpeg API h264 编码的视频不能在所有平台上播放

编辑:在以前的版本中,我使用了一个非常古老的 ffmpeg API。我现在使用最新的库。问题只是略有变化,从“主要”变为“高”。

我正在使用 ffmpeg C API 在 C++ 中创建 mp4 视频。

我希望生成的视频具有“约束基线”配置文件,以便生成的视频可以在尽可能多的平台上播放,尤其是移动设备,但我每次都得到“高”配置文件,即使我对编解码器进行了硬编码profile 为FF_PROFILE_H264_CONSTRAINED_BASELINE。因此,该视频无法在我们所有的测试平台上播放。

这就是“ffprobe video.mp4 -show_streams”讲述我的视频流的内容:

这是我用来添加视频流的功能。来自 ptr-> 的所有值都是从外部定义的,这些值是否必须是特定值才能获得正确的配置文件?:

附加信息:

作为参考视频,我使用 Mozilla 提供的 gizmo.mp4 作为在每个平台/浏览器上播放的示例。它绝对具有“受约束的基线”配置文件,并且绝对适用于我们所有的测试智能手机。你可以在这里下载。我们自己制作的视频并不适用于所有平台,我相信这是因为个人资料。

在创建 mp4 之后,我还使用qt-faststart.exe将标题移动到文件的开头,因为这不能直接在 C++ 中以一种好的方式完成。这可能是问题吗?

显然,我做错了什么,但我不知道它可能是什么。我会感谢每一个提示;)

0 投票
2 回答
1240 浏览

encoding - sws_scale 在较小的 x264 mp4 编码中搞砸了最后一个像素行

我正在将 PIX_FMT_ARGB 格式的图片混合到 mp4 视频中。

一切都很好,除了输出图像的最后一个像素行被搞砸了,在大多数情况下最后一行是完全黑色的,有时还有其他颜色,它似乎在某种程度上取决于它运行的机器。

我绝对确定错误必须在 sws_scale 中,因为我在缩放之前和之后保存图像。输入图像没有错误,但是在 sws_scale() 之后我保存了 yuv 图像并且错误很明显。

这是一个例子:

原来的

在此处输入图像描述

Yuvfile(在 sws_scale 之后)

在此处输入图像描述

在 Yuvfile 的底部,您将看到黑色行。

这就是我进行缩放的方式(在官方 ffmpeg 示例之后,或多或少):

我还尝试了许多不同的 SWS_ 标志,但都产生了相同的结果。

这可能是 sws_scale 中的错误还是我做错了什么?我正在使用最新版本的 ffmpeg 库。

0 投票
1 回答
4768 浏览

ffmpeg - 使用 ffmpeg 库提取文本字幕

我正在编写一个使用 ffmpeg 的 libav* 库的 C 程序,并使用Dranger 的教程,我可以正确解码音频和视频。目前,我正在尝试提取字幕。我实际上并不想按时解码它们并在视频上显示它们,而是实际上将字幕文本从容器中提取出来。

例如,在 cli 上,

会把屁股文件还给我。(出于某种原因, srts 只返回文本。)

我试过弄乱 AVSubtitle、avcodec_decode_subtitle2 等,但他们逐行返回字幕。我想要 srts 中的时间码、ass 中的标头信息等。我想要的是混合到容器中的整个字幕文本文件。

0 投票
2 回答
4161 浏览

android - 使用 FFMPEG 从视频中更快地提取缩略图/图像?

我正在使用此命令从视频中提取一系列图像,以将它们表示为视频的视觉时间范围。

ffmpeg -i inputfile.mp4 -r 1 -t 12 image-%d.jpeg

我的大部分视频都是 mp4 格式。我能够成功提取图像,但提取时间太长。

有什么办法可以减少图像提取的时间吗?

编辑我需要 60 秒才能从以 MP4 格式编码的 15 秒长视频中获取 8 个缩略图,我正在我的Galaxy Nexus(Android 手机)上执行此操作有什么方法可以提高操作速度,理想情况下我想要它小于~10secs

0 投票
2 回答
1830 浏览

libavcodec - sws_scale 的替代方案

我正在使用 libavcodec 使用 x264 对捕获的 Windows 屏幕进行编码。由于输入是 RGB,我将其转换为 YUV 以使其与 x264 兼容。我正在使用 sws_scale 函数。我的问题是这个功能是否有任何替代品,因为在我的情况下我不需要进行任何缩放。此外,如果有人可以阐明此功能的工作流程,那将很有用。

PS:我假设 x264 仅在 YUV 颜色空间中运行。如果这个假设不正确,请同样通知我。

提前致谢。

0 投票
4 回答
19347 浏览

ffmpeg - 如何获取 DVD 中的标题和章节信息?

我发现了很多关于使用 ffmpeg 创建 DVD 菜单的问题,但我没有找到任何关于以编程方式访问 DVD 结构信息的问题。当我使用 libav(或 FFmpeg)库时,我可以打开 DVD 映像(iso 文件)并访问视频、音频和字幕流。但我找不到任何 API。

我可以使用 VLC 播放器(以及 libvlc 库)播放视频并找到信息。但我需要以编程方式对音频和字幕流进行一些处理。我不想使用 SmartRipper 之类的工具拆分 VOB,然后才进行处理。

libav(ffmpeg) 是否包含任何用于处理 DVD 菜单的 API?如果不是,您能否推荐任何其他可用于以一帧(样本,AVPacket)精度获取有关标题(章节)开始和结束时间的信息的库?

我听说过 libdvdnav 库,但我不知道它是否适合我。我是 libav 和 DVD 格式内部的新手。

0 投票
1 回答
1136 浏览

x264 - 加速 x264 编码(使用 libavcodec 的 C++ 代码)

我正在尝试捕获 Windows 屏幕(连续屏幕截图)并将它们编码为 x264。为此,我正在使用 libavcodec 提供的 avcodec_encode_video2 函数。但是,这需要大量时间。编码单个帧的时间在 25 – 1800 毫秒之间波动。

我尝试了在屏幕上录制视频的 1080p 和 720p。

这些是我正在使用的设置。这是在具有 4 GB RAM 的 Windows 7、win32 版本构建上测试的。

bit_rate = 2000, width = 1920, height = 1080 qmin = 0, qmax = 0, max_b_frames = 0, frame_rate = 25, pixel_format = YUV 4:4:4。其余设置是默认设置,使用 avcodec_get_context_defaults3() 获取。

一组 250 帧中 20 帧(连续且随机选择)的样本数据(以毫秒为单位)。{ 121, 106, 289, 126, 211, 30, 181, 58, 213, 34, 245, 50, 56, 364, 247, 171, 254, 83, 82, 229 }

对于应用程序,它必须至少以 15 fps 的速度捕获。有人可以帮忙判断是否可以使用任何选项来提高帧速率。我需要无损编码,但我愿意增加一些文件大小。

提前致谢。

0 投票
1 回答
278 浏览

ffmpeg - libavcodec 的官方网站是什么?

我想libavcodec用于一个项目,问题是我不明白我应该在哪里获得官方版本,这个库太受欢迎了,我不知道官方网站是什么。

例如,有 2 个主要项目,如libavffmpeg正在使用它,但我找不到官方来源。

这个网站在哪里?