![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FFmpeg
文章平均质量分 82
aqi00
好好做技术,认真写博文
展开
-
FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务
ZLMediaKit是一款国产的开源流媒体服务器,支持RTSP、RTMP、SRT等主流直播协议。结合ZLMediaKit与ffmpeg实现RTSP/RTMP协议的推流功能,已在《Linux环境安装ZLMediaKit实现视频推流》一文中详细介绍,这里单独讲解如何通过ZLMediaKit与ffmpeg实现SRT协议的推流功能。原创 2024-07-01 08:00:00 · 278 阅读 · 1 评论 -
FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
FFmpeg从4.0开始支持集成第三方的libsrt库,该库为SRT协议的支持库。OBS Studio、MediaMTX等开源软件也纷纷支持SRT,国产的两个开源流媒体服务器SRS和ZLMediaKit都支持SRT协议,可见在直播领域SRT取代RTMP已是大势所趋。在本文的直播操作之前,务必确保电脑上的FFmpeg已经集成了libsrt库,详细的集成步骤参见之前的文章《Windows环境给FFmpeg集成libsrt》。原创 2024-06-28 08:00:00 · 797 阅读 · 0 评论 -
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
nginx-rtmp是开源WEB服务器Nginx可增强的第三方rtmp模块,该模块封装了rtmp服务器,可以提供简单的rtmp流媒体服务器功能。由于Nginx本身是个高性能的WEB服务器,支持代理分发多种协议的数据,因此通过Nginx集成RTMP服务器也是个可行的方案。Nginx默认没开启rtmp模块,需要在编译nginx时添加rtmp模块,还要修改配置文件才能开启rtmp服务。原创 2024-06-25 08:00:00 · 868 阅读 · 0 评论 -
《FFmpeg开发实战:从零基础到短视频上线》资源下载和内容勘误
下面是《FFmpeg开发实战:从零基础到短视频上线》一书用到的工具和代码资源:1、本书使用的FFmpeg版本为,也可在FFmpeg的github主页上下载。2、本书第12章使用的Android Studio版本为。3、本书提供所有示例源码的demo工程下载,扫描前言末尾的二维码即可下载完整的随书源码。最新的源码也可访问我的gitee获取,gitee地址是。4、本书提供配套的ppt课件下载,扫描前言末尾的二维码即可下载完整的随书ppt。原创 2024-06-23 13:00:55 · 762 阅读 · 0 评论 -
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过Visual Studio开发桌面程序也是很常见的,下面就介绍如何在Visual Studio的C++工程中集成FFmpeg库和SDL2库。原创 2024-06-20 08:00:00 · 407 阅读 · 0 评论 -
FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址
在手机上可通过APP或者小程序播放RTMP直播流,其中小程序使用video标签播放RTMP链接,APP除了借助FFmpeg库处理之外,还能使用ExoPlayer播放RTMP链接。引入ExoPlayer播放RTMP直播流的集成步骤说明如下。原创 2024-06-17 08:00:00 · 800 阅读 · 0 评论 -
FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作
鉴于TS包的独立解码特性,HLS协议引入了TS格式作为传输单元。HLS协议的实现原理是对一个大的媒体分片,并将分片后的文件路径记录于m3u8文件,客户端依据该m3u8文件即可获取对应的分片列表,再依次播放分片内容。每个TS分片都以SPS与PPS等配置帧开头,其中指定了视频的规格信息及其编码参数,因此每个TS片段都能正常解析播放。原创 2024-06-14 08:00:00 · 384 阅读 · 0 评论 -
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKit。SRS是一款国产的开源实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等流媒体协议。原创 2024-06-11 08:00:00 · 480 阅读 · 0 评论 -
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。其中SRT全称为Secure Reliable Transport,中文叫做安全可靠传输协议。RIST全称为Reliable Internet Stream Transport,中文叫做可靠的互联网流传输协议。SRT和RIST两个协议均在2017年发布,腾讯视频云已将SRT作为传输层之上的协议。原创 2024-06-08 08:00:00 · 1663 阅读 · 0 评论 -
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战:从零基础到短视频上线》一书提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。SRT和RIST两个协议均在2017年发布,腾讯视频云已将SRT作为传输层之上的协议。根据腾讯视频云的实践,相比传统的RTMP直播协议,SRT对推流卡顿问题有明显改善。原创 2024-06-05 08:00:00 · 1094 阅读 · 0 评论 -
FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作
以ZLMediaKit为例,它在向推流序列插入I帧时做了特殊处理,一旦出现I帧,就自动插入SPS与PPS等配置帧。具体代码在ZLMediaKit框架的ext-codec/H264.cpp,查看该源码的H264Track::inputFrame_l函数,找到以下的代码片段,可见程序在判断关键帧之后调用了insertConfigFrame函数。由此可见,ZLMediaKit在每个关键帧前面都额外插入了SPS帧和PPS帧,确保H.264裸流维持着形如“SPS帧→PPS帧→IDR帧”的队形。原创 2024-06-02 08:00:00 · 905 阅读 · 0 评论 -
FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo
不管是传统互联网还是移动互联网,实时数据传输都是刚需,比如以QQ、微信为代表的即时通信工具,能够实时传输文本和图片。其中一对一的图文通信叫做私聊,多对多的图文通信叫做群聊。除了常见的图文即时通信,还有实时音视频通信,比如一对一的音频通话、一对一的视频通话等等,此时可采用WebRTC技术,有关WebRTC的编程开发及其项目实战参见一书的第20章“20.2 给App集成WebRTC”。但是一对多的在线直播采用WebRTC技术就不太合适了,因为WebRTC只管打洞把双方的网络打通,不考虑综合负载。原创 2024-05-30 08:00:00 · 1045 阅读 · 2 评论 -
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流
RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架,可用于RTMP直播和RTSP直播,其升级版还支持SRT直播(腾讯视频云就采用SRT协议)。RTMP Streamer支持的视频编码包括H264、H265、AV1等等,支持的音频编码包括AAC、G711、OPUS等等,可谓功能强大的APP直播框架。原创 2024-05-27 08:00:00 · 650 阅读 · 0 评论 -
FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧
FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.1 音视频编码的发展历程”介绍了H.26x系列的视频编码标准,其中H.264至今仍在广泛使用,无论视频文件还是网络直播,H.264标准都占据着可观的市场份额。之所以H.264取得了巨大的成功,是因为它提出了一个新概念,把标准框架划分为两个层面,分别是视频编码层(Video Coding Layer,简称VCL)和网络抽象层(Network Abstraction Layer,简称NAL,也称网络提取层)。原创 2024-05-24 08:00:00 · 878 阅读 · 0 评论 -
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是个开源的视频编解码器,它与DivX一同被纳入MPEG-4规范第二部分的视频标准,但DivX并未开源。早期的MP4视频大多采用XviD或者DivX编码,当时的视频格式被称作MPEG-4。现在常见的H.264后来才增补到MPEG-4规范的第十部分,下面就介绍如何在Windows环境给FFmpeg集成XviD的编解码库libxvid。原创 2024-05-21 08:00:00 · 411 阅读 · 0 评论 -
FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)
下面是补充的FFmpeg开发笔记内容目录,主要是对《FFmpeg开发实战:从零基础到短视频上线》的进阶增补。记录下FFmpeg的学习笔记目录,完整的FFmpeg开发实战内容详见。下面是《FFmpeg开发实战:从零基础到短视频上线》一书的目录概要。第七章 Windows环境给FFmpeg集成第三方库。第二章 Windows环境编译FFmpeg。8.1 Windows环境编译FFmpeg。第一章 Linux环境编译FFmpeg。第 12 章 FFmpeg的移动开发。原创 2024-05-18 16:36:52 · 915 阅读 · 0 评论 -
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是个开源的视频编解码器,它与DivX一同被纳入MPEG-4规范第二部分的视频标准,但DivX并未开源。早期的MP4视频大多采用XviD或者DivX编码,当时的视频格式被称作MPEG-4。现在常见的H.264后来才增补到MPEG-4规范的第十部分,当然如今使用XviD压缩的视频已经不多了。原创 2024-05-16 08:00:00 · 230 阅读 · 0 评论 -
FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题
如果手机APP不走FFmpeg,通过其他途径访问直播地址之时,却发现无法播放ZLMediaKit的HLS直播地址http://124.***.***.***:8080/live/test/hls.m3u8。无论采用谷歌官方的ExoPlayer,还是采用微信小程序的video标签,都播放不了ZLMediaKit的HLS视频。原创 2024-05-13 08:00:00 · 393 阅读 · 4 评论 -
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
ZLMediaKit是一款国产的开源流媒体服务器,它基于C++11开发,支持多种流媒体协议(RTSP/RTMP/HLS/WebRTC等等),支持的音视频编码标准包括H265、H264、AAC、G711、OPUS等。通过结合FFmpeg与ZLMediaKit,可以很方便地测试音视频的推拉流。原创 2024-05-10 08:00:00 · 925 阅读 · 0 评论 -
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
《FFmpeg开发实战:从零基础到短视频上线》一书介绍了JPEG、PNG、GIF等图片格式,以及如何通过FFmpeg把视频画面转存为这些格式。除了上述这些常见的图片格式,还有较新的WebP格式,它由VP8视频标准派生而来,VP8演进的视频格式叫做WebM,图片格式则叫WebP。若想让FFmpeg支持WebP图片的编解码,就要给它集成第三方库libwebp。原创 2024-05-07 08:00:00 · 224 阅读 · 0 评论 -
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了大约27%。由于AV1具有性能优势,并且还是免费授权,因此各大流媒体平台更倾向使用AV1而非HEVC标准。原创 2024-05-04 08:00:00 · 702 阅读 · 0 评论 -
FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流
OBS是一个开源的直播录制软件,英文全称叫做Open Broadcaster Software,广泛用于视频录制、实时直播等领域。OBS不但开源,而且跨平台,兼容Windows、Mac OS、Linux等操作系统。OBS的官网是https://obsproject.com/,录制软件名叫OBS Studio,它基于QT+FFmpeg编码。原创 2024-05-01 08:00:00 · 626 阅读 · 0 评论 -
【春日赠书】《FFmpeg开发实战:从零基础到短视频上线》上市赠书啦
FFmpeg开发实战:从零基础到短视频上线》与FFmpeg有关的C代码都基于FFmpeg 5.1.2编写,其中前10章的C/C++代码在Linux(包括EulerOS和CentOS)与Windows(包括Win10和Win11)上面编译和调试通过;值此《FFmpeg开发实战:从零基础到短视频上线》出版上架之际,即日起特推出送书活动,凡购买《FFmpeg开发实战:从零基础到短视频上线》且符合下列条件的朋友,可获赠图书《Android App开发入门与项目实战》一本。,先到先得,送完为止;原创 2024-04-28 08:00:00 · 483 阅读 · 0 评论 -
FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比
《FFmpeg开发实战:从零基础到短视频上线》一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高。然而有的视频文件并非如此,如果按照AVCodecContext设定的宽高展示视频,会发现画面被压扁或者拉长了。原创 2024-04-25 08:00:00 · 438 阅读 · 1 评论 -
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
libuavs3d是AVS3标准的解码器,最高可支持8K/60P视频实时解码,支持windows/linux/arm/ios等所有常用平台,在移动端最高支持4K/30fps视频实时解码,解码速度大幅领先AV1开源解码器dav1d和aomdec。原创 2024-04-22 08:00:00 · 853 阅读 · 0 评论 -
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。本文介绍如何给FFmpeg集成AVS3的解码器libuavs3d。原创 2024-04-19 08:00:00 · 339 阅读 · 0 评论 -
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
同步播放音视频的时候,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playsync.c采取一边遍历一边播放的方式,在源文件的音频流和视频流交错读取的情况下,该方式可以很好地实现同步播放功能。原创 2024-04-16 08:00:00 · 673 阅读 · 10 评论 -
【送书活动】《FFmpeg开发实战:从零基础到短视频上线》迎新送书啦
其中,第1~5章是基础部分,主要讲解FFmpeg的环境搭建、FFmpeg的开发基础、FFmpeg的编解码、FFmpeg处理图像和FFmpeg处理音频;值此《FFmpeg开发实战:从零基础到短视频上线》出版上架之际,即日起特推出送书活动,凡购买《FFmpeg开发实战:从零基础到短视频上线》且符合下列条件的朋友,可获赠图书《Android App开发进阶与项目实战》一本。《FFmpeg开发实战:从零基础到短视频上线》随书提供了9大实战项目,其中包括卡拉OK音乐短片、桌面影音播放器、仿剪映的视频剪辑等实用工具。原创 2024-04-13 08:00:00 · 585 阅读 · 7 评论 -
FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放
FFmpeg结合SDL可以播放音频文件,也能播放视频文件中的音频流,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playaudio.c支持播放mp3和aac两种格式的音频,却不支持播放其他格式的音频。因为mp3和aac两个格式拥有标准的规范定义,比如mp3规定每帧音频固定包含1152个样本,而aac规定每帧音频固定包含1024个样本。原创 2024-04-10 08:00:00 · 298 阅读 · 0 评论 -
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
libass是一个适用于ASS和SSA格式的字幕渲染器,支持的字幕类型包括srt、ass等,凡是涉及到给视频画面添加字幕,均需事先集成libass。下面介绍如何在Windows环境给FFmpeg集成libass。原创 2024-04-07 08:00:00 · 684 阅读 · 0 评论 -
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放采用https的在线视频,需要编译安装并启用openssl。原创 2024-04-04 08:00:00 · 373 阅读 · 0 评论 -
《FFmpeg开发实战:从零基础到短视频上线》出版后记
有鉴于此,笔者苦心钻研FFmpeg编程,从初学者的角度出发,编写了这本由浅入深的FFmpeg入门书籍《FFmpeg开发实战:从零基础到短视频上线》,该书最后两章专门论述了如何利用FFmpeg开发桌面程序和手机APP。原创 2024-04-01 08:00:00 · 442 阅读 · 2 评论 -
FFmpeg开发笔记(十五)详解MediaMTX的推拉流
MediaMTX是个开源的轻量级流媒体服务器,它的压缩包包括可执行程序mediamtx.exe和配置文件mediamtx.yml,看起来非常简约,但它提供的流媒体服务一点也没缩水。原创 2024-03-29 08:00:00 · 1042 阅读 · 0 评论 -
FFmpeg开发笔记(十四)音频重采样的缓存
FFmpeg在很多地方都运用了缓存机制,不单是视频编码过程和视频解码过程有缓存,甚至连音频重采样都用到了缓存。原创 2024-03-26 08:00:00 · 225 阅读 · 0 评论 -
FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx
Opus的编解码库为libopus,VP8和VP9的编解码库为libvpx。前文介绍了在Linux环境给FFmpeg集成libopus和libvpx,接下来介绍如何在Windows环境给FFmpeg集成libopus和libvpx。原创 2024-03-23 08:00:00 · 891 阅读 · 0 评论 -
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
视频的封装格式除了古老的MP4和ASF之外,还有较新的WebM格式,该格式的音频编码主要采用Opus,视频编码采用VP8或者VP9。其中Opus的编解码库为libopus,VP8和VP9的编解码库为libvpx。原创 2024-03-20 08:00:00 · 393 阅读 · 0 评论 -
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于opencore-amr。前文介绍了在Linux环境给FFmpeg集成vorbis和amr,接下来介绍如何在Windows环境给FFmpeg集成vorbis和amr。原创 2024-03-16 08:00:00 · 890 阅读 · 2 评论 -
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。原创 2024-03-13 08:00:00 · 938 阅读 · 0 评论 -
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2 交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,前文又介绍了如何在Linux环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需x265的so库。原创 2024-03-10 08:00:00 · 1360 阅读 · 11 评论 -
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2 交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。原创 2024-03-07 08:00:00 · 450 阅读 · 0 评论