FFmpeg开发笔记(十五)详解MediaMTX的推拉流

这篇具有很好参考价值的文章主要介绍了FFmpeg开发笔记(十五)详解MediaMTX的推拉流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MediaMTX是个开源的轻量级流媒体服务器,它的安装过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2  FFmpeg向网络推流”。MediaMTX下载后的压缩包包括可执行程序mediamtx.exe和配置文件mediamtx.yml,看起来非常简约,但它提供的流媒体服务一点也没缩水。双击mediamtx.exe,MediaMTX弹出一个命令行窗口,窗口内部的日志信息如下:
2023/12/10 14:18:25 INF MediaMTX v1.3.0
2023/12/10 14:18:25 INF configuration loaded from E:\Program Files (x86)\mediamtx\mediamtx.yml
2023/12/10 14:18:25 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/12/10 14:18:25 INF [RTMP] listener opened on :1935
2023/12/10 14:18:25 INF [HLS] listener opened on :8888
2023/12/10 14:18:25 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2023/12/10 14:18:25 INF [SRT] listener opened on :8890 (UDP)

由日志可见,MediaMTX开启了下列五项流媒体服务:
1、侦听8554端口的RTSP服务,对应的流媒体播放地址是rtsp://127.0.0.1:8554/stream;
2、侦听1935端口的RTMP服务,对应的流媒体播放地址是rtmp://127.0.0.1:1935/stream;
3、侦听8888端口的HLS服务,对应的流媒体播放地址有两个,其中http://127.0.0.1:8888/stream可以直接通过浏览器播放(比如Chrome),另一个http://127.0.0.1:8888/stream/index.m3u8需要用播放器打开。
4、侦听8889端口的WebRTC服务;
5、侦听8890端口的SRT服务;
接下来验证MediaMTX的实际推拉流情况。打开MSYS窗口,进入《FFmpeg开发实战:从零基础到短视频上线》一书第十章的源码目录,执行下面的编译命令。

gcc pushvideo.c -o pushvideo -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavdevice -lavfilter -lavcodec -lavutil -lswscale -lswresample -lpostproc -lm

编译完成后执行以下命令启动测试程序,期望把2018.mp4推给默认的推流地址rtsp://127.0.0.1:8554/stream。

./pushvideo ../2018.mp4

打开另一个MSYS窗口,同样进入《FFmpeg开发实战:从零基础到短视频上线》一书第十章的源码目录,执行下面的编译命令。

gcc pullvideo.c -o pullvideo -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -I/usr/local/sdl2/include -L/usr/local/sdl2/lib -lsdl2 -lavformat -lavdevice -lavfilter -lavcodec -lavutil -lswscale -lswresample -lpostproc -lm

编译完成后执行以下命令启动测试程序,期望从http://127.0.0.1:8888/stream/index.m3u8拉取视频流并弹窗播放。

./pullvideo http://127.0.0.1:8888/stream/index.m3u8

然后果真弹出一个SDL窗口,正在播放从HLS服务拉取的视频画面,说明MediaMTX正确实现了HLS协议的流媒体转发功能。
不过对于上面的HLS协议,具体的播放情况比较复杂,比如http://127.0.0.1:8888/stream只能通过Chrome播放,不能通过FireFox或者Edge播放。而http://127.0.0.1:8888/stream/index.m3u8这个地址无法使用Windows Media Player打开,即使通过VLC播放也不显示画面。推测是因为pushvideo只推送视频流不推送音频流,而VLC的音视频同步机制采用音频基准,由于缺失音频流使得视频流无处校准导致不能正常显示画面。文章来源地址https://www.toymoban.com/news/detail-855042.html

到了这里,关于FFmpeg开发笔记(十五)详解MediaMTX的推拉流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

    FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为 https://trac.ffmpeg.org/wiki/CompilationGuide,在这里可以找到FFmpeg对各系统的编译说明。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到

    2024年03月23日
    浏览(40)
  • FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存

    ​ FFmpeg在很多地方都运用了缓存机制,比如《FFmpeg开发实战:从零基础到短视频上线》一书的“3.3.2  对视频流重新编码”介绍了编解码的数据缓存,不单是视频编码过程和视频解码过程有缓存,甚至连音频重采样都用到了缓存。 也就是说,重采样函数swr_convert一次只会输出

    2024年04月14日
    浏览(38)
  • FFmpeg开发笔记(四)FFmpeg的动态链接库介绍

    FFmpeg不仅提供了ffmpeg、ffplay和ffprobe三个可执行程序,还提供了八个工具库,使得开发者能够调用库里面的函数,从而实现更精准的定制化开发需求。这八个库的名字是avcodec、avdevice、avfilter、avformat、avutil、postproc、swresample、swscale,下面分别对这些库展开介绍。更多详细的

    2024年03月10日
    浏览(48)
  • FFmpeg开发笔记(三)FFmpeg的可执行程序介绍

    ​  外界对于FFmpeg主要有两种使用途径,一种是在命令行运行FFmpeg的可执行程序,该方式适合没什么特殊要求的普通场景;另一种是通过代码调用FFmpeg的动态链接库,由于开发者可以在C代码中编排个性化的逻辑,因此该方式适合厂商专用的特制场景。更多详细的FFmpeg开发知识

    2024年03月09日
    浏览(39)
  • ffmpeg 开发笔记

    FFmpeg音视频处理 - 知乎 通过python实时生成音视频数据并通过ffmpeg推送和混流 - 知乎 直播常用 FFmpeg ffplay 命令 - 知乎 音视频 FFMPEG 滤镜使用 - 知乎  官网: ffmpeg Documentation

    2024年02月10日
    浏览(31)
  • FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码

    ​ 学习FFmpeg的时候,经常要到GitHub下载各种开源代码,比如FFmpeg的源码页面位于https://github.com/FFmpeg/FFmpeg。然而国内访问GitHub很不稳定,经常打不开该网站,比如在命令行执行下面的ping命令。 上面的ping结果如下所示,可见默认解析的DNS地址连接超时。 现在GitHub的DNS请求超时

    2024年03月17日
    浏览(59)
  • FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库

    ​ 《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2  交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。 登录Linux服务器(比如华为云的欧拉系统),依次执行下面的命令。 重

    2024年03月24日
    浏览(47)
  • FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。 不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpe

    2023年04月16日
    浏览(38)
  • FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的。 不过若有已经编译好的Windows版本FFmpeg开发包,那就免去了繁琐的Windows编译过程,所以直接安装已编译的FFmpeg开发包

    2024年02月01日
    浏览(87)
  • FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass

    ​ libass是一个适用于ASS和SSA格式(Advanced Substation Alpha/Substation Alpha)的字幕渲染器,支持的字幕类型包括srt、ass等,凡是涉及到给视频画面添加字幕,均需事先集成libass。 《FFmpeg开发实战:从零基础到短视频上线》一书的“7.3.1  Linux环境安装libass”介绍了如何在Linux环境给

    2024年04月27日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包