【发布时间】:2019-08-24 02:25:50
【问题描述】:
我正在将一个简单的 mp4 视频转换为 hls,但我需要这些片段的大小大约为特定大小
我研究发现:
-hls_segment_size 17000000
17000000 字节(~17MB)
这会创建近似大小的 TS 文件,(不必是精确大小)
ffmpeg.exe -i "in.mp4" -vcodec copy -acodec aac -hls_list_size 0 -hls_segment_size 17000000 -f hls "out.m3u8"
在 m3u8 文件中创建了“#EXT-X-BYTERANGE”,这是我想要的方式
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:8.400000,
#EXT-X-BYTERANGE:1662108@0
SampleVideo_1280x720_30mb0.ts
#EXTINF:4.560000,
#EXT-X-BYTERANGE:383896@0
SampleVideo_1280x720_30mb1.ts
#EXTINF:3.120000,
#EXT-X-BYTERANGE:408712@383896
SampleVideo_1280x720_30mb1.ts
#EXTINF:5.640000,
#EXT-X-BYTERANGE:1161840@0
SampleVideo_1280x720_30mb2.ts
#EXTINF:1.880000,
#EXT-X-BYTERANGE:230864@0
SampleVideo_1280x720_30mb3.ts
#EXTINF:2.160000,
#EXT-X-BYTERANGE:330880@230864
SampleVideo_1280x720_30mb3.ts
#EXTINF:2.080000,
#EXT-X-BYTERANGE:489928@0
SampleVideo_1280x720_30mb4.ts
#EXTINF:4.400000,
#EXT-X-BYTERANGE:1564348@489928
SampleVideo_1280x720_30mb4.ts
...
看起来还可以,但是有点小问题。我正在浏览器中的播放器上进行测试,当秒数从一个片段到另一个片段时,视频会锁定声音和视频。视频中有一些非常烦人、不自然的东西。
不使用 '-hls_segment_size' 将有功能性 TS 文件,并且 m3u8 文件中没有 BYTERANGE
但是,TS 文件的大小将根据定义的秒数而定
我目前正在尝试获取一个大小接近于 15MB 到 20MB 之间设置的 ts 文件,并在 m3u8 文件中包含 BYTERANGE。
有人有什么想法吗?
这是我试图描述的问题:
http://phantsc.rf.gd/AAA/Bbb.html
恰好在视频的第二个 7 中发生“锁定”,当从一个片段转到另一个片段时会发生这种情况
【问题讨论】:
-
这对我来说似乎很难,没有人可以帮助......
-
检查您的服务器是否正确配置为处理 HTTP 范围请求。使用
hls.js的示例显示.ts文件的状态为200而不是206的响应,即使Accept-Ranges: bytes标头存在。根据Content-Length,您似乎在响应中获得了整个片段而不是所需范围。
标签: video ffmpeg http-live-streaming m3u8