问题标签 [openh264]

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 投票
1 回答
120 浏览

c# - 用管道代替参数

我正在编写从套接字读取 h264 数据的代码,将其传递给 h264dec.exe(openh264 解码器),然后将 YUV 数据传递给 YUV-RGB 解码器。我的问题是 openh264dec 的工作方式类似于“h264dec video.h264 out.yuv”。

而且我真的不知道如何处理代码中的参数以将它们作为流服务。出于培训目的,我尝试过h264dec video.h264 \\.\pipe\h264input但它不起作用,代码如下:

过程是:

YUV 解码器将 Stream 对象的宽度和高度作为输入。程序挂起WaitForConnection()并且没有该功能,YUV解码器在从流中读取时抛出异常。

甚至有可能让它像这样工作吗?用管道代替参数?

0 投票
0 回答
180 浏览

github - ndk版本[]不兼容openh264

我安装了https://github.com/BelledonneCommunications/linphone-android,得到了 SDK、NDK 等,现在当我运行 $ make 时出现此错误:

有人可以帮我吗?(我使用 brew 安装了所有我需要的东西,我在 Mac OSX 上)

0 投票
0 回答
290 浏览

android - Openh264 抛出 UnsatisfiedLinkError

今天我们遇到了一个奇怪的崩溃。在第一次安装期间,应用程序下载并解压缩 openh264 到应用程序的内部目录,发生在 rxAndroid 的 Schedulers.io() 线程上。这是这种类型的第一次崩溃(> 5k 安装),我发现这个链接(顺便说一句非常有趣的博客)带有匹配的错误消息。我不确定是否真的有人试图替换 openH264 库,或者是否有人试图在 x86 设备上安装 apk 文件。我仍在使用 1.4 的 openH264 并阅读了 1.5 的发行说明。没有任何安全修复的提示。

有关该设备的更多详细信息:

安卓:4.3

制造商:三星

型号:GT-I9300

最后,这是崩溃日志:

我很确定,崩溃发生在这里:

这些是行:

在下载和解压缩完成时调用。

当 lib 正在下载并且网络连接丢失时,会发生错误吗?

欢迎任何帮助或提示,在此先感谢!:)

0 投票
2 回答
2538 浏览

c++ - openh264 - bEnableFrameSkip=0,比特率无法控制

有很多关于opencv + H.264的问题,但没有一个给出详细的解释。

我在visual studio中使用openh264(openh264-1.4.0-win32msvc.dll)和opencv 3.1(使用启用ffmpeg的cmake自定义构建),我想用H.264压缩将来自网络摄像头的视频保存为mp4格式

VideoWriter write = VideoWriter("D:/movie.mp4", CV_FOURCC('H', '2', '6', '4'), 10.0, cv::Size(192, 144), true);

在使用 openh264 之前,在控制台窗口中我看到一条警告消息“无法加载 openh264 库:openh264-1.4.0-win32msvc.dll 请检查您的环境和/或从此处下载: https ://github.com/cisco/ openh264/releases ”(也没有保存视频)

所以我下载了dll并保存在我的程序文件(exe)的文件夹中,当我运行程序时,我看到不同的错误“[OpenH264] this = 0x0DE312C0,警告:bEnabledFrameSkip = 0,比特率无法控制对于 RC_QUALITY_MODE 和 RC_TIMESTAMP_MODE 不启用跳帧”(现在视频已保存,但大小非常高!比特率约为 1200 Kbps)

对我来说,使用 h264 的唯一目的是减小文件大小。我想我可能必须自己构建 openh264 并进行一些更改才能消除此错误,有人可以指导我如何操作吗?或者告诉我是否有办法通过代码以某种方式降低比特率?

PS:我尝试给出 -1 而不是 CV_FOURCC(),系统中的“已安装编解码器”窗口出现了,即使我从这里安装了各种编解码器包和 h264,我也找不到 h264 或 x264 或 h264vfw

感谢和问候

0 投票
0 回答
644 浏览

c++ - OpenH264 性能与编码数据大小 (SEncParamExt)

我正在尝试使用 OpenH264 C++ 库为 960x540 视频每秒获得大约 24 帧。我为 SEncParamExt 尝试了不同的参数,但我无法获得更好的编解码器性能,而不是更小的编码数据。我在我的电脑上得到大约 16-20 fps。

这是我当前的配置。

我为param.iComplexityModeparam.iRCMode尝试了不同的值,我得到了必要的帧速率,但图像质量非常差。我也玩过量化级别,但没有帮助。

我也使用VP8 编解码器。它可以轻松地为同一视频每秒生成 24 帧。编码的数据大小更大(大约每秒 500Kb 与每秒 200Kb 在 OpenH264 的情况下)但对我来说非常方便。

我究竟做错了什么?我应该怎么做才能提高 OpenH264 性能?

0 投票
1 回答
1027 浏览

android - 无法为 android 构建 Libyuv 库 (PJSIP)

我正在开发一个聊天 android 应用程序。我也想使用通话功能。我已经成功构建了用于 SIP 呼叫 VoIP 的 pjsua2.so 库,但我未能构建用于视频呼叫的 Libyuv.so 库

我按照 thows 中的说明链接 libyuv building libyuv 1776

在第二个链接的步骤 2 中运行 ndk-build 命令后,我没有这个 lib libyuv。所以我也没有 [libyuv_dir]/libs/armeabi

同样对于openH264,在运行此命令后,/configure-android --with-openh264=/home/ubuntu/openh264-1.0.0/android 我得到了:

使用 OpenH264 前缀... /home/ubuntu/PJSIPTOOLS/openh264-1.0.0/openlib/ 检查 OpenH264 可用性... 否

谁能帮帮我(抱歉英语不好)

0 投票
0 回答
459 浏览

android - 适用于 Android 的 OpenH264 示例

我正在寻找一个关于如何录制视频并将其编码为 H264 视频的好例子。

查看网络,我发现的所有信息都与编译开源有关,而不是如何从 Android 相机中使用。

0 投票
1 回答
1044 浏览

encoding - Exp-Golomb 码字的构造和解析方法

我正在使用 OpenH264 编解码器。OpenH264 正在使用 Exp-Golomb 编码来获取标头相关信息。我研究了几个网站并收集了一些关于 Exp-Golomb 编码的信息。OpenH264 使用 4 种 Exp-Golomb 编码方法。他们是:

  • Ue [当值仅是非负数时]
  • Te [当值只有 1 或 0 时]
  • Se [当值既是负数又是正数时]
  • [当值为值定义标准代码映射时]

我已经学会了如何通过 Method Ue构造或解析。

Exp-Golomb(Ue) = [M-Zeros][1][INFO] 的语法格式。

构造:假设我们有一个 Code_Num = 226。
现在,
M = floor(log2(Code_Num)) = floor(log2(226)) = 7
INFO = Code_Num + 1 - pow(2,M) = 226 + 1 - 128 = 99 = (1100011) in Binary
So,
CodeWord = 0000000 1 1100011 [M-zeros, 1 ignoring bit, INFO]

解析: 假设我们有一个 CodeWord = 000000011100011
Code_Num = pow(2,M) + INFO - 1 = 128 + 99 - 1 = 226

现在我可以计算 Exp-Golomb(Ue)。但我想学习所有与 Se、Te 和 Me 相关的理论。但我找不到其他方法的任何资源。请帮我。

0 投票
1 回答
3187 浏览

c++ - 如何加速 OpenH264 的解码器

故事

我正在开发一个流畅的 60 FPS 1080p(全高清)视频传输应用程序,它以 x264 编码,通过 LAN 将编码数据发送到接收设备,然后使用 OpenH264 的解码器对其进行解码。我设法让它工作,它工作正常且稳定,但我发现它非常慢(大约 20 FPS 而不是所需的 60 FPS)。

问题

我进行了广泛的测试,发现问题出在 OpenH264 解码器上。

解码器使用了我的 i5-2500 @ 3.9Ghz 的完整内核(总共 25% 的 CPU 使用率),这太高了。尽管解码器是单线程的,但我在 Media Player Classic 上测试了原始数据,其播放(60 FPS)导致 CPU 使用率仅为 0.3%。(将渲染引擎切换到“旧视频渲染”时,CPU 使用率增加到 12.8-14.4%——见评论)

所以我的问题是:我可以做哪些优化来加快解码过程,我做错了什么?我无法想象 OpenH264 就是这么慢。

额外信息

  • 编码器可以使用大约 20% 的 CPU 轻松推出 60 FPS 1080p。
  • 连接是有线局域网,可以推送> 10MB / s,所以没有问题。
  • 发送方和接收方 PC 都有 8GB RAM。

代码

以下是与解码器相关的所有 C++ 代码:

0 投票
0 回答
156 浏览

openh264 - 如何选择openh264的错误隐藏方式?

这些错误隐藏枚举对 openh264 意味着什么?有他们的文件吗?