媒体
文章平均质量分 69
StoneLiu999
音视频开发
展开
-
ffmpeg
除了内置的过滤器,libavfilter 还提供了接口供开发者自定义过滤器。开发者可以按照自己的需求编写自定义过滤器,实现特定的音视频处理算法。这样可以满足一些特殊需求,并将自定义过滤器与内置过滤器一同组成过滤器链进行处理。原创 2023-08-21 10:43:25 · 1019 阅读 · 0 评论 -
ffmpeg命令行使用
要什么要使用命令行呢?ffmpeg提供的功能几乎都能通过命令行使用,ffmpeg提供了丰富的选项可以对每一个环节进行配置。在写代码之前先用命令行参数验证可行性如何知道具体的选项还有哪些可选的配置呢?通过ffmpeg -h full 2>/dev/null > ffmpeg.txt导出所有选项的详细说明,可以在里面找到每个选项的详细说明,也可以直接阅读官方文档 ffmpeg-all想要知道ffmpeg的常规用法可以通过命令man ffmpeg或者阅读官方文档 ffmpeg关于日期格式、.原创 2021-10-25 18:43:19 · 1895 阅读 · 0 评论 -
ffmpeg自定义IO
所谓的自定义IO就是实现复用结构体AVFormatContext的pb字段,这个字段的结果类型是AVIOContext,可以通过avio_alloc_context函数构造一个此结构体如果是要读文件需要实现函数指针read_packet和seek,如果是要写文件需要实现函数指针write_packet和seekbuffer和buffer_size必须是有效的,如果是写文件,在写之前数据存储在此buffer中。如果是读文件,会预先读取到此buffer中。所以此buffer的大小应当大于我们一次性读写的大.原创 2021-09-16 15:40:05 · 623 阅读 · 0 评论 -
ffmpeg hls动态切换分辨率
HLS支持多分辨率,在M3U8中会写明支持的分辨率,如下(随便找的一个例子)#EXTM3U#EXT-X-STREAM-INF:BANDWIDTH=375000,RESOLUTION=640x360360_out.m3u8#EXT-X-STREAM-INF:BANDWIDTH=750000,RESOLUTION=854x480480_out.m3u8#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720720_out.m3u8#EXT.原创 2021-09-15 17:32:03 · 2134 阅读 · 2 评论 -
GLFW简介
文章目录BuildGetting startedExamplesGLFW 是配合 OpenGL 使用的轻量级工具程序库,缩写自 Graphics Library Framework(图形库框架)。GLFW 的主要功能是创建并管理窗口和 OpenGL 上下文,同时还提供了处理手柄、键盘、鼠标输入的功能。有类似功能的库还有GLUT和SDL。Build下载$ git clone https://github.com/glfw/glfw.git编译 && 安装$ cd glfw原创 2021-04-14 10:04:18 · 12615 阅读 · 0 评论 -
GLSL ES Shader
文章目录ShadingVertex ProcessorFragment Processor变量和类型基础类型数据结构数组限定词存储限定词精度限定词精度的含义不同精度的范围默认精度运算符和表达式运算法强转Vector和Matrix构造Vector构造Matrix构造Vector ComponentsVector and Matrix运算内置函数角度和三角函数指数函数通用函数几何函数矩阵函数数组关系函数纹理查找函数参考如下GLSL_ES_Specification_1.00GLSLangSpec.1.20原创 2021-04-14 09:55:52 · 355 阅读 · 0 评论 -
H.264 NALU分隔Annex B和avcC
分隔格式H.264常用的分隔方式有Annex B和avcCAnnex B这种分隔符通常用于视频会议还有文件存储例如TS等用VLC打开avcC格式的视频文件,编码信息中显示H264 - MPEG-4 AVC(part 10)(h264)Annex B的格式如下,start code有可能是{0 0 0 1}或者{0 0 1},{0 0 0 1}通常用于第一个NALU、SPS和PPS,其他地方使用{0 0 1}以减少内存占用([start code] NALU) | ( [start code] N原创 2021-03-23 18:50:56 · 2883 阅读 · 0 评论 -
rtmpdump for WebRTC
文章目录BUILD.gnrtmpdump使用BoringSSLBoringSSL修改BUILD.gn下载$ git clone git://git.ffmpeg.org/rtmpdump为rtmpdump添加GN编译BUILD.gn#----------------------------------------------------# Author: stoneliu@b...原创 2020-05-08 15:13:19 · 364 阅读 · 0 评论 -
obs mac平台编译
编译Install-Instructions#macos$ git clone --recursive https://github.com/obsproject/obs-studio.git$ brew install qt5$ brew tap homebrew-ffmpeg/ffmpeg$ brew install homebrew-ffmpeg/ffmpeg/ffmpeg --w...原创 2020-05-07 11:11:01 · 983 阅读 · 0 评论 -
STUN协议解析
文章目录Message HeaderMessage AttributesMAPPED-ADDRESSRESPONSE_ADDRESSCHANGE-REQUESTERROR-CODERESPONSE-ORIGINOTHER-ADDRESSRFC3478 VS RFC5780RFC3478 NAT类型定义完全圆锥形NAT(Full cone NAT)受限圆锥形NAT(Address-Restricte...原创 2020-04-17 17:22:56 · 6497 阅读 · 4 评论 -
zbar使用
文章目录编译使用其他功能zbar一个开源的C语言实现的条形码和二维码识别库,可以用在任何平台。编译下面给出gn的写法,其他的编译工具,例如ndk和cmake,拿去参考改改就好了。这里还包括了libiconv的编译。# zbar project: https://github.com/ZBar/ZBar# libiconv project: https://ftp.gnu.org/pub/...原创 2020-02-24 18:33:08 · 3273 阅读 · 0 评论 -
H.264和HEVC如何正确的丢帧
文章目录H.264HEVC播放器内部逻辑肯定是存在丢帧的逻辑的,只有丢掉不被依赖的帧才不会导致花屏,RFC中有说明。H.264具体可以参考rfc3984#section-1.3,也就是nal_ref_idc的值为0时,此帧可以被丢弃。NRI: 2 bits nal_ref_idc. A value of 00 indicates that the content of the...原创 2019-11-05 11:29:26 · 1660 阅读 · 0 评论 -
FFmpeg HLS精准拖动(hls_read_seek)
文章目录hls_read_seekhls_read_packet精准seekhls_read_seek它支持的flag只有AVSEEK_FLAG_BACKWARD和AVSEEK_FLAG_ANY它的工作就是根据当前的时间戳重新选择一个适合的ts文件(URL),主要目的就是设置这两个参数cur_seq_no和seek_timestamp当下次调用hls_read_packet的时候就会调用...原创 2019-10-30 12:03:37 · 2178 阅读 · 4 评论 -
VTCompressionSessionEncodeFrame error code -12902
这个错误原因是Level不匹配导致的,选择一个匹配的Level或者使用AutoLevel即可(例如kVTProfileLevel_H264_Baseline_AutoLevel、kVTProfileLevel_H264_Main_AutoLevel)原创 2019-07-30 15:41:46 · 1941 阅读 · 0 评论 -
播放器切换后台VideoToolbox的问题
问题切换到后台以后VTDecompressionSessionRef都会变得不可用,从后台切换到前台需要重建Session重建Session是需要时间的,这个时间大概是0.5~2s左右,并不是一个固定的值重建后的VTDecompressionSessionRef并不能从之前位置继续解码,只有从关键帧位置开始解码才是正常的解码解决方案| i1 | p1 | p2 | p3 | p4 |...原创 2019-05-23 11:30:44 · 1036 阅读 · 0 评论 -
图片Scale(YUV/RGB)
文章目录Why ScaleScale方案libyuv的实现前几天被问到一个问题,相机直接采集480p的图片和采集720p的图片Scale为480p的图片谁更清晰一些。我当时的回答是直接采集出来的480p图片清晰一些,因为相机采集到的yuv格式本身就是有损的(贝尔格式转换为YUV格式),720P转480P也是有损的。很明显这并不是对方需要的答案。相机采集480P的图片和采集720P的图片FOV也不...原创 2018-11-12 18:36:13 · 4047 阅读 · 0 评论 -
创建一个RGB的CVPixelBufferRef
iOS的编码器仅仅支持CVPixelBufferRef的输入,常规的做法是从编码器Session的PixelBufferPool拿到一个CVPixelBufferRef,不过它的格式NV12(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange或者kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)这两种形式。我们...原创 2018-06-14 14:54:20 · 3533 阅读 · 0 评论 -
ffmpeg configure配置选项
帮助选项Help options标准选项Standard options许可证选项Licensing options配置选项Configuration options程序选项Program options文档选项Documentation options组件选项Component options个别组件选项Individual component options扩展库支持Extern原创 2017-09-20 18:20:16 · 20205 阅读 · 6 评论 -
PCM操作
简单说明Webrtc中有一个类专门用于音频处理-AudioFrameOperations,提供了很实用的功能。MonoToStereo:单声道转立体声,简单的复制。StereoToMono:立体声转单声道,两个声道相加除以2。SwapStereoChannels:左右声道交换。Mute:哑音,把所有通道对应的采样点全部置0,采样点个数就要看采样率了。Scale:立体声音量控制,可以单独控制原创 2016-01-15 18:12:50 · 1921 阅读 · 0 评论 -
PCM混音
混音pcm混音的原理是把两组数据相加,相加后的数据范围不能超过pcm位宽的表示范围,MixFrames写死是int16_t类型(具体查看AudioFrame),所以可以看出webrtc内混音处理是不支持16bit之外的pcm音频。webrtc中的混音函数在webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.原创 2016-01-13 12:17:31 · 5921 阅读 · 0 评论 -
音频术语
我只是知识的搬运工–Audio TerminologyAudio TerminologyGeneric audio-related terms have conventional meanings.Digital AudioDigital audio terms relate to handling sound using audio signals encoded in digital form.原创 2015-12-31 13:56:24 · 3742 阅读 · 0 评论 -
Android tinysndfile
Android源码中system/media/audio_utils中提供了sndfile的实现,但是却是一个tiny版本的。 在Android中仅仅支持wav中的RIFF格式,基于此它只有两个文件。由于有需求,所以把它从Android源码中提取出来。简单介绍目录树:.├── Android.mk 此tinysndfile的Makefile├── Application.mk Makefile原创 2015-12-05 17:13:05 · 741 阅读 · 0 评论 -
FFmpeg简单介绍
FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),FFmpeg官网。关于FFmpeg:FFmpeg是一个全球领先的多媒体框架,能够友好的在大部分设备实现解码、编码、转码、复用、解复用、流媒体、过滤和播放。它支持最不起眼的古老的格式,最高可达前沿。不管他们的一些标准委员会,社区或公司设计。具有较可靠的可移植性:F原创 2015-10-26 18:23:43 · 2955 阅读 · 0 评论 -
Bash脚本 Vlc Android平台下载和编译
写了个脚本自动下载和编译VLC代码,分享给有需要的人也顺便练练手。如果你的网络足够好,并且可以Over the wall,那么直接运行这个脚本就会下载好最新的VLC代码并且编译成功。1. 这个脚本只能运行在Linux环境。2. 建议定义好ANDROID_NDK和ANDROID_SDK环境变量,要不这个寻找的过程时间会比较长。3. 如果期间出现中断一般情况是下载谷原创 2015-05-02 23:32:23 · 1580 阅读 · 3 评论 -
Android Tinyalsa
tinyalsa位于Android源码的external/tinyalsa位置。关于tinyalsa,tinyalsa是Google在Android 4.0之后推的基于alsa内核的用户层音频接口。在Android 4.0之前还一直是使用这alsa-lib接口。Google之所以推出tinyalsa,我认为有可能是因为alsa使用了GPL许可证的缘故,也有可能是因为alsa-lib原创 2015-05-20 23:11:04 · 4360 阅读 · 0 评论 -
FFmpeg Android平台编译与使用
FFmepg使用Makefile来编译,在Linux可以直接使用make编译,在Windows可以使用Cygwin的make来编译,FFmpeg可编译出的平台有Linux、Mac OS X、Windows、Android和IOS,只需要替换掉编译工具链和设置与平台相关的属性即可。微软也自己弄了一个项目FFmpegInterop来让FFmpeg支持WindowsPhone平台。此文参考以下两篇文章:原创 2015-10-26 22:55:36 · 3833 阅读 · 0 评论 -
X265-Android
H.265的压缩率早有耳闻,我想在我们的项目中使用它,于是花了几个小时的时间来预言X265是否适合在Android上使用,结论是不适合,因为CPU占用率过高,帧率很低。于是在qcom上看了几款CPU目前都是支持硬解软编,但是我们目前对编码的需求大于解码,所以目前只能放弃H.265。Linux测试测试的CPUArchitecture: x86_64CPU op-mode(s):原创 2016-10-13 01:08:54 · 4563 阅读 · 4 评论 -
MP4v2 Android
MP4v2mp4v2是一个开源项目,为操作mp4文件提供了一套强大的API。mp4v2提供了一套基于ISO/IEC 14496-1:2001标准的mp4格式文件的创建和修改的API,这个媒体容器被广泛的使用,具有很好的兼容性。mp4v2支持的视频格式有H.264、H.263、H.261、MPEG4、JPEG、YUV12,支持的音频格式有AAC、MP3、AC3、ARM-NB、ARM-WB、G.711原创 2017-06-29 14:18:01 · 1912 阅读 · 0 评论 -
PCM文件播放器
基于webrtc的音频模块写的一个测试demo,然后再把测试demo修改下拿来当做工具使用。在平时开发中总是需要播放各种各样的pcm文件,然后每次都需要修改demo来测试,各种麻烦,于是这个小工具就产生了。1. 基于OpenSLES实现的2. 支持单双通道,默认单通道3. 支持采样率为8k、16k、32k、44k和48k,默认16k4. 支持循环播放和单曲播放原创 2015-01-06 17:26:34 · 13185 阅读 · 0 评论