惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
F
Full Disclosure
Cloudbric
Cloudbric
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
N
News and Events Feed by Topic
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
B
Blog
GbyAI
GbyAI
C
Check Point Blog
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Recorded Future
Recorded Future
The Last Watchdog
The Last Watchdog
N
News and Events Feed by Topic
T
The Blog of Author Tim Ferriss
O
OpenAI News
V
V2EX
人人都是产品经理
人人都是产品经理
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
WordPress大学
WordPress大学
www.infosecurity-magazine.com
www.infosecurity-magazine.com
S
Security @ Cisco Blogs
C
Cisco Blogs
Security Latest
Security Latest
S
Security Affairs
V
Visual Studio Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
博客园_首页
U
Unit 42
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
N
Netflix TechBlog - Medium
L
LINUX DO - 热门话题
H
Hacker News: Front Page

音视频开发进阶

音视频教程-第三节 音视频教程-第二节 真的,AI 可能就是新时代的信息差 充值 Cursor 之后,工作有了哪些变化?🤔 个人'蒸馏'大模型能做哪些有意思的事情 DeepSeek 大模型在 Mac 上的部署和运行 音视频教程-第一节 【WebRTC 专栏】-- Android 开发集成 WebRTC 库的几种方式 【WebRTC 专栏】-- 在 Mac M1 等系列芯片编译和开发 WebRTC-Android 库 Meta Llama3 大模型在 Mac 上的部署和运行 iOS VideoToolBox 解码 HEVC Open-GOP 视频的问题排查 Flutter 状态管理之 InheritedWidget 使用和分析 音视频开发系统入门大致路线 UE 4.27 添加自定义 ShadingModel 用 UE4 虚幻引擎做个捏脸小功能~~ UE4 材质练习 之 凹凸贴图偏移的使用 UE4 材质练习系列基础 OpenGL上下文创建以及共享机制 007 | 播放器系列专栏-解析 MP4 文件读取信息 006 | 播放器系列专栏-在 Mac 上查看 MP4 格式信息 干货 | 快速抽取缩略图是怎么练成的? 关于直播、WebRTC、FFmpeg 的那些事 005 | 播放器系列专栏-在 Windows 上查看 MP4 格式信息 将音视频中的花屏、绿屏、黑屏问题一网打尽 关于音视频里面的解码帧率和渲染帧率 004 | 播放器系列专栏-认识MP4视频(下) 003 | 播放器系列专栏-认识MP4视频(上) 入门或者转行音视频,应该要怎么做? H264视频文件如何缩放分辨率 002 | 播放器系列专栏-FFmpeg依赖库的配置 001 | 播放器系列专栏-关于播放器项目的一个小实践 Seek策略以及在有B帧情况下的处理 目前流媒体开发工程师工作内容主要是什么? 一个音视频领域专业问答的小圈子 干货收藏 || Vulkan Game Engine 视频教程 音视频春节假期内卷指南(实操) Vulkan 在 FFmpeg 中的支持 Windows 下 FFmpeg 和 LibX264 的编译和配置 Metal 开发 | 使用 C++ 进行接口调用 音视频开发工作经验分享 || 视频版 FFmpeg 调用 MediaCodec 硬解码到 Surface 上 代码吸猫 | 用 OpenGL 图像渲染的养猫计划 百倍变速--解码到底能不能丢 非参考帧 ?FFmpeg 有话说!!! 老生常谈-FFmpeg 的编译问题轻松搞定 FFmpeg 调用 Android MediaCodec 进行硬解码(附源码) 【WebRTC 专栏】--创建相机预览 Unity Shader 光照基础之 Half Lambert 光照模型 Unity Shader 光照基础之Lambert光照模型 Unity Shader 光照基础内容 Unity Shader 显示一张图片纹理 UnityShader 的基本概念 Unity 物体的基本操作 C++ 模板系列小结07-尾置返回类型 C++ 模板系列小结06-可变参数模板特性 C++ 中的多线程的使用和线程池建设 C++ 模板系列小结05-模板类型作为模板参数 C++ 模板系列小结04-类模板中的成员模板 C++ 模板系列小结03-在模板中指定变量类型 C++ 模板系列小结02-非类型模板参数 C++ 模板系列小结01-函数模板和类模板 从零打造渲染引擎系列01-什么是渲染引擎 iOS开发 - 在 Swift 中去调用 C/C++ 代码 2021 技术新番 - 从零打造渲染引擎系列 iOS 音视频开发的一些基础准备工作 音视频交流群又来啦~~~ 【WebRTC 专栏】WebRTC & Android 开发学习环境搭建~ 【喜大普奔】域名终于备案通过啦 Shader 优化 | OpenGL 绘制网格效果 【音视频连载-011】第二季 FFmpeg 一层一层获取文件信息 KodeLife | Shader 实时编辑预览的强大工具使用实践 推荐几个堪称教科书级别的 Android 音视频入门项目 【音视频连载-010】第二季 FFmpeg 日志打印 【音视频连载-008】基础学习篇-SDL 播放 PCM 音频文件(下) 【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上) 【音视频连载-006】基础学习篇-SDL 播放 YUV 视频文件 【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示 【音视频连载-004】基础学习篇-SDL 加载图片并显示 【音视频连载-003】基础学习篇-SDL 消息循环和事件响应 【音视频连载-002】基础学习篇-SDL 创建窗口并显示颜色 【音视频连载-001】基础学习篇- SDL 介绍以及工程配置 LearnOpenGL 源码在 MAC 上的编译与调试 2019 年终总结与回顾 Android NDK 开发的免费技术视频来啦~~ OpenGL 实现视频编辑中的转场效果 OpenGL 实践之贝塞尔曲线绘制 图像库 libjpeg-turbo 编译与实践 图像库 libpng 编译与实践 rust 开发编译 Android 动态库实践 Android NDK 开发 —— 从 Assets 文件夹加载图片并上传纹理 简单易用的图像解码库介绍 —— stb_image 博客图床迁移记 进击的 Vulkan 移动开发之 SwapChain 进击的 Vulkan 移动开发之 Command Buffer 进击的 Vulkan 移动开发之 Instance & Device & Queue 进击的 Vulkan 移动开发(一)之今生前世 Java 显式锁 Lock 与条件队列 C++ 标准容器库小结 MediaCodec 硬编码之相机内容编码成 H264 文件 一文读懂 YUV 的采样与格式 《OpenGL ES 3.x 游戏开发》碰撞检测之 AABB 包围盒
用 ChatGPT 回答技术问题怎么样 ?
音视频开发进阶 · 2023-05-24 · via 音视频开发进阶

一个专注音视频领域的小圈子

ChatGPT 技术最近有多火就不用再介绍了吧,连超级大佬都说了 ChatGPT 这是几百年不遇的、类似发明电的工业革命一样的机遇。 这种机遇当然不能错过,使用得当那就像玄幻小说里的男主角开了挂一样,用来做快速查询、资料搜集、辅助学习相当不错,前提是用对了提示词关键字,难怪吴恩达都开了一门课程讲如何构造 Prompt 。 接下来就由 ChatGPT 提供一下技术干货,我问了几个关键字,这是它的解答,各位看官评判一下回答的可还行?

如何降低 WebRTC 的延迟 ?

ChatGPT 回答:

WebRTC 是一种实时通信技术,用于在浏览器之间进行低延迟的音视频通信。要降低 WebRTC 的延迟,可以尝试以下方法:

选择合适的编解码器:选择低复杂度、低延迟的编解码器,如 VP8 或 H.264,可以降低编解码过程中的延迟。

优化网络连接:确保网络连接稳定且带宽充足。可以使用 WebRTC 的统计 API 来监控网络状况,根据实际情况调整传输速率、分辨率等参数。

使用 TURN 服务器:在某些网络环境下,直接的 P2P 连接可能无法建立或者延迟较高。使用 TURN 服务器可以帮助绕过防火墙,提高连接成功率和降低延迟。

降低分辨率和帧率:降低视频分辨率和帧率可以减少数据量,从而降低延迟。但请注意,这可能会降低视频质量。

启用 Jitter Buffer:Jitter Buffer 可以缓存接收到的数据包,以便在固定的时间间隔内播放,从而减少延迟波动。

使用前向纠错(FEC)和自动重传(ARQ):FEC 可以在不增加延迟的情况下纠正丢失的数据包,而 ARQ 可以在增加一定延迟的情况下请求重传丢失的数据包。根据实际需求选择合适的策略。

优化应用程序性能:确保浏览器和操作系统的性能足够高,以便快速处理音视频数据。可以考虑使用 Web Workers 或其他并行处理技术来提高性能。

选择合适的传输协议:WebRTC 支持多种传输协议,如 UDP、TCP 和 SCTP。选择合适的传输协议可以降低延迟。通常情况下,UDP 是首选,因为它提供了最低的延迟。

实时调整传输参数:根据网络状况和设备性能实时调整传输参数,如速率、分辨率等,以保持低延迟和高质量的通信。

使用最新的 WebRTC 技术:随着 WebRTC 技术的发展,新的优化方法和功能不断出现。保持关注并使用最新的技术可以帮助降低延迟。

Android 如何使用 OES 纹理 ?

OES(OpenGL ES)纹理是一种特殊类型的纹理,用于在 Android 平台上高效地处理外部图像,例如摄像头预览帧或视频解码帧。使用 OES 纹理可以避免不必要的数据拷贝和格式转换,从而提高性能。以下是在 Android 上使用 OES 纹理的基本步骤:

  1. 导入所需的库:
import android.graphics.SurfaceTexture;
import android.opengl.GLES11Ext;
import android.opengl.GLES20;
  1. 创建 OES 纹理:
private int createOESTexture() {
    int[] textures = new int[1];
    GLES20.glGenTextures(1, textures, 0);
    int textureId = textures[0];
    GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textureId);
    GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
    GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
    GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
    GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
    return textureId;
}
  1. 创建 SurfaceTexture 对象:
int oesTextureId = createOESTexture();
SurfaceTexture surfaceTexture = new SurfaceTexture(oesTextureId);
  1. 将 SurfaceTexture 与摄像头或视频解码器关联:

对于摄像头:

Camera camera = Camera.open();
camera.setPreviewTexture(surfaceTexture);
camera.startPreview();

对于视频解码器:

MediaCodec decoder = MediaCodec.createDecoderByType(MIME_TYPE);
decoder.configure(format, null, null, 0);
decoder.setSurface(new Surface(surfaceTexture));
decoder.start();
  1. 在 OpenGL ES 着色器中使用 OES 纹理:

顶点着色器(vertex shader):

attribute vec4 aPosition;
attribute vec4 aTexCoord;
varying vec2 vTexCoord;
void main() {
    gl_Position = aPosition;
    vTexCoord = aTexCoord.xy;
}

片段着色器(fragment shader):

#extension GL_OES_EGL_image_external : require
precision mediump float;
uniform samplerExternalOES sTexture;
varying vec2 vTexCoord;
void main() {
    gl_FragColor = texture2D(sTexture, vTexCoord);
}
  1. 更新 SurfaceTexture 中的图像:

在渲染循环中,使用 updateTexImage() 方法更新 SurfaceTexture 中的图像:

surfaceTexture.updateTexImage();
  1. 绘制 OES 纹理: 使用 GLES20.glDrawArrays() 或 GLES20.glDrawElements() 方法绘制 OES 纹理。

通过以上步骤,您可以在 Android 上使用 OES 纹理处理摄像头预览帧或视频解码帧。请注意,这里的代码仅作为示例,您可能需要根据实际需求进行调整。

3D 场景如何渲染半透明物体?

ChatGPT 回答:

在3D场景中,渲染半透明物体的方法与2D场景类似,需要正确设置混合(Blending)参数。混合是指将不同颜色的像素按照一定的比例进行混合,从而产生新的颜色。在渲染半透明物体时,需要将物体的颜色和不透明度进行混合,从而产生半透明的效果。

在3D场景中,需要使用以下函数设置混合参数:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

该代码片段将混合功能启用,并将混合函数设置为GL_SRC_ALPHA/GL_ONE_MINUS_SRC_ALPHA混合函数。具体的混合参数设置可以根据实际情况进行调整,以满足不同的渲染需求。

与2D场景类似,渲染半透明物体时还需要按照从后往前的顺序进行渲染,以保证混合的正确性。此外,在渲染半透明物体时还需要考虑深度测试(Depth Testing)的影响。深度测试是指在渲染3D场景时,根据物体的深度(Z轴坐标)进行遮挡和剔除,以避免远处的物体遮挡近处的物体。在渲染半透明物体时,深度测试会导致物体的混合效果不正确,因为深度测试会遮挡掉部分半透明物体,从而影响混合的结果。

为了解决这个问题,需要关闭深度测试(glDisable(GL_DEPTH_TEST)),并按照从后往前的顺序进行渲染。这样可以保证混合的正确性,同时避免深度测试对渲染结果的影响。

在渲染半透明物体时,还需要注意以下几点:

  1. 尽量减少半透明物体的数量,以避免过多的混合计算影响性能。

  2. 根据物体的不透明度设置不同的混合参数,以提高渲染效率和视觉效果。

  3. 在混合计算时,可以使用预乘(Pre-multiplied)颜色值,以避免计算量的增加和混合效果不正确的问题。

  4. 在使用透明纹理(Transparent Texture)时,需要将纹理的Alpha通道与物体的不透明度进行混合计算,以产生正确的半透明效果。

  5. 在使用多重采样(Multisampling)技术时,需要正确设置混合参数和渲染顺序,以避免混合计算错误。

总之,在渲染半透明物体时,需要根据实际情况进行混合参数和渲染顺序的设置,以保证渲染效果和性能的平衡。

还要问吗?

本来还要继续问下去的,想想还是算了吧,越问越觉得自己离失业也不远了,要是哪天 AI 能背锅了,替代程序员就指日可待~~~

原创文章,转载请注明来源:    用 ChatGPT 回答技术问题怎么样 ?