easyCV
easyCV copied to clipboard
请问,通过recordPacket对mp4文件进行hls切片,切片后ts文件数量正常,但是m3u8文件里每片的时长不对
hls切片时间设置的是5s,一个29s的mp4视频,切片后,切片数量是5 正常,也能正常播放,但是m3u8文件里每片时长只有1s左右,导致播放器显示的总时长不对: #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:1 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:0.766667, out0.ts #EXTINF:0.644444, out1.ts #EXTINF:1.016667, out2.ts #EXTINF:0.416667, out3.ts #EXTINF:1.288889, out4.ts #EXT-X-ENDLIST
以下是代码 `public static void packetRecord(String inputFile, String outputFile) throws FrameGrabber.Exception, FrameRecorder.Exception {
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile);
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, 1280, 720, 2);
grabber.start();
recorder.setOption("hls_list_size", "0");
recorder.setOption("hls_time", "5");
recorder.start(grabber.getFormatContext());
AVPacket packet;
while ((packet = grabber.grabPacket()) != null) {
recorder.recordPacket(packet);
}
recorder.stop();
grabber.stop();
}`
packetRecord("F:\\beixiyan.mp4","out.m3u8");
请问该如何避免该问题,万分感谢
这个问题似乎已经在群里解决了?
@eguid 没有,还是有问题,mp4转hls,时长还是不对,1.4.3 1.4.4都有这个问题。hls转hls提示长宽比不对,即便传入源视频的长宽也会报这个问题,但是如果长宽都传0,则不会报这个问题,不过切出来的ts文件只有声音,没有画面
ok,那就是现在时间戳问题已经解决了,但是又出现了“长宽”不一致导致报错的问题,是吗? 我会检查一下看是不是类型转换的问题
时间戳的问题还存在,mp4转hls,m3u8文件里每片的时长还是有问题,小很多。
只有hls转hls才会存在长宽比不一致的问题,mp4转hls 没有长宽比不一致问题,以上问题都是使用recordPacket才出现的问题
嗯,也就是说只有再hls转hls才会出现长宽不一致的问题,MP4转hls会出现持续时间不一致的问题,但是并不影响实际播放,对吗?
是的,hls转hls会报长宽不一致的错误; MP4转hls时,转换后的m3u8文件里每片时长要比实际设置的小很多,但是切出来的ts视频文件时长是对的,在播放器里播放也正常,只是播放器显示的总时长不对,