- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
不管是传统互联网还是移动互联网,实时数据传输都是刚需,比如以QQ、微信为代表的即时通信工具,能够实时传输文本和图片。其中一对一的图文通信叫做私聊,多对多的图文通信叫做群聊。
除了常见的图文即时通信,还有实时音视频通信,比如一对一的音频通话、一对一的视频通话等等,此时可采用WebRTC技术,有关WebRTC的编程开发及其项目实战参见《Android Studio开发实战:从零基础到App上线(第3版)》的第20章“20.2 给App集成WebRTC”。 但是一对多的在线直播采用WebRTC技术就不太合适了,因为WebRTC只管打洞把双方的网络打通,不考虑综合负载。一旦连接WebRTC的设备多起来,整个WebRTC网络就会瘫痪。那么一对多的在线直播就要考虑部署独立的流媒体服务器,通过专门的流媒体传输协议,处理媒体源的音视频格式转换,以及音频流和视频流的数据分发工作。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书.
常见的流媒体传输协议主要有下面四类:RTSP协议、RTMP协议、SRT协议和RIST协议,关于这四种协议的详细说明参见之前的文章《利用RTMP协议构建电脑与手机的直播Demo》,这里不再赘述。 总的来说,虽然SRT协议出现时间较晚,但是它的直播质量大大优于RTMP协议,今后必将成为国内直播领域主流的流媒体协议。下面就以SRT协议为例,介绍如何通过OBS Studio和SRT Streamer向流媒体服务器做SRT直播推流.
首先启动电脑上的流媒体服务器MediaMTX,具体的操作步骤详见《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”,也可参考之前的文章《详解MediaMTX的推拉流》。 接着启动电脑上的直播录制软件OBS Studio,具体的操作步骤详见之前的文章《结合OBS与MediaMTX实现SRT直播推流》。之后让OBS Studio对MediaMTX的srt地址“srt://127.0.0.1:8890?streamid=publish:live”推流,推流过程的OBS Studio录制界面如下图所示.
然后启动电脑上的流媒体播放器VLC media player,打开网络串流“srt://127.0.0.1:8890?streamid=read:live”,此时VLC media player的视频播放界面如下图所示.
结合OBS Studio的直播录制画面和VLC media player的直播观看界面,可知通过OBS Studio成功实现了SRT协议的直播功能.
首先启动云服务上的流媒体服务器SRS或者ZLMediaKit,在云服务器上部署和启动SRS或者ZLMediaKit比较麻烦,三言两语说不清楚。如果大家想弄明白如何在云服务器上操作SRS或者ZLMediaKit,可在京东自营购买《FFmpeg开发实战:从零基础到短视频上线》一书,联系作者咨询这两个流媒体服务器在云服务器上的详细运行过程。 接着启动手机上的直播录制软件SRT Streamer,具体的操作步骤详见之前的文章《使用SRT Streamer开启APP直播推流》。SRT Streamer启动后,点击屏幕下方的“Start Live”按钮,让SRT Streamer对ZLMediaKit的srt地址“srt://124.xxx.xxx.xxx:9000?streamid=#!::r=live/test,m=publish”推流,推流过程的SRT Streamer录制界面如下图所示.
观察华为云上的ZLMediaKit日志如下,可见SRT Streamer正在向后端的流媒体服务器推送直播流:
然后启动电脑上的流媒体播放器VLC media player,打开网络串流“srt://124.xxx.xxx.xxx:9000?streamid=#!::r=live/test,m=request”,此时VLC media player的视频播放界面如下图所示.
观察华为云上的ZLMediaKit日志如下,可见VLC media player正在从后端的流媒体服务器拉取直播流:
结合SRT Streamer直播录制画面和VLC media player的直播观看界面,可知通过SRT Streamer成功实现了SRT协议的直播功能.
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。 。
最后此篇关于FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo的文章就讲到这里了,如果你想了解更多关于FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想用正则表达式解析字幕。但不匹配多行文本。 正则表达式代码: (?(\d+))\n(?([\d:,]+))[\s-{2}\>]+(?([\d:,]+))\n(?(.+|\n)) https://re
我有一个srt文件 1 00:00:07,000 --> 00:00:09,000 Time to amaze the world.. create by Hazy 2 00:00:11,000 --
我正在使用这条线: exec_push /home/production/bin/ffmpeg -i rtmp://localhost:1935/live/slot4 -codec copy -g 1
所以我知道使用 FFMPEG 你可以阅读 srt://现在我现在您也可以拍摄视频并将其仅转换为音频。 但是我们遇到的问题是 我们不知道如何只发送视频中的音频srt到icecast服务器 到 iceca
我有一个 SRT 文件,想更改各个轨道的背景颜色和透明度。这可能吗,还是我必须采用更高级的格式?这个任务甚至可以在 FFMPEG 中工作吗? 1 0:0:1,440 --> 0:0:1,970 Y1
我用ffmpeg给视频加中文字幕。并且已经安装了 libass 库。 我执行以下命令会出现错误信息 ffmpeg -i video.mp4 -vf "ass=subtitle.srt" -y out.
标题说明了我真正需要的 ATM。 基本上我已经创建了一个基于 Tesseract 和 ImageMagick 的 OCR 工具链。我已经设法使输出文本非常一致。我正在使用它对一些旧的硬字幕视频进行 O
我尝试将文件读取为字符串,我尝试将其编码为 UTF-8 但仍然失败,它在输出中返回一些奇怪的字符。 这是我读取文件的函数: private static String readFile(String
我制作了一个脚本来在我的浏览器中编辑我的字幕。不在文本编辑器等中。所以我做了所有事情,我正处于最后阶段,当我单击“保存”按钮下载我编辑的版本时,我的浏览器会按预期自动下载 SRT 文件,但是副标题是显
我正在开发一个非常简单的程序,它将接收一个文件的名称和一个数字(您想从该文件延迟多少字幕),然后将该文件另存为另一个延迟时间的文件。我的问题是如何编写一个可以改变时间的函数。 假设文件看起来像这样:
我正在用 python 编写一个小脚本,但由于我是新手,所以我被困在了一个部分:我需要从 .srt 文件中获取时间和文本。例如,来自 1 00:00:01,000 --> 00:00:04,074 S
1 00:00:00,074 --> 00:00:02,564 Previously on Breaking Bad... 2 00:00:02,663 --> 00:00:04,393 Words.
我已经搜索过了,没有找到类似的东西。 我想要实现的是创建一个简单的 PHP/js/jq 脚本,它可以从 .srt 文件中添加或减去秒数。我不确定正则表达式是我应该用来实现它还是其他东西。 用户将上传/
我知道如何通过 ffmpeg 组合视频 1.mp4 和 srt 1.srt 文档, ffmpeg -i 1.mp4 -i 1.srt -map 0 -map 1 -c copy -crf 23 vid
我正在尝试显示 .srt 文件中的字幕。 (适用于安卓 4.1+)设备中同时存在mp4文件和srt文件。 public class MainActivity extends Activity impl
我是新手,我需要将 Srt(字幕文件)分成多个 block 。 例如:如果我有一个视频的字幕文件(60 分钟)。然后将字幕文件分割成6个字幕文件,每个字幕文件10分钟。 即 6 X 10 = 60 分
我一直在研究java上的字幕系统。可以保存正常的 .srt 文件并且字幕显示正常。我希望字幕具有不同的属性,例如 diff 字体/颜色/大小,所有这些属性都未编码在普通 .srt 中,该文件必须保存为
我接到了一项任务,要从如下所示的 txt 文件中读取模拟进程。 ID: 35; Arrival_Time: 0; Total_Exec_Time: 4; ID: 65; Arrival_Time: 2
Android 的 MediaPlayer 是否支持 SRT 字幕?我试图将 SRT 文件放在与视频文件相同的目录中并命名为相同的文件(当然除了扩展名),但没有任何运气让它们显示。有什么想法和建议吗?
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我是一名优秀的程序员,十分优秀!