之前写了如何在Android中使用ffmpeg以及如何使用ffmpeg拉取RTSP流业务场景大概是这样拉取RTSP流之后解码送给AI分析分析完之后在进行绘制结果然后编码编码完之后进行RTMP推流。AI解码是别的同时负责的我只需要把编码结果使用RTMP推送出去即可FFmpeg本身是支持RTMP直接推流的但是由于之前的项目一直都是使用lib_srsrtmp那个库的比较成熟,所以就还是使用这个库先看下目录结构:srs_librtmp.h和srs_librtmp.cpp是别的项目直接拿过来的safequeue是一个安全等待队列FFDemux是拉流模块FFSrsRTMP就是推流模块FFBridge是负责
背景说明项目功能实现需要在Linux下编译出可用的FFmpeg库。FFmpeg在编译过程中是需要链接其它三方库的,比如x265x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器错误),影响使用。编译这种三方库其实理论简单,但是细节磨人,有时候没设置好就是会有些莫名其妙的问题。我这里也参考了如零声学院分享的文档,结合自己情况总结记录了份编译说明,亲测有效,使用稳定。甚至可以按步骤无脑复制shell执行,编译一路绿灯,快速得到完美的FFmpeg库。编译整体思路就是先把依赖的库如x264、x265等先配置好,这些库不是必须的,但是保证库功能完整性最好都配置好。接下来就是下载FFm
目录🎈安装PHP-FFMpeg🎈视频中提取一张图片🎈视频中提取多张图片🎈调整视频大小🎈视频添加水印🎈生成音频波形🎈音频转换🎈给音频添加元数据🎈拼接多个音视频🎈截取音视频🎈提取gif动图🎈裁剪视频🎈转换视频格式🎈调整视频帧率🎈获取音视频信息🎈安装PHP-FFMpeg在使用ffmpeg之前,需要安装软件和操作命令库软件根据系统,自行选择安装,而操作命令库需要根据下列的命令进行安装软件地址:https://github.com/BtbN/FFmpeg-Builds/releases命令地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/composerrequir
✨目录🎈安装PHP-FFMpeg🎈视频中提取一张图片🎈视频中提取多张图片🎈调整视频大小🎈视频添加水印🎈生成音频波形🎈音频转换🎈给音频添加元数据🎈拼接多个音视频🎈截取音视频🎈提取gif动图🎈裁剪视频🎈转换视频格式🎈调整视频帧率🎈获取音视频信息🎈安装PHP-FFMpeg在使用ffmpeg之前,需要安装软件和操作命令库软件根据系统,自行选择安装,而操作命令库需要根据下列的命令进行安装软件地址:https://github.com/BtbN/FFmpeg-Builds/releases命令地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/composerrequi
h264文件不能直接在网页上播放,比如在浏览器上输入http://10.0.0.2/2022-01-08T22-32-58.h264,变成了下载。若在浏览器上输入http://10.0.0.2/2022-01-08T22-32-58.mp4,则可以播放。本文讲解用ffmpeg将h264文件转换成mp4。首先,准备h264文件,这个可以用ffmpeg将一个mp4的视频部分转成h264,命令如下:ffmpeg-i2022-01-08T22-32-58.mp4-an-vcodeccopy2022-01-08T22-32-58.h264注意,我这里mp4里面的视频编码格式是h264,故用的vcodec
最近用ffmpeg做了一批视频模板供公司业务使用,结合shell脚本实现,常用的功能有如下几个:scale:缩放pad:填补drawtext:加文字ffprobe:获取视频一些属性简单说几个可以实现的和未解决的:1、scale之后出现尺寸与指定值不一致:需要设置setsar,前文有提到:https://blog.csdn.net/sayhelen/article/details/12427481422 2、pad和scale一起使用时,需要注意顺序,pad默认会补黑边,怎么样让最终结果即实现缩放又实现补透明呢?第一,要先设置scale,在设置pad第二,pad可以设置
视频编码流程之前了解了如何解码多媒体文件中的视频流,并将解码后的图像进行显示,接下来我们学习如何对视频流进行编码,从图片→h.264和图片→MP4两个案例中具体了解视频的编码流程首先我们了解视频编码的流程,编码流程与解码流程类似,将解码器替换为了编码器,在细节上有点差异FFmpeg视频编码流程图像→h.264本案例中我们将多张图像转成h.264文件,每张图像显示1s,最终实现代码如下:为了方便,选择的图像均为600x900的jpg图像,同时可以使用之前编写的视频解码验证h264文件正确性之后案例中导入的头文件都一致,后续的代码中就不多次写出了extern"C"{#include"libavco
字幕简介我们在观看电影或短视频时,一般在视频下发会出现字幕,有些视频还会配中英双语字幕。字幕可以帮助观看人更好的了解视频内容。字幕分为以下三种类型:外挂字幕:独立的字幕文件,播放视频时把视频和字幕放入同一路径下,也可以在播放器中选择外挂字幕。这样在播放视频时就可以看到字幕内容。常见字幕格式srt、vtt、ass等。软字幕:也叫内挂字幕、封装字幕、字幕流等。通过某种技术将外挂字幕与视频文件打包在一起成一个文件。视频文件也可以同时封装多个字幕文件,播放时通过播放器选择所需字幕或不显示字幕。在需要时,还可以将字幕分离出来,修改后再打包进去。硬字幕:将字幕内容覆盖叠加到视频画面上。这种字幕与视频画面溶
ffmpeg-i{输入文件路径}-vf{drawtext}{输出文件路径}针对视频模糊,加上-b:v{输出视频码率};右键属性,可查看离线视频源码率;针对离线视频文件加上时间水印,时间跳变不正常,加上-re;整体就是,ffmpeg-i{输入文件路径}-vf{drawtext }-c:acopy-b:v3000K{输出文件路径},参考下方案例,读取的是系统时间;publicstaticvoidaddTimestampWatermark(StringinputPath,StringoutputPath){String[]cmd={"-re","-i",inputPath,"-vf","dra
系列文章:FFmpeg入门-视频播放FFmpeg入门-rtmp推流FFmpeg入门-Android移植FFmpeg入门-格式转换上一篇博客介绍了怎样用ffmpeg去播放视频.里面用于打开视频流的avformat_open_input函数除了打开本地视频之外,实际上也能打开rtmp协议的远程视频,实现拉流:./demo-p本地视频路径./demo-prtmp://服务器ip/视频流路径这篇文章我们来讲下怎样实现推流,然后和之前的demo代码配合就能完成推流、拉流的整个过程,实现直播。rtmp服务器整个直播的功能分成下面三个模块:截屏2022-09-08下午9.49.50.png从上图我们可以看到