问题标签 [libx264]
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++ - 使用 x264 将 OpenGL 输出转换为 H264
我想将 OpenGL 程序的输出转换为 h264 并流式传输输出。我在某处收集了大部分代码并得到了一个输出文件,但我不知道如何处理它,或者它是否有效。目前,输出只是保存在 file.h264 中。
编辑:“全局”变量
我的初始化函数:
这进入 Render 函数,每秒执行大约 30 次:
我从http://svn.gnumonks.org/trunk/21c3-video/cutting_tagging/tools/mpeg4ip-1.2/server/util/rgb2yuv/rgb2yuv.c获得了 GRB2YUV 功能
输出看起来像
在 Linux 文件 file.h264 上返回数据。
ffmpeg - 使用 ffmpeg 将 webm 转换为 mp4
当我尝试将 webm 文件转换为 mp4 时,输出非常不稳定,看起来好像 ffmpeg 丢弃了许多帧
我使用以下命令进行转换
他们都有同样的问题。当我使用 ffprobe 时,它似乎或多或少地正确显示了框架。
更新:
c++ - x264_encoder_encode 的流输出
如何通过 UDP 流式传输 x264_encoder_encode 的输出?
这是我的 Init_x264 函数:
现在,我没有将 x264_encoder_encode 的输出保存到磁盘(使用 fwrite),而是尝试通过 UDP 将其发送到我的目的地。我尝试用 avplay 播放它,但它失败了:
使用 vlc 我收到了不同的错误消息,主要是关于缺少标题。
video-processing - mencoder 和 libx264 的输出有什么区别?
我想知道这两个编码器(mencoder 和 libx264)的视频输出之间的区别。我猜他们不是,因为编解码器的视频信息有不同的名称。提前致谢。
libx264 - 将 x264_encoder_encode 输出写入文件并播放
我需要使用 x264 库对视频流进行编码并将输出写入文件。这是我用于编码的代码。
在此之后,我尝试使用 ffPlay.exe 打开 h264Output 文件,但它给出了以下错误:处理输入时发现无效数据。
有人可以帮助我我做错了什么吗?我看了下面的帖子,但它对我没有帮助。将 x264_encoder_encode 输出 nals 写入 h264 文件
h.264 - H.264 和 x.264 有什么区别?
我是视频压缩的新手;但我看到许多术语一遍又一遍地重复。我想知道 x.264 和 libx264 和 H.264 有什么区别?
c++ - Live555:基于“testOnDemandRTSPServer”的X264 Stream直播源
我正在尝试创建一个流式传输我的程序的 OpenGL 输出的 rtsp 服务器。我看了一下How to write a Live555 FramedSource to allow me to stream H.264 live,但我需要流是单播的。所以我看了一下 testOnDemandRTSPServer。使用相同的代码失败。据我了解,我需要提供存储 h264 帧的内存,以便 OnDemandServer 可以按需读取它们。
H264VideoStreamServerMediaSubsession.cpp
FramedSource.cpp
RTSP-Server Therad 的相关部分
一旦连接存在,渲染循环就会调用
c++ - libavcodec/libx264 不产生 B 帧
我正在用 C++ 编写一个应用程序,它使用 libavcodec 和 libx264 来编码视频。然而,编码数据最终比我预期的要大得多。我分析了结果,发现我的编码从来没有产生 B 帧,只有 I 和 P 帧。
我基于 ffmpeg 源代码和示例创建了一个独立实用程序来测试我的编码器设置。它读入 H.264 文件,重新编码解码帧,并将结果输出到使用 ITU H.264 Annex B 格式的文件。我还使用 ffmpeg 执行相同的操作,以便与已知的良好实现进行比较。我的实用程序从不输出 B 帧,而 ffmpeg 会。
从那以后,我试图弄清楚我的代码没有做什么 ffmpeg 。我首先尝试手动指定与 B 帧相关的编码器设置。这没有效果。
然后我尝试在 gdb 下运行 ffmpeg 和我的实用程序,并在打开编码器并手动设置任何看起来不同的字段之前比较 AVStream、AVCodecContext 和 X264Context 的内容。即使使用相同的设置,我仍然只生成 I 帧和 P 帧。
最后,我认为问题可能出在我的时间戳处理上。我重新设计了我的测试实用程序来模拟 ffmpeg 使用的管道,并像 ffmpeg 一样输出时间戳调试输出。即使我的时间戳与 ffmpeg 相同,我仍然没有得到 B 帧。
在这一点上,我不知道还能尝试什么。当我运行 ffmpeg 时,我使用下面的命令行运行它。请注意,除了“超快”预设之外,我几乎都使用默认值。
下面列出了配置编码器的代码。它也指定了“超快”预设。
我的测试实用程序产生以下调试输出,您可以在其中看到没有产生 B 帧:
另一方面,ffmpeg 产生以下几乎相同但包含 B 帧的输出:
我确定我错过了一些简单的东西,但我无法终生看到它是什么。任何帮助将不胜感激。
libvlc - 以低帧速率使用 vlc 和 x264 流式传输时发出警告
我正在使用 libvlc 和 libx264 从 C++ 程序流式传输图像。它使用 get 和 release 回调提供 libvlc 未压缩的图像。在更高的帧率(超过 12 fps)下一切似乎都可以正常工作,但是当我尝试更慢的帧率(从 1 到 10)时,我收到以下警告:
超过 4 fps,我能够获得流(例如使用 vlc GUI),但低于 4 fps,我什么也得不到,或者有时是冻结图像。libvlc 参数如下:
任何提示将不胜感激。