如何使用 FFmpeg 生成多分辨率 HLS 进行直播 [关闭]

2023-11-27

请注意,SRS 支持为特定分辨率生成单独的 m3u8 文件。 SRS 是否还支持为多种分辨率和比特率场景生成额外的主 m3u8 文件?

所需的母版 m3u8 示例:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=2340800,RESOLUTION=960x540,CODECS=“avc1.4d401f,mp4a.40.2”
index_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1170400,RESOLUTION=480x270,CODECS=“avc1.4d4015,mp4a.40.2"
index_1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=677600,RESOLUTION=480x270,CODECS=“avc1.4d4015,mp4a.40.2”
index_2.m3u8

请使用FFmpeg生成多个HLS:

ffmpeg -f flv -i "rtmp://server/live/livestream" \
  -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 \
  -c:v libx264 -crf 22 -c:a aac -ar 44100 \
  -filter:v:0 scale=w=480:h=360  -maxrate:v:0 600k -b:a:0 500k \
  -filter:v:1 scale=w=640:h=480  -maxrate:v:1 1500k -b:a:1 1000k \
  -filter:v:2 scale=w=1280:h=720 -maxrate:v:2 3000k -b:a:2 2000k \
  -var_stream_map "v:0,a:0,name:360p v:1,a:1,name:480p v:2,a:2,name:720p" \
  -preset fast -hls_list_size 10 -threads 0 -f hls \
  -hls_time 3 -hls_flags independent_segments \
  -master_pl_name "livestream.m3u8" \
  -y "livestream-%v.m3u8"

注意:您应该在一个 FFmpeg 进程中使用过滤器,而不是通过多个 FFmpeg 进程将 RTMP 转换为 HLS。 FFmpeg 保持多个分辨率与 gop 对齐,以允许用户在不同的流之间切换。

由FFmpeg生成的m3u8母版:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=1210000,RESOLUTION=480x360,CODECS="avc1.640015,mp4a.40.2"
livestream-360p.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=2283600,RESOLUTION=640x480,CODECS="avc1.64001e,mp4a.40.2"
livestream-480p.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=3933600,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
livestream-720p.m3u8

详细请阅读here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 FFmpeg 生成多分辨率 HLS 进行直播 [关闭] 的相关文章

  • Python JS逆向篇(三)

    Python JS逆向篇 三 逆向z参数 js实现 py实现 实战 接口1 接口2 逆向主题 解析出网址里视频下的m3u8链接 注 文章所涉及内容只做学习参考交流 不做除此之外的任何其它用途 新手入门级 参考B站视频系列教程 https w
  • SRS服务器搭建以及展现配置说明

    对于企业而言 数字化建设是一项全面的 系统的工程 不仅仅只是部署几套软件 实现办公自动化而已 尤其是大型企业 数字化的建设往往涉及到了服务器 硬件 软件 网络等一系列内容 如门禁系统和人力 认证等系统集成 实现人脸识别 自动打卡等 监控系统
  • m3u8加密文件原理及下载脚本

    一 加密ts文件解密 EXTM3U EXT X VERSION 3 EXT X MEDIA SEQUENCE 0 EXT X ALLOW CACHE YES EXT X TARGETDURATION 13 EXT X KEY METHOD
  • ffmpeg的使用

    目录 ffmpeg的下载 配置 下载 版本说明 环境变量配置 ffmpeg处理m3u8 ts的常用命令 ffmpeg是一个十分强大的音视频处理工具 提供转码 播放等基础功能 功能十分全面 强大 但命令繁多复杂 通常不直接使用 而是集成在带G
  • 浏览器访问.m3u8文件

    浏览器播放m3u8文件
  • Android 2.2 HTTP 渐进式流媒体 = HTTP 直播流媒体吗?

    Stagefright 媒体框架 Android 2 2 支持 HTTP 渐进式流式传输 那是什么意思 IE 这是HTTP Live Streaming协议的实现吗 如何在 Android 上使用 HTTP Live Streaming 我
  • 使用 Node JS 进行 HLS 流式传输

    我正在尝试使用 node js 流式传输 HLS 内容 但不知怎的 它不起作用 如果有人帮助我 那将会有很大的帮助 问题 尝试从 node js 提供 HLS 内容 不是直播 而是一组 ts 文件和 m3u8 播放列表 或者换句话说 VOD
  • 为什么某些互联网音频流需要更长的时间才能在 Samsung S3 上开始播放?

    我们正在经历与这里提到的几乎完全相反的情况 为什么 Android 的 MediaPlayer 需要这么长时间才能准备一些直播流进行播放 我测试了多个流 但特别是两个 1 http usa8 vn mixstream net 8138 采样
  • AVPlayer 停止在在线模式下播放 AES 加密的离线 HLS 视频

    我编写了一个代码来下载 HLS 视频并在离线模式下播放 此代码适用于编码视频 现在我有一个 AES 加密的视频 我们为其提供了自定义加密密钥 下载 AES 加密的 HLS 视频后 我使用下面给出的代码来提供用于解密视频的密钥 BOOL re
  • 如何将视频从 iOS 设备发送到服务器?

    我必须将视频从 iPhone 实时发送到服务器 我创建捕获会话并使用 AVCaptureMovieFileOutput NSError error nil captureSession AVCaptureSession alloc init
  • Chromecast 支持从 Reddit 投射视频吗? (HLS 和 Dash 视频)

    使用 URL 调用代理http 192 168 xx xx 8080 3hyw7hwoajn21 HLSPlaylist m3u8 http 192 168 xx xx 8080 3hyw7hwoajn21 HLSPlaylist m3u8
  • 为什么 iPhone 请求 .m3u8 播放列表文件 4 次?

    为什么 iPhone 请求 m3u8 播放列表文件 4 次 并且 是否可以让它仅请求一次 请求执行如下 第一个是完整的请求 第二个是字节范围请求 范围为0 1 第三个是完整文件的另一个字节范围请求 最终的请求又是一个完整的请求 注意 iPh
  • iOS 上的 HTML5 MSE

    我正在尝试使用 Chrome Mobile 让 hls js 在 iOS 上工作 但我注意到 Chrome Mobile 不支持 MediaSourceExtensions 这绝对是必要的 iOS 是否支持 MSE Chrome 移动版 F
  • 有没有办法在桌面 Chrome/HTML5 播放器中添加对 HLS 的支持?

    桌面版 Chrome 和 FF 不支持 HLS 我知道有一个插件可以为 flash 添加 HLS 支持 是否有这样的插件或技术可用于在尚不支持 HLS 的浏览器上增强 HTML5 这不仅是可能的 而且已经被做过无数次了 有多种开源和闭源解决
  • 使用 HTTP Live Streaming 替代音轨

    当 HLS 流准备好播放时 我正在生成可用音轨的列表 我可以很好地访问可用的音轨 但我很难为每个轨道提取正确的 标题 我在用着苹果的测试流 https devimages apple com edgekey net streaming ex
  • 如何在 Exoplayer 上显示 HLS 嵌入字幕

    如何使用 Exoplayer ExoMedia 或其他播放器启用并选择 HLS 格式的 Vimeo 视频中嵌入的不同字幕 在 iOS 中 同一个视频已经提供了原生字幕选项 但在 Android 中我找不到实现它的方法 我在这里的答案看起来很
  • 实现 AVAssetDownloadURLSession 下载 HLS 流时出错

    我正在尝试为流应用程序实现离线模式 目标是能够在用户的设备上下载 HLS 流 以便即使用户离线时也可以观看流 我最近偶然发现本教程 https developer apple com library content documentatio
  • 在 iOS SDK 中手动选择视频质量的 HLS 流媒体 - AVPlayer?

    我们已经使用 AVPlayer 实现了 HLS 流媒体 fileURL NSURL URLWithString https devstreaming cdn apple com videos streaming examples img b
  • 使用媒体播放器的 Android http 直播流媒体 URL

    我正在尝试播放一个网址 但它没有播放 我使用的代码如下 logcat 显示 Mediaplayer 错误 1 1002 开始状态为 0 且错误 38 0 为什么 我哪里出错了 你能帮我看看怎么玩吗 import java io IOExce
  • Apple HLS 中的 PES 数据包内的访问单元如何对齐?

    Apple 是否指定了这一点 PES 数据包有效负载中应放置多少个访问单元 另外 我想知道 PES 数据包中存在哪些前缀起始代码 如果有 我认为访问单元中第一个 NAL 单元之前的单元是无用的 不能放置 正确的 我想知道它是如何在 HLS

随机推荐

  • 在客户端定义传输类型

    我需要对 IE 使用 jsonp polling 对 Firefox 使用 xhr polling 所以我 尝试在客户端定义传输类型 如下所示 if Firefox s d d test navigator userAgent test f
  • 在 T 和 UnsafeCell 之间转换是否安全且定义的行为?

    A 最近的问题正在寻找构建自我参照结构的能力 在讨论该问题的可能答案时 一个可能的答案涉及使用UnsafeCell用于内部可变性 然后通过 丢弃 可变性transmute 这是这种想法的实际应用的一个小例子 我对这个例子本身并不很感兴趣 但
  • 查找字符串是否混合大小写的最有效方法

    假设我有很长的字符串 并且我想查看某列是 allLower allUpper 还是混合大小写 例如下面的列 text hello New items iTem12 3nXy 文本将是mixedCase 确定这一点的简单算法可能是 int i
  • WPF 应用程序中的图像显示比在外部查看器中查看时要小

    当我在 WPF 应用程序中显示 JPEG 使用以下代码 时 它显示的大小明显小于在 Windows 图片查看器中以实际大小打开 JPEG 的情况 我在运行时深入研究了 ImageSource 的属性 我的图像具有 DPI 为 219 高度为
  • 如何在 pyinstaller 中添加静态(html、css、js 等)文件以创建独立的 exe 文件?

    我在用着QtWebEngineWidgets QtWebChannel创建 PyQt5 应用程序 它使用 HTML CSS JavaScript 当我们以一般方式运行时 即运行正常 python main py 导入 HTML 如下 cur
  • 如何创建一个支持sql转换的方法?

    我想使用我在查询中创建的方法 因为我需要实现一种特殊类型的过滤器 return manager Clients SelectAll Where cli gt cli Name SatisfyFilter filter Name cli La
  • 录制的视频方向错误

    我在用着mCamera setDisplayOrientation 90 旋转相机 这成功地改变了相机预览 但没有改变实际的 相机 因此录制的视频仍然是横向的 他们有办法做到这一点吗 这可能对你有帮助 mMediaRecorder setO
  • 前向填充 python pandas 数据框中除最后一个值之外的所有值

    我在 pandas 中有一个数据框 其中有几列我想转发填充值 目前我正在做 columns a b c for column in columns df column fillna method ffill inplace True 但是由
  • Timepicker Updatesourcetrigger=propertychanged 不更改值

    我在 Windows 窗体中托管 WPF 用户控件 在 wpf 用户控件中 我使用 wpfToolkit extended 中的时间选择器 如果我使用向上或向下键或仅在文本字段中输入时间 则尽管我使用的是 Updatesourcetrigg
  • python - 增加数组大小并将新元素初始化为零

    我有一个大小为 2 x 2 的数组 我想将大小更改为 3 x 4 A 1 2 2 3 A new 1 2 0 0 2 3 0 0 0 0 0 0 我尝试了 3 个形状 但没有成功 并且追加只能追加行 不能追加列 我不想遍历每一行来添加列 有
  • 如何使用 asp.net 将 .docx 转换为 html?

    Word 2007 将其文档保存为 docx 格式 这实际上是一个 zip 文件 其中包含大量内容 包括带有文档的 xml 文件 我希望能够获取 docx 文件并将其放入我的 asp net Web 应用程序中的文件夹中 并让代码打开 do
  • 检测两个div是否重叠[重复]

    这个问题在这里已经有答案了 可能的重复 jquery如何检测两个div是否接触 我花了很多时间试图弄清楚如何检测两个 div 是否重叠 我尝试了 gamequery 插件并像这样使用它 checkform collision checkfo
  • Android 上运行时的重复视图

    我已经为活动创建了布局文件 在此布局中 我创建了一个带有文本视图和编辑文本的 LinearLayout 现在我想创建额外的 LinearLayout 其外观和包含与原始 LinearLayout 完全相同的视图 但具有不同的文本 我还想在运
  • 批量更新Mongodb中匹配子文档的数组

    我正在 Mongodb 3 6 上运行 以下是我的文档的结构 其中存储产品列表的月度费率信息 id 12345 class com example ProductRates rates productId NumberInt 1234 ra
  • 如何在Qt中发出跨线程信号?

    Qt 文档指出信号和槽可以direct queued and auto 它还指出 如果拥有插槽的对象 生活 在与拥有信号的对象不同的线程中 则发出此类信号将像发布消息一样 信号发出将立即返回 并且将在目标线程的事件循环中调用插槽方法 不幸的
  • 在设备上记录数据并检索日志

    在 Xcode 中进行调试构建时 无论我使用的是模拟器还是实际设备 NSLog printf fprintf assert 和 NSAssert 语句都会出现在控制台上 如果我现在在设备上运行一个发布版本 假设我发送了一个测试飞行版本并在我
  • 有没有办法在 jQuery 中获得类似 JSONP 的 XML 获取?

    对于我正在开发的 Web 服务 我希望我的嵌入式代码 在客户端站点上 从驻留在我的域中的服务器脚本中获取 XML 文件 由于这是一个跨域请求 我想使用 JSONP 因为它似乎是此类 API 的事实上的标准 然而 对于我的应用程序来说 使用
  • Python OpenCV 从字节字符串加载图像

    我正在尝试像 PHP 函数一样从字符串加载图像imagecreatefromstring 我怎样才能做到这一点 我有 MySQL blob 字段图像 我在用着MySQLdb并且不想创建临时文件来处理 PyOpenCV 中的图像 注意 需要
  • 带选择列表的 Symfony 2 表单

    我如何使用 Symfony 2 中数据库表中的值创建选择列表 我有 2 个实体 Student and 课堂具有多对一关系 我需要创建一个包含以下字段的表单 name surname age 课堂 从可用课程中选择列表 In my 学生表格
  • 如何使用 FFmpeg 生成多分辨率 HLS 进行直播 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 请注意 SRS 支持为特定分辨率生成单独的 m3u8 文件 SRS 是否还支持为多种分辨率和比特率场景生成额外的主 m3u8 文件 所需的母版 m3u8 示例 EXTM3U EXT