
音视频
文章平均质量分 83
ffmpeg /webrtc/opengl/srs..
江太翁
这个作者很懒,什么都没留下…
展开
-
速率控制模式 CBR、VBR...
最大的不同在低帧分值(审校者注:指以帧的粒度看 VMAF 分数,其最低单帧 VMAF 分),即瞬态质量问题的指标,其中 CBR 比 200% 受限 VBR 低了约 5.5 分。有趣的是,在 200% 受限 VBR 和 150% 受限 VBR 的低帧 VMAF 之间只有 1 分之差,150% 受限 VBR 和 110% 受限 VBR 之间有两分之差。顾名思义,当你使用 CBR(Constant Bitrate Encoding)编码时,意味着你对全部文件都使用了恒定的码率(无论视频文件中场景的复杂度如何)。转载 2023-11-01 15:12:22 · 286 阅读 · 0 评论 -
ffmpeg x264 x265 fdk-aac 编译记录
ffmpeg 裁剪定制编译过多次了 这里记录下。原创 2023-10-27 16:24:10 · 601 阅读 · 0 评论 -
ffmpeg configure 参数
源码的路径[默认:/home/nsc/workspace/android_code/ffmpeg]启用 AMR-NB 编解码通过 libopencore-amrnb[默认:关闭]启用 AMR-WB 编解码通过 libopencore-amrwb[默认:关闭]原文链接:https://blog.youkuaiyun.com/wangbuji/article/details/121818750。通过 librtmp 启用 RTMP[E]支持 [默认:关闭]通过 libtheora启用 Theora 编码[默认:关闭]转载 2023-10-27 15:19:54 · 159 阅读 · 0 评论 -
SRS Config 二 Stream Caster
Stream Converter侦听特殊的TCP/UDP端口,接受客户端连接和媒体流,并转成RTMP流,推送给SRS。复制Note: 有些流可能不止一个流,甚至有不同的传输通道。1.1 BuildSRS默认开启Stream Converter的支持,不需要特别的编译参数。但某些协议可能需要特别的编译参数,请参考下面具体协议的使用介绍。MPEG-TS over UDP: MPEG-TS裸流,基于UDP协议。FLV by HTTP POST: FLV流,基于HTTP协议。原创 2023-10-24 19:00:00 · 406 阅读 · 0 评论 -
傅里叶变换的意义和理解(通俗易懂)
从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。先举一个公式上并非很恰当,但意义上再贴切不过的例子:在你的理解中,一段音乐是什么呢?这是我们对音乐最普遍的理解,一个随着时间变化的震动。转载 2023-10-23 17:54:42 · 138 阅读 · 0 评论 -
linux ffmpeg推流 到 srs
ffmpeg录屏ffmpeg 已开启 x11grabffmpeg version 2.8.17-0ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609 configuration: --prefix=/usr --extra-version=0ubuntu0.1 --build-suffix=-ffm...原创 2021-08-26 12:15:37 · 751 阅读 · 0 评论 -
docker常用命令详解
Docker 是一个用于构建、发布和运行应用程序的开源平台,它通过容器化技术将应用程序及其依赖项打包成一个可移植、自包含的容器。docker unpause 取消暂停一个容器的所有进程。docker pause 暂停一个容器的所有进程。通过 Dockerfile 构建一个镜像。创建一个用户自定义的 Docker 网络。检查 Docker 数据卷的详细信息。删除一个或多个 Docker 数据卷。检查 Docker 网络的详细信息。创建一个 Docker 数据卷。列出所有 Docker 数据卷。转载 2023-10-17 13:19:24 · 91 阅读 · 0 评论 -
ffmpeg错误码
#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /* Interrupted system call */#define EIO原创 2023-10-12 09:40:44 · 653 阅读 · 0 评论 -
ffmpeg ts 关于av_seek_frame
define AVSEEK_FLAG_ANY ///<<<seek to any frame, even non-keyframes // 移动到任意帧的位置,不去找前面的关键帧,从而进入 ff_seek_frame_binary 方法,由于是实时流没有index_entry 调用ff_gen_search 生成seek pos gen_seek。真正确定seek位置代码函数 ff_index_search_timestamp flags不同 查询规则有所不同。代码流程比较清晰 主要。原创 2023-10-08 17:05:56 · 657 阅读 · 0 评论 -
FFmpeg的makefile逻辑分析
现在来找一下,把 .o 文件打包成 静态库的规则在哪里,猜测静态库跟动态库的规则是同一个文件的。3,生成 FFmpeg 8个 动态库的规则在哪里?现在我们已经找到了 在哪里生成动态库的了,就是 library.mak 文件 51 行的地方,我讲一下我怎么找到这个地方,我是直接搜 SHFLAGS 变量的,因为这是动态库的 flags。上面的 OBJ-YES 变量有 x264 的 .o 文件,x264 应该是以动态库或者静态库的方式引用的,这里为什么直接填 .o ,我也不太清楚,后面补充,暂时不管。转载 2023-09-07 14:17:25 · 110 阅读 · 0 评论 -
【视频直播技术干货】H.264编码下直播视频添加水印的优化
如下图所示,直播客户对于直播延迟和视频流质量要求不尽相同,各家采用的视频编码器不同或者编码器采用的参数不同,导致源流的gop结构不尽相同,从CDN厂商的角度,源流的gop结构是难以从程序的角度判断的,对各家客户做差异化处理也存在较大的困难,而统一用相同的编码参数做转码则破坏了源流的gop结构,使得转码之后的水印流在延时数据上发生改变,有可能达不到客户的要求。而经过转码后输入输出视频的同一帧可能使用不同的帧类型,源流的I帧可能变为P帧甚至B帧,原来的P/B帧可能被转码流用作I帧,从而损害视频流的整体质量。转载 2023-08-14 15:19:52 · 511 阅读 · 0 评论 -
FFmpeg 打包mediacodec 编码帧 MPEGTS
在Android平台上合成视频一般使用MediaCodec进行硬编码,使用MediaMuxer进行封装,但是因为MediaMuxer支持格式有限,一般会采用ffmpeg封装,比如监控一般使用mpeg2ts格式而非MP4,这是因为两者对帧时pts等信息封装差异导致应用场景不同。原创 2023-07-31 18:21:06 · 1262 阅读 · 0 评论 -
FFmpeg时间戳
例如,如果一个视频帧的dts是40,pts是160,其time_base是1/1000秒,那么可以计算出此视频帧的解码时刻是40毫秒(40/1000),显示时刻是160毫秒(160/1000)。在闭合式GOP中,每个GOP的第一个帧一定是I帧,且当前GOP的数据不会参考前后GOP的数据。根据注释中的建议,实际使用时,在视频解码过程中,我们不使用AVCodecContext.time_base,而用帧率倒数作时间基,在视频编码过程中,我们将AVCodecContext.time_base设置为帧率的倒数。原创 2023-07-20 14:49:08 · 1285 阅读 · 0 评论 -
V4l2-ctl
它托管在[ v4l-utils.git ]中,并打包在大多数发行版中。l-utils还包含其他一些实用程序和库,用于处理视频4 Linux(V4L)设备驱动程序和相关功能。这些工具可以单独使用,也可以与其他V4L2相关的库和应用程序一起使用,以实现更复杂的功能和操作。exposure_auto是v4l2-ctl命令中的一个参数,用于设置相机的曝光模式。查询相机的详细信息 v4l2-ctl -d /dev/video11。不是所有相机以下参数设置都支持,修改前先查询,在已知参数属性的基础上修改.原创 2023-07-14 18:23:18 · 5483 阅读 · 2 评论 -
GB28181
前言GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。1.背景介绍GB28181协议指的是国家标准GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。GB转载 2023-07-13 11:02:35 · 2609 阅读 · 0 评论 -
Webrtc添加滤镜
webrtc 视频帧处理 可以通过自定义capture 集成第三方滤镜sdk 也可以直接修改webrtc源码 修改opengl render部分 本文只涉及 显示部分 ,如果使能远端 修改VideoFrame 封装数据为滤镜后的framebuffer数据!!! capture render withe Texture Mode not yuv关键代码package org.webrtc.filter;import android.content.res.Resources;i...原创 2022-01-11 16:04:35 · 1961 阅读 · 9 评论 -
56 版本 webrtc sdp 转
https://blog.youkuaiyun.com/onlycoder_net/article/details/76702432v=0//sdp版本号,一直为0,rfc4566规定o=- 7017624586836067756 2 IN IP4 127.0.0.1// RFC 4566 o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>转载 2021-11-23 17:36:27 · 162 阅读 · 0 评论 -
srs 4.0 configure 参数 在线文档
tyearlin@ubuntu:~/srs/trunk$ ./configure --helpPresets: --x86-64, --x86-x64 For x86/x64 cpu, common pc and servers. Default: on --cross-build Enable cross-build for ARM, please set bellow Toolchain also. Default: off --osx ...原创 2021-11-19 17:05:26 · 2386 阅读 · 0 评论 -
rtmp handshake
rtmp handshakeRTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection); 第二步,建立一个网络流(NetStream)。 其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。RTMP连接都是以握手作为开始的。建立连接阶段用于建立客.原创 2021-11-19 11:39:47 · 354 阅读 · 0 评论 -
Owt-server Arm 交叉编译 之 webrtc 模块
配置交叉编译工具链原创 2021-08-18 15:04:35 · 569 阅读 · 0 评论