場景ide
調用FFmpeg接口將AVPacket生成HLS切片文件,生成的切片時間不許確,例如:函數
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:443
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:53.000000,
index0.ts
#EXTINF:153.000000,
index1.ts.net
目標:生成的切片大小差很少,而且播放進度條上顯示的時間是準確的,目前在現場發現時間顯示徹底不正確,除非完整播放。以前剛剛部署系統的時候,時間是正常的。視頻
排查過程blog
1)警告:[hls] pkt.duration = 0, maybe the hls segment duration will not precise接口
調用FFmpeg接口生成HLS切片文件,控制檯輸出警告信息。查看代碼,發現AVPacket結構體中的duration變量沒有賦值,致使該警告提示,因此添加了duration的賦值,可是因爲理解不到位,所以賦值的是一個錯誤值,致使切片時間不許確ci
2)方法一再也不賦值duration解決問題部署
在這裏生成的切片時間以及切片的大小可能不同,這是跟GOP序列有關,切片保存的數據都是GOP的整數倍,每個視頻的GOP不同,獲得的大小也不同。it
3)av_dict_set_int(&opts, "hls_time", 60, 0); io
該函數設置了分片的時間,60秒產生一個切片文件
參考https://blog.csdn.net/u010168781/article/details/107305193