全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2986|回复: 6

FFmpeg切片 H5ai播放 改Dplayer支持HLS

[复制链接]
发表于 2018-11-6 23:13:05 | 显示全部楼层 |阅读模式
本帖最后由 xcy1020 于 2018-11-30 21:45 编辑

一、准备:
安装FFmpeg

二、
原视频信息:
  1. Input #0, matroska,webm, from 'test.mkv':
  2.   Metadata:
  3.     title           : Test
  4.     encoder         : libebml v1.3.4 + libmatroska v1.4.5
  5.     creation_time   : 2018-11-06 06:53:47
  6.   Duration: 01:29:13.35, start: 0.000000, bitrate: 1894 kb/s
  7.     Stream #0:0: Video: h264 (High 10), yuv420p10le, 720x480 [SAR 1:1 DAR 3:2], 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
  8.     Metadata:
  9.       BPS             : 1250909
  10.       BPS-eng         : 1250909
  11.       DURATION        : 01:29:13.348000000
  12.       DURATION-eng    : 01:29:13.348000000
  13.       NUMBER_OF_FRAMES: 160440
  14.       NUMBER_OF_FRAMES-eng: 160440
  15.       NUMBER_OF_BYTES : 837069482
  16.       NUMBER_OF_BYTES-eng: 837069482
  17.       _STATISTICS_WRITING_APP: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  18.       _STATISTICS_WRITING_APP-eng: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  19.       _STATISTICS_WRITING_DATE_UTC: 2018-11-06 06:53:47
  20.       _STATISTICS_WRITING_DATE_UTC-eng: 2018-11-06 06:53:47
  21.       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  22.       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  23.     Stream #0:1(chi): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
  24.     Metadata:
  25.       title           : Cantonese.粤语
  26.       BPS             : 320000
  27.       BPS-eng         : 320000
  28.       DURATION        : 01:29:13.344000000
  29.       DURATION-eng    : 01:29:13.344000000
  30.       NUMBER_OF_FRAMES: 250938
  31.       NUMBER_OF_FRAMES-eng: 250938
  32.       NUMBER_OF_BYTES : 214133761
  33.       NUMBER_OF_BYTES-eng: 214133761
  34.       _STATISTICS_WRITING_APP: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  35.       _STATISTICS_WRITING_APP-eng: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  36.       _STATISTICS_WRITING_DATE_UTC: 2018-11-06 06:53:47
  37.       _STATISTICS_WRITING_DATE_UTC-eng: 2018-11-06 06:53:47
  38.       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  39.       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  40.     Stream #0:2(chi): Audio: aac (LC), 48000 Hz, stereo, fltp
  41.     Metadata:
  42.       title           : Mandarin.国语
  43.       BPS             : 320000
  44.       BPS-eng         : 320000
  45.       DURATION        : 01:29:13.344000000
  46.       DURATION-eng    : 01:29:13.344000000
  47.       NUMBER_OF_FRAMES: 250938
  48.       NUMBER_OF_FRAMES-eng: 250938
  49.       NUMBER_OF_BYTES : 214133761
  50.       NUMBER_OF_BYTES-eng: 214133761
  51.       _STATISTICS_WRITING_APP: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  52.       _STATISTICS_WRITING_APP-eng: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  53.       _STATISTICS_WRITING_DATE_UTC: 2018-11-06 06:53:47
  54.       _STATISTICS_WRITING_DATE_UTC-eng: 2018-11-06 06:53:47
  55.       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  56.       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  57.     Stream #0:3(chi): Subtitle: subrip (default)
  58.     Metadata:
  59.       title           : chs.简体中文
  60.       BPS             : 46
  61.       BPS-eng         : 46
  62.       DURATION        : 01:28:30.782000000
  63.       DURATION-eng    : 01:28:30.782000000
  64.       NUMBER_OF_FRAMES: 933
  65.       NUMBER_OF_FRAMES-eng: 933
  66.       NUMBER_OF_BYTES : 30850
  67.       NUMBER_OF_BYTES-eng: 30850
  68.       _STATISTICS_WRITING_APP: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  69.       _STATISTICS_WRITING_APP-eng: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  70.       _STATISTICS_WRITING_DATE_UTC: 2018-11-06 06:53:47
  71.       _STATISTICS_WRITING_DATE_UTC-eng: 2018-11-06 06:53:47
  72.       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  73.       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  74.     Stream #0:4(eng): Subtitle: subrip
  75.     Metadata:
  76.       title           : eng.English
  77.       BPS             : 30
  78.       BPS-eng         : 30
  79.       DURATION        : 01:28:30.782000000
  80.       DURATION-eng    : 01:28:30.782000000
  81.       NUMBER_OF_FRAMES: 905
  82.       NUMBER_OF_FRAMES-eng: 905
  83.       NUMBER_OF_BYTES : 20335
  84.       NUMBER_OF_BYTES-eng: 20335
  85.       _STATISTICS_WRITING_APP: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  86.       _STATISTICS_WRITING_APP-eng: mkvmerge v9.5.0 ('Quiet Fire') 32bit
  87.       _STATISTICS_WRITING_DATE_UTC: 2018-11-06 06:53:47
  88.       _STATISTICS_WRITING_DATE_UTC-eng: 2018-11-06 06:53:47
  89.       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  90.       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
复制代码

生成视频和字幕1(中文)
  1. ffmpeg -i test.mkv -c:v copy -map 0:0 -bsf:v h264_mp4toannexb -scodec webvtt -map 0:3 -an -f hls -hls_time 5 -hls_list_size 0 test/video-only/video-only.m3u8
复制代码


生成视频和字幕2(英文)
  1. ffmpeg -i test.mkv -c:v copy -map 0:0 -bsf:v h264_mp4toannexb -scodec webvtt -map 0:4 -an -f hls -hls_time 5 -hls_list_size 0 test/video-only/video-only.m3u8
复制代码


生成音频:
第一条(粤语):
  1. ffmpeg -i test.mkv -c:a copy -map 0:1 -bsf:v h264_mp4toannexb -vn -sn -f hls -hls_time 5 -hls_list_size 0 test/audio/cantonese/cantonese.m3u8
复制代码


第二条(国语):
  1. ffmpeg -i test.mkv -c:a copy -map 0:2 -bsf:v h264_mp4toannexb -vn -sn -f hls -hls_time 5 -hls_list_size 0 test/audio/cantonese/cantonese.m3u8
复制代码


三、
手动创建Master Playlist:

  1. #EXTM3U
  2. #EXT-X-VERSION:7
  3. #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="h264",NAME="MainVideo", DEFAULT=YES,URI="https://example.com/test/video-only/video-only.m3u8"
  4. #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Mandarin", DEFAULT=NO,LANGUAGE="zh",CHANNELS="2",CHARACTERISTICS="public.accessibility.describes-video",URI="https://example.com/test/audio/mandarin/mandarin.m3u8"
  5. #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Cantonese", DEFAULT=YES,LANGUAGE="zh",CHANNELS="2",CHARACTERISTICS="public.accessibility.describes-video",URI="https://example.com/test/audio/cantonese/cantonese.m3u8"
  6. #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="ChineseSimple",LANGUAGE="zh",DEFAULT=YES,FORCED=YES,CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound",URI="https://example.com/test/subs/chs/chs_vtt.m3u8"
  7. #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",LANGUAGE="en",DEFAULT=NO,FORCED=NO,CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound",URI="https://example.com/test/subs/eng/eng_vtt.m3u8"

  8. #EXT-X-STREAM-INF:BANDWIDTH=76800,CODECS="mp4a.40.2,avc1.64000c",VIDEO="h264",AUDIO="aac",SUBTITLES="subs",RESOLUTION=720x480,FRAME-RATE=29.97
  9. https://example.com/test/video-only/video-only.m3u8
复制代码






注:
1.字幕及M3U8文件编码必须UTF-8
2.EXT-X-STREAM-INF中的BANDWIDTH没看懂怎么算 希望有大佬解疑答惑
3.Dplayer开启了字幕功能,字幕只支持WebVTT格式,可以用FFmpeg转
  1. ffmpeg -i test.srt -scodec webvtt test.vtt
复制代码

如播放test.m3u8, 同目录下添加名为test.m3u8.vtt的WebVTT格式字幕即可
test.mp4则需添加test.mp4.vtt字幕。


参考文档:
1.RFC 8216 https://datatracker.ietf.org/doc/rfc8216/
2.RFC 8216 https://tools.ietf.org/html/rfc8216
3.HLS(m3u8) 草案 译 (待修订) https://blog.csdn.net/biezhihua/article/details/52161800
4.使用ffmpeg搭建HLS直播系统 https://**blogs.com/tocy/p/using-ffmpeg-build-hls-live-system.html



文件基于大佬@冻猫 原贴地址:https://www.hostloc.com/forum.php?mod=viewthread&tid=438265&highlight=dplayer
H5ai_Dplayer_HLS.zip (293.3 KB, 下载次数: 117)

后记:
貌似这个兼容性,良莠不齐,Chrome支持,Firefox不支持,手机端Chrome和Firefox均只有音频,没有视频,字幕不加载,可能是自己的Master Playlist写得不好,技术有限。
发表于 2018-11-7 02:04:10 | 显示全部楼层
感谢大佬分享
发表于 2018-11-7 09:35:46 | 显示全部楼层
萌新 前来 支持 技术 大佬!!
 楼主| 发表于 2018-11-7 11:20:22 | 显示全部楼层

感谢大佬支持
发表于 2018-11-7 11:33:50 来自手机 | 显示全部楼层
想办法把ass字幕加到h5ai里的dplayer才是要紧的事
 楼主| 发表于 2018-11-7 13:14:53 来自手机 | 显示全部楼层
Skywalker 发表于 2018-11-7 11:33
想办法把ass字幕加到h5ai里的dplayer才是要紧的事

这个只能等dplayer作者了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-28 07:01 , Processed in 0.071475 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表