【问题标题】:FFmpeg HLS single file extension and format by byte rangesFFmpeg HLS 单个文件扩展名和按字节范围格式化
【发布时间】:2019-10-07 21:36:51
【问题描述】:

我正在尝试制作一个 5 分钟的视频文件并使用此命令生成 单个文件 HLS 播放列表

ffmpeg -i video.mp4 -codec copy -bsf:v h264_mp4toannexb -hls_time 4 -hls_flags single_file -hls_list_size 0 video.m3u8

像这样生成一个播放列表:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.338667,
#EXT-X-BYTERANGE:535424@0
video.ts
#EXTINF:5.338667,
#EXT-X-BYTERANGE:316592@535424
video.ts
#EXTINF:5.338667,
#EXT-X-BYTERANGE:285384@852016
video.ts
#EXT-X-ENDLIST

我想要的:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.338667,
#EXT-X-BYTERANGE:535424@0
video-0-535424.txt
#EXTINF:5.338667,
#EXT-X-BYTERANGE:316592@535424
video-535424-316592.txt
#EXTINF:5.338667,
#EXT-X-BYTERANGE:285384@852016
video-852016-285384.txt
#EXT-X-ENDLIST

或者:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.338667,
#EXT-X-BYTERANGE:535424@0
video.txt#0-535424
#EXTINF:5.338667,
#EXT-X-BYTERANGE:316592@535424
video.txt#535424-316592
#EXTINF:5.338667,
#EXT-X-BYTERANGE:285384@852016
video.txt#852016-285384
#EXT-X-ENDLIST

我仍然想转换为单个 .ts/或其他任何东西,只是想编辑它在 video.m3u8 中的书写方式。只有ffmpeg可以吗?如果是这样,怎么办?或者是否有任何 js/nodejs 模块可以将 video.m3u8 重写为 video.txt#range-here

【问题讨论】:

  • txt 文件在你的例子中做了什么?
  • 我想使用 cloudflare 缓存进行快速加载,但它只缓存某种类型的文件,例如 js/css etc txt 可以是 html 或其他任何内容
  • 您是在问是否可以更改文件扩展名?如仍然写一个 TS 格式的文件,但使用 .txt 名称?
  • 所以您只是希望拥有一个带有txt 扩展名的TS 文件?
  • 抱歉回复晚了,请问能否把video.m3u8中的video.ts改成video.txt 。无需更改ffmpeg输出文件的文件扩展名

标签: javascript node.js ffmpeg http-live-streaming


【解决方案1】:

所以你可以做的是,你可以使用m3u8-parser解析.m3u8文件

您需要解析 .m3u8 文件,提取每一行并检查该行是否包含 .ts。如果包含,请将其替换为 .txt。这就是我在项目中所做的 hack。

【讨论】:

  • 谢谢,我试试看!
猜你喜欢
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
相关资源
最近更新 更多