自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 基于nginx-rtmp-module实现的直播项目小结

协议名称详细介绍RTSP实时串流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体 服务器。该协议用于建立和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。RTMP。

2024-02-27 15:09:36 1123

原创 nginx搭建直播rtmp推流,httpflv拉流环境

工作中发现挺多直播CDN在实现httpflv拉流时都没有使用http chunk编码,而是直接使用no-content-length的做法。在拉流http chunk流的时候,使用tcpdump抓包,wireshark分析后,均没有看到http chunk协议,与网上其他教程不符合。no-content-length,Google下得知,使用这种非标准的no-centengt-length的原因是实现简单。可以在响应头中看到使用了http chunk协议,且没有content-length。

2024-02-24 16:00:42 1502

原创 RTMP 直播服务器搭建方法

下一步将实现通过手机端摄像头采集画面数据,将数据推流到服务器,其中涉及的知识点有rtmp、x264相关开源库.原文链接RTMP 直播服务器搭建方法 - 掘金。

2024-02-22 14:57:47 1680

原创 JavaCV之rtmp推流(FLV和M3U8)

JavaCV与FFmpegFFmpeg是一款开源的多媒体处理工具集,它包含了一系列用于处理音频、视频、字幕等多媒体数据的库和工具。JavaCV集成了FFmpeg库,使得Java开发者可以使用FFmpeg的功能,比如视频解码、编码、格式转换等。

2024-02-21 16:11:32 2193

原创 摄像设备+nginx+rtmp服务器

前言由于html中的video现在不支持rtmp协议(需要重写播放器框架,flash被一刀切,360浏览器还在支持flash),遂用rtmp作为桥梁,实际是hls协议在html中起作用. 在此推荐一款前端播放器,.简直了,写点页面,一直循环,洗脑神曲 dream it possible.搭建nginx服务器。

2024-02-20 21:15:00 565

原创 iOS整理 - 关于直播 - 搭建服务端

前言其实本人一直都想自己简单做一套直播(包括移动端和服务端)的开发测试,但是之前一直做得比较迷茫。最近偶然间在来了灵感,瞬间解除了我很多疑惑。我会分享出来,希望大家一起研究下。稍后,我完整做好了,会更新一篇完整的做的过程。今天,我们先搭建一下直播部分的服务端。1、安装HomebrowHomebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器如果安装过,想要卸载的话。

2024-02-20 16:00:40 1158

原创 ffmpeg for android编译全过程与遇到的问题

编译前准备编译环境:Ubuntu16,可自行下载最新版并百度永久许可证或在服务器上安装Ubuntu有条件的最好还是在Liunx平台下编译吧,Windows平台下编译坑更多,文章末尾有Github源码可自取开始编译1.解压NDK,执行如果提示没有unzip,执行此命令安装2.解压ffmepg,3.进入ffmpeg4.2.2目录,修改根目录下的 configure 文件搜索替换为此步骤主要是将so命名为Android通用的so名称。

2024-02-19 20:45:00 898

原创 FFmpeg编程录制音频(Mac OS)

之前我们使用FFmpeg命令行工具进行了简单的音视频操作,这次在Mac OS环境下编写代码实现简单的音频录制功能。

2024-02-19 14:40:03 1049

原创 Android Studio新版本New UI及相关设置丨遥遥领先版

俗话说工欲善其事必先利其器嘛,工具用不好怎么行呢,借着Android Studio的更新,介绍一下新版本中的更新内容,以及日常开发中那些好用的设置。

2024-01-30 15:06:57 1778

原创 音视频探索(7):FLV协议在RTMP中的使用

由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。: 表面之前的 Tag 的长度(tag 头+tag 数据),第一个 tag值是 0。:flv tag 的数据长度,其实如图里 audio tag 头及其数据长度。构成,但是,在RTMP协议中,Audio Tag不包含。但是,在RTMP协议中,Video Tag不包含。通常,FLV的Audio Tag应该由。:表示音频类型,1 = aac。

2024-01-27 13:45:00 713

原创 NGINX如何实现rtmp推流服务

我们在本地起了个golang的服务,监听8686端口,对密码为123456用户名为hanyun的用户返回HTTP状态码为200,其他的反水状态码为401。nginx在推流和拉流的时候会采用post的方式请求我们定义的地址,如果我们返回的HTTP状态码为200就可以进行拉流或者推流了,如果返回其他的状态码,例如401就会拒绝推流或者拉流。stream为流名称,后端可以以post的方式接受到一个键值对name=stream,z这个是默认的。我们起了一个服务,用于播放我们的推流内容,同时也可以模拟推流,访问。

2024-01-26 17:01:03 448

原创 如何使用 WebRTC 与 Kurento 建立视频会议 App

ReceiveVideoFrom函数非常简单,当它获取到合适的断点,它处理请求,产生一个应答,将其发送到客户端并开始收集ice candidates.同样方式, addIceCandidate函数接收ICE Candidate并将其添加到相应的断点中。ReceiveVideoFrom函数非常简单,当它获取到合适的断点,它处理请求,产生一个应答,将其发送到客户端并开始收集ice candidates.同样方式, addIceCandidate函数接收ICE Candidate并将其添加到相应的断点中。

2024-01-25 15:30:17 1144

原创 WebRTC之服务器搭建

前言在前面的WebRTC介绍中我们已经介绍了WebRTC的编译以及成功地把WebRTC在Android Studio中运行了起来,详情请猛击在后面的学习过程中,我们将进一步使用WebRTC实现Android端的实时通信对话。为了方便后续的开发和测试,今天我们来搭建WebRTC的服务器环境。安装环境笔者使用的云服务器是Ubuntu 16.04。需要在云服务器后台开放(出入规则)端口: 3478、8080、8089、80、4431、安装JDK2、安装node.js。

2024-01-24 16:11:55 1050 1

原创 webrtc线程代码研究

虚线:继承 实线:调用 橙色:接口Thread继承MessageQueueThread提供两个静态方法,分别用来创建带socket和不带socket的线程:调用Thread的Start方法时,会调用Thread::ProcessMessages方法。#endifif (!return!不断调用MessageQueue::Get函数获取消息队列中的message。获取message后,调用MessageQueue::Dispatch,分发消息。

2024-01-23 20:15:00 797

原创 浅谈 WebRTC NetEQ

WebRTC NetEQ 模块大概介绍完毕了。正是因为 Google 将其开源,才能一窥究竟,而大部分自研的语音引擎,或多或少都参考过 NetEQ 里的策略。不得不说,WebRTC 真是音视频领域的值得学习的好源码。

2024-01-23 15:37:29 1277

原创 socket实现视频通话-WebRTC

最近喜欢研究视频流,所以思考了双向通信socket,接下来我们就一起来看看本地如何实现双向视频通讯的功能吧~客户端获取视频流首先思考如何获取视频流呢?其实跟录音的功能差不多,都是查询电脑上是否有媒体设备,如果有录音和录像的设备,首先就需要授权,然后将视频流通过socket传输给服务端。获取媒体设备因为是打视频的功能,那A客户端本身也希望看到A的摄像头,所以我们直接将其赋值给一个video标签,就能看到图像了.然后就是重要部分了,我们需要用到WebRTC的API。

2024-01-20 15:46:46 1653 1

原创 3种ffmpeg-web端视频直播推流方案

记录了三种 ffmpeg 工具进行推流的方法,并在web端实现直播效果。

2024-01-19 20:15:00 1457

原创 ffmpeg 常用命令行详解

ffmpeg 是一个命令行音视频后期处理软件。

2024-01-19 16:20:07 1362

原创 编译FFmpeg4.3.1 、x264并移植到Android

2.配置build.gradle,如果你是按照我这样在module中导入的ffmpeg,则在app-build.gradle需要添加 ndk{ abiFilters 'armeabi-v7a' }5.调用AndrFFmpeg->getFFmpegVersion()、AndrFFmpeg.getAVCodeInfo()8、合并编译出来的静态库为一个单独的libffmpeg.so。10、如有遗漏、错误的地方欢迎指正、拍砖~~~~7、开始编译FFmpeg并依赖x264。4、下载FFmpeg。

2024-01-18 21:15:00 1011

原创 FFMPEG开发快速入坑——附录一:音视频同步

媒体播放器在播放时的处理逻辑:1、音频帧正常顺序播放,音频播放时间作为基准时钟2、视频帧在解码后,根据基准时钟来调整当前处理:(2.1)视频帧PTS > 基准时钟: 根据时间差异计算视频帧显示延时(2.2)视频帧PTS < 基准时钟 < 下一GOP点:丢弃当前帧,直接依次解码后续帧(2.3)视频帧PTS < 下一GOP点 < 基准时钟:直接调整到下一GOP开始I帧,依次解码。

2024-01-18 17:48:54 1426

原创 ffmpeg入门篇-滤镜的基本使用

现在我们保证了当前视频一定会按照300x500的比例输出且不会变形,但是请注意老板说的“所有输出视频”,也就是说输入视频的分辨率可能是200x300、544x960、500x400、200x800等等各种比例都要保证按照300x500输出,很显然,上面的写法不完全通用,怎么办?crop滤镜用于裁剪视频,也就是说视频的任意区域任意大小,我们都可以裁剪出来。我们说过,一个滤镜的输出作为另一个滤镜的输入,这样就极大的避免了写多条命令反复编解码操作,我们的原则只有一个,能用一条命令处理的绝不用两条命令。

2024-01-18 17:46:12 1255

原创 音视频系列六 Linux 编译ffmpeg链接openssl

如果出现openssl not found,然后确认前面的配置没有问题,那就打开ffmpeg根目录下的configure文件,搜索下。进入解压后的openssl根目录,创建一个build_android_openssl.sh文件,粘贴以下代码。同时在extra-cflags和extra-cflags中指定上面编译好后的openssl的头文件位置和库位置,如下。,然后参考下最新版本的ffmpeg,看看两者有什么不同,看情况修改。这一行,是新版本的openssl改变导致的。去官网(或者github)下载。

2024-01-17 14:15:00 414

原创 3种ffmpeg-web端视频直播推流方案

记录了三种 ffmpeg 工具进行推流的方法,并在web端实现直播效果。rtsp://{账号}:{密码}@{ip}:{端口}/根据摄像头厂牌区分。rtmp://{本地ip}:1935/live/home。因为各浏览器不再支持flash,需要使用flv.js插件。hls流延迟比较大,按官方的说法60秒内算正常!二. nginx + ffmpeg 推流hls。本地ip地址要设置为与网络摄像头同一网段。web端HTML页面。

2024-01-16 19:52:54 1362 1

原创 FFmpeg连载6-音频重采样

所谓重采样,一句话总结就是改变音频的三元素,也就是通过重采样改变音频的采样率、采样格式或者声道数。例如音频A是采样率48000hz、采样格式为f32le、声道数为1,通过重采样可以将音频A的采样率变更为采样率44100hz、采样格式为s16le、声道数为2等。

2024-01-16 19:45:18 1602

原创 linux下编译ffmpeg 以及交叉编译并引入Android

使用ndk下的make-standalone-toolchain.sh脚本进行工具链的生成,路径位于:ndk/{ndk版本}/build/tools/make-standalone-toolchain.sh 脚本关键参数: --toolchain=arm-linux-androideabi-4.9 (指定编译工具链版本) --platform=android-19(指定sdk平台最低支持版本) --install-dir=../toolchain(指定生成工具链的输出目录)

2024-01-15 15:35:14 950

原创 HLS + ffmpeg 实现动态码流视频服务

这种方案有两个问题,一是延迟大,命令从客户端发出后,得等数据中心到边缘节点捞完数据,才能开始推送视频,开始响应;最直观的方案是,将节点上的视频不断推送到数据中心,客户端直接访问存储在数据中心的视频数据,但这明显不符合场景要求,因为边缘节点到数据中心的带宽非常小,没办法支持高清视频文件的持续传输,而且抽检频率很低,全传回来了大多数也是用不上的。全称 Http Live Stream,是苹果推出的基于http的流媒体传输协议,原理是将一个大的,完整的视频文件拆解成多个小文件,每次只播放其中的一个小文件。

2024-01-14 15:00:00 1276

原创 基于FFmpeg的简单Android视频播放器

1. 模块分割首先对这个视频播放器所采用的一些部件要清楚。这个播放器主要可以拆分为4个部分:1.解码:FFmpeg2.音频输出:OpenSLES3.视频渲染:OpenGLES这些框架都是基于C的api,因此这次我们的主要工作将会集中在NDK部分。而关于NDK的一些知识,之前的博客也有讲过,所以这个工程会是对之前知识的一次综合运用。为了提高可移植性,对关键部件使用接口来规范其API接口。对于播放器内部,播放的音频数据格式为16位PCM,44.1kHz采样率,双声道。

2024-01-14 11:45:00 1149

原创 FFmpeg 的使用与Docker安装流媒体服务器

本文阐述的均为命令行的使用方式,并不牵扯FFmpeg 的 C++音视频开发内容,补充一句,C++的资料真的少,能把C++学好的人,我真的是觉得巨佬。我主要是使用FFmpeg 推流方面的知识,案例大都是靠近这方面。一、FFmpeg 介绍本文读者会比较小众~ 看到此文的朋友,大概率是需要用到FFmpeg啦,简单说一下下。就算是从来没接触过的朋友,其实也已经在生活的各个方面都接触过FFmpeg处理完东西(音视频)。一句话来总结:FFmpeg 就是一款封装好的关于音视频方面的开源处理工具。

2024-01-13 20:27:31 1163

原创 Android中集成FFmpeg及NDK基础知识

在日常App开发中,难免有些功能是需要借助NDK来完成的,比如现在常见的音视频处理等,今天就以ffmpeg入手,来学习下Android NDK开发的套路.总的来说使用CMake方式还是比较简单的,编写文件,在gradle中指定文件位置就好.重点在于相关库的交叉编译及编写调用相关api文件的C文件,这里就需要一些C的基础了.原文Android中集成FFmpeg及NDK基础知识 - 掘金。

2024-01-13 20:24:58 1274

原创 最新靠谱可用的-Mac-环境下-FFmpeg-环境搭建

最近在尝试搭建 FFmpeg 开发环境时遇到一个蛋疼的事,Google 了 N 篇文章竟然没有一篇是可以跑起来的!少部分教程是给出了自我矛盾的配置(是的,按照贴出来的代码和配置,他自己都跑不起来),大部分教程是看着挺全但忽略了某几个关键的点导致跑不起来,更蛋疼的是碰到报错后错误相关的文章也很少,当然还有一些是年代久远过时了。于是在成功跑起来后,我将整个搭建过程整理出来,希望可以帮到后面的人。本文基于 Mac OS X + Android Studio 3.2 + FFmpeg 3.3 + CMake。

2024-01-12 20:24:40 1180

原创 FFmpeg编程录制音频(Mac OS)

之前我们使用FFmpeg命令行工具进行了简单的音视频操作,这次在Mac OS环境下编写代码实现简单的音频录制功能。

2024-01-12 20:18:48 1214

原创 Android音视频: 引入FFmpeg

获取到 FFmpeg 的编解码器,然后通过循环遍历,将所有的音视频编解码器信息拼接起来,最后返回给。那么根据签名介绍的三个步骤,依葫芦画瓢,就可以添加了。当中,和前面的系统创建的稍微有些不同,通过这个大括号包裹,我们就不需要每个方法都添加单独的。可以看到,这个 cpp 文件中的方法命名非常的长,不过其实非常简单。,许多人就会大惊失色,感觉是深不可测的东西,一方面是。,开始下载(文件比较大,可能会比较慢,请耐心等待)。的基础使用,毕竟,高级的我也不会不是吗?,进入新建工程页面,拉到最后,选择。

2024-01-12 20:08:58 1451

原创 基于FFmpeg的短视频编辑工具Cut

最近在学习FFmpeg和音视频的相关知识,为了加强对FFmpeg的认识和了解,于是撸了一个短视频编辑软件Cut。

2024-01-06 15:20:29 1439 1

原创 FFmpeg读取Assets资源文件

在Android开发中我们经常把原生资源文件放在assets目录下以供需要时读取,通过API提供的方法可以非常方便获得InputStream或FileDescriptor(文件标识符),但是在使用FFmpeg读取Assets文件时却遇到了困难。主要原因在于FFmpeg读取媒体文件时是通过传入的url来判断IO协议的,也就是说如果想要使FFmpeg能够正确读取Assets文件就需要选择合适的IO协议来构造url并传入方法中,然而实际操作起来貌似问题多多。调用。

2024-01-05 14:46:58 1349

原创 FFmpeg之AVPacket

在FFmpeg中,AVPacket主要存储编码数据,例如:H264、H265、AAC等。对于视频流,它通常应该包含一个编码帧;对于音频流,则可能包含多个音频帧。编码器可能输出空AVPacket,不包含编码数据,只包含边side data,例如:在编码结束时更新一些流参数。AVPacket结构体如下所示:side_data和side_data_elemsAVPacket->side_data是AVPacket携带的side数据数组,AVPacket->side_data_elems是数组的长度。

2024-01-04 21:45:00 1468

原创 使用ffmpeg+flv.js + websokect播放rtsp格式视频流

对于rtsp的视频流网上有很多种的解决方案,但是大的趋势还是利用ffmpeg的工具进行rtsp的视频解析进行一个推流,我最终选择bilibili开源的flv.js,代码十分的简单全部都在底层封装好了。实现的方式也比较容易理解,ffmpeg进行rtsp的视频流解析转为flv视频流通过websocket通信把flv的流推给前端。其中两个地方比较坑需要注意,一定要安装编译后的版本,不能取源码。一、搭建服务端1、安装node服务端主要是用node运行解析rtsp转为flv的服务。

2024-01-04 16:56:02 1375

原创 FFmpeg调用MediaCodec解码

要使用硬解码,你还得告诉解码器,你想要输出什么样的格式数据,这个就是配置硬解码器所要干的事情, 也就是说为了告诉解码器你想要获得的最终的YUV数据格式是什么?查看它所支持的解码器,如图还是很多的,但是也并不是说都能直接使用的,因为大多数都是第三方的库, 一般需要在编译时打开进行链接编译后才能正常使用。这个文件,通过这个文件可以获取到很多我们想要的配置信息,最简单的,如果我们不知道有哪些可配置的编译信息, 则可以使用。在前面的博文中我们介绍了关于使用NDK编译FFMpeg6.0的一些坑以及相关的解决方法。

2024-01-03 20:30:00 1677

原创 使用 PHP-FFMpeg 操作视频/音频文件

目前支持的数据是 title(标题),artist(艺术家),album(专辑),artist(艺术家),composer(作曲家),track(轨道),year(年),description(描述),artwork(艺术作品)注意:此方法会抽取对应的图片帧,而且每次都提取 400 张,不知道是不是我参数设置的问题(试了 FRAMERATE_EVERY_SEC,FRAMERATE_EVERY_2SEC,FRAMERATE_EVERY_10SEC)做音频合成的时候找到的一个php操作ffmpeg 的类库。

2024-01-03 15:17:57 1732

原创 Android Mac编译FFmpeg,并使用

Android Mac编译FFmpeg,并使用FFmpeg 全称(First Forward MPEG),是一款领先的开源多媒体框架,采用 LGPL 或 GPL 许可证,除了具有音视频编解码功能外,还有视频格式转换、视频抓图、视频水印、推流等功能。FFmpeg 在 Linux 平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括 Windows 、Mac OS X 等。FFmpeg官网FFmpeg它主要含有以下几个核心库:1、libavcodec-提供了更加全面的编解码实现的合集。

2023-12-29 15:48:43 1182

原创 前端多媒体处理工具——ffmpeg的使用

写在前面在前端领域,FFmpeg 是一个非常有用的工具,它提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率切换等。可以在多种操作系统安装使用。安装 下载FFmpeg在网站根据对应电脑系统下载对应版本即可,windows下载下图版本。 下载完成后选择合适的路径存放此工具包,根据对应路径配置环境变量:我是将工具包放在下图目录:因此环境变量是这样的:使用控制台输入,如果得到类似下图结果则表明配置成功:配置完成后,在本篇文件主要介绍以下几个功能:这

2023-12-29 13:45:00 777

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除