问题标签 [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.
ffmpeg - 在 FFmpeg 中按字节查找
我将感谢您对以下内容的建议。我正在开发一个基于 FFmpeg 的 libavformat 的视频转换器,我需要实现一个准确的搜索 API。首先,我开发了一个视频流索引器,它只保存每个数据包的演示时间戳(PTS)。然后我的编码器使用这个索引来寻找视频文件。例如,在此操作之前,我将文件重新混合到 mp4 容器。内部没有正确索引的视频需要 Remux,或者视频根本没有索引。我需要实现按字节搜索,当然还有以前构建的索引。我尝试了很多方法来实现这一点,但没有任何成功。也许你知道如何在 FFmpeg 中实现精确的字节查找?最好的祝福。
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().
android - ffmpeg - 强制使用的过滤器
我正在为 android 编译 ffmpeg。只是想知道配置中哪些过滤器是强制性的。如果有人知道请建议我。
android - ffmpeg - avcodec_decode_audio3 总是返回 0,在 android 上使用 aac 解码
我正在为android编写一个基于ffmpeg的音频解码器,我必须解码aac音频,但由于某种原因,它总是返回解码的0字节。
看起来我通过了一切权利。谁能告诉我在我的情况下出了什么问题。我从 ffplay.c 复制了代码。avcodec_decode_audio3 函数总是返回零的原因是什么?
这是来自 ffplay.c 的代码:
c# - C# 中的 FFmpeg 和 DirectSound/XAudio2
我一直试图让它工作一段时间,但有点卡住了。
我试图能够使用输出到 DirectX 和 DirectSound 或 XAudio2 的 libavcodec 在 C# 中播放视频。我已经设法让它播放视频,但我坚持让它输出声音。
我没有使用过 DirectSound 或 XAudio2 的经验,或者 libavcodec 的文档很少,这都无济于事。我设法获得了音频编解码器,但我一直试图解码它或通过 DirectSound/XAudio2 输出它。
如果有人能够指出我正确的方向,或者只是告诉我该怎么做,我将不胜感激。
c - 使用 libavcodec 的 mpegts 容器中的原始 H264 帧
对于以下问题,我将不胜感激:
我有一个带摄像头的小工具,可以生成 H264 压缩视频帧,这些帧被发送到我的应用程序。这些帧不在容器中,只是原始数据。
我想用ffmpeg和libav函数创建一个视频文件,以后可以使用。
如果我解码帧,然后对它们进行编码,一切正常,我得到一个有效的视频文件。(解码/编码步骤是常用的libav命令,这里没什么花哨的,我从万能的互联网上拿来的,它们坚如磐石)......但是,我在解码和编码上浪费了很多时间,所以我想跳过这一步,直接将帧放入输出流中。现在,问题来了。
这是我想出的用于生成编码的代码:
变量如下:
frameData
是来自相机的解码帧数据,它是在上一步中解码的,videoOutBuf
是用于保存数据的普通 uint8_t 缓冲区
我已经修改了应用程序,以便不对帧进行解码,而只是简单地传递数据,例如:
在哪里
frameData
是原始 H264 帧,currentFrameSize
是原始 H264 帧的大小,即。我从小工具获得的每一帧的字节数。
突然应用程序不再正常工作,制作的视频无法播放。这很明显,因为我没有为数据包设置正确的 PTS。我所做的是以下(我很绝望,你可以从这种方法中看到:))
其中timestamps
实际上是由上面的工作代码生成并写入文件的 PTS 列表(是的,您没看错,我记录了所有 PTS 的 10 分钟会话,并想使用它们)。
该应用程序仍然无法正常工作。
现在,我不知道该怎么做,所以这是一个问题:
我想使用 libav 函数创建一个“mpegts”视频流,在流中插入已经编码的视频帧并用它创建一个视频文件。我该怎么做?
谢谢,f。
ffmpeg - 如何检测ffmpeg中的帧间编解码器?
在 ffmpeg 中,有没有办法判断编解码器(AVCodec
或AVCodecContext
)是否支持帧间编码?
ffmpeg - 使用 libavcodec 时模拟 FFMPEG '-sameq' 标志所需的设置
目前正在尝试使用 libavcodec 将 MP4(MPEG4 和 H264)和 MPG (MPEG2) 视频文件转码为 .MP4、.MPG 和 .AVI 文件。以前使用 FFMpeg.exe 并使用“-sameq”标志完成此操作,以保留与输入文件相同/相似的质量输出文件。
现在使用 av_open_input_file、av_read_frame 和 avcodec_decode_video2 打开、读取和解码输入文件,然后分配一个 AVCodecContext 并使用 avcodec_encode_video 对数据进行编码。但是输出文件的视频质量很差。
这些是我正在使用的 AVCodecContext 设置?:-
有人知道模拟“-sameq”设置所需的额外设置或 AVCodecContext 中需要哪些额外设置来提高输出质量?
c - 告诉 libavcodec/ffmpeg 丢帧
我正在构建一个创建视频的应用程序。问题是,有时(嗯......大部分时间)帧获取过程不够快。
如果我迟到了,我目前正在做的是跳过当前帧采集,但是 FFMPEG/libavcodec 将我传递给它的每一帧都视为下一帧,所以如果我从 2 帧中删除 1 帧,则为 20 秒视频只会持续 10 个。一旦我添加声音,就会出现更多问题,因为声音处理速度更快......
我想告诉 FFMPEG:“最后一帧应该比最初预期的持续时间长两倍”,或者任何可以让我实时处理的东西。
我试图将帧堆叠在一个点上,但这最终会杀死我所有的内存(我还尝试在硬盘驱动器中“堆叠”我的帧,这很慢,正如我所料)
我想我将不得不手动使用 pts,但我所有的尝试都失败了,并且阅读其他一些使用 ffmpeg 的应用程序代码(例如 VLC)并没有太大帮助......所以任何建议都会很多赞赏!
提前非常感谢!