shaka-project / shaka-packager

A media packaging and development framework for VOD and Live DASH and HLS applications, supporting Common Encryption for Widevine and other DRM Systems.
https://shaka-project.github.io/shaka-packager/
Other
1.96k stars 505 forks source link

Players stop reproducing the segments after some time. #1331

Closed R31N4LD0 closed 5 months ago

R31N4LD0 commented 8 months ago

System info

Operating System: Ubuntu 22.04 Shaka Packager Version: v2.6.1

Issue and steps to reproduce the problem

Packager Command: packager 'in=udp://127.0.0.1:{sink_port},stream_selector=0,init_segment={folder_path}/video_init.mp4,segment_template={folderpath}/video$Time$.m4s' --hls_playlist_type EVENT --hls_master_playlist_output {manifest_path} --fragment_duration 5 --strip_parameter_set_nalus=false"

Extra steps to reproduce the problem? (1) After the manifest been published, I've tried to play with many hls players (2) During passed some time, the player stops reproduce the segments and an error is through in the console (3) I've tested also with hls.js demo pages (https://hlsjs.video-dev.org/demo/ and https://hlsjs-dev.video-dev.org/demo/) and both of them has the same error:

134.102 | Buffer append error
134.103 | A media error occurred: bufferAppendError

What is the expected result? Play all the segments without any problem

What happens instead? The player stops the playback between the same segments (at 2'02")

Files examples:

Manifest (master.m3u8):

#EXTM3U
## Generated with https://github.com/google/shaka-packager version v2.6.1-634af65-release

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-STREAM-INF:BANDWIDTH=2088240,AVERAGE-BANDWIDTH=718167,CODECS="avc1.42c028",RESOLUTION=1920x1080,FRAME-RATE=30.000,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
main.m3u8

#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=473712,AVERAGE-BANDWIDTH=138224,CODECS="avc1.42c028",RESOLUTION=1920x1080,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE,URI="iframe.m3u8"

main.m3u8

#EXTM3U
#EXT-X-VERSION:6
## Generated with https://github.com/google/shaka-packager version v2.6.1-634af65-release
#EXT-X-TARGETDURATION:19
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="init.mp4"
#EXTINF:2.000,
segments/1.m4s
#EXTINF:2.000,
segments/2.m4s
#EXTINF:2.000,
segments/3.m4s
#EXTINF:2.000,
segments/4.m4s
#EXTINF:2.000,
segments/5.m4s
#EXTINF:2.000,
segments/6.m4s
#EXTINF:2.000,
segments/7.m4s
#EXTINF:2.000,
segments/8.m4s
#EXTINF:2.000,
segments/9.m4s
#EXTINF:2.000,
segments/10.m4s
#EXTINF:2.000,
segments/11.m4s
#EXTINF:2.000,
segments/12.m4s
#EXTINF:2.000,
segments/13.m4s
#EXTINF:2.000,
segments/14.m4s
#EXTINF:2.000,
segments/15.m4s
#EXTINF:2.000,
segments/16.m4s
#EXTINF:2.000,
segments/17.m4s
#EXTINF:2.000,
segments/18.m4s
#EXTINF:2.000,
segments/19.m4s
#EXTINF:2.000,
segments/20.m4s
#EXTINF:2.000,
segments/21.m4s
#EXTINF:2.000,
segments/22.m4s
#EXTINF:2.000,
segments/23.m4s
#EXTINF:2.000,
segments/24.m4s
#EXTINF:2.000,
segments/25.m4s
#EXTINF:2.000,
segments/26.m4s
#EXTINF:2.000,
segments/27.m4s
#EXTINF:2.000,
segments/28.m4s
#EXTINF:2.000,
segments/29.m4s
#EXTINF:2.000,
segments/30.m4s
#EXTINF:2.000,
segments/31.m4s
#EXTINF:2.000,
segments/32.m4s
#EXTINF:2.000,
segments/33.m4s
#EXTINF:2.000,
segments/34.m4s
#EXTINF:2.000,
segments/35.m4s
#EXTINF:2.000,
segments/36.m4s
#EXTINF:2.000,
segments/37.m4s
#EXTINF:2.000,
segments/38.m4s
#EXTINF:2.000,
segments/39.m4s
#EXTINF:2.000,
segments/40.m4s
#EXTINF:2.000,
segments/41.m4s
#EXTINF:10.767,
segments/42.m4s
#EXTINF:10.000,
segments/43.m4s
#EXTINF:10.000,
segments/44.m4s
#EXTINF:10.000,
segments/45.m4s
#EXTINF:10.000,
segments/46.m4s
#EXTINF:10.000,
segments/47.m4s
#EXTINF:7.600,
segments/48.m4s
#EXTINF:18.920,
segments/49.m4s
#EXTINF:10.035,
segments/50.m4s
#EXTINF:10.000,
segments/51.m4s
#EXTINF:10.000,
segments/52.m4s
#EXTINF:10.000,
segments/53.m4s
#EXTINF:10.000,
segments/54.m4s
#EXTINF:10.000,
segments/55.m4s
#EXTINF:7.520,
segments/56.m4s
#EXTINF:13.119,
segments/57.m4s
#EXTINF:1.000,
segments/58.m4s
#EXTINF:2.000,
segments/59.m4s
#EXTINF:1.000,
segments/60.m4s
#EXTINF:4.040,
segments/61.m4s
#EXTINF:2.000,
segments/62.m4s
#EXTINF:2.000,
segments/63.m4s
#EXTINF:2.000,
segments/64.m4s
#EXTINF:2.000,
segments/65.m4s
#EXTINF:2.000,
segments/66.m4s
#EXTINF:2.000,
segments/67.m4s
#EXTINF:2.000,
segments/68.m4s
#EXTINF:2.000,
segments/69.m4s
#EXTINF:2.000,
segments/70.m4s
#EXTINF:2.000,
segments/71.m4s
#EXTINF:2.000,
segments/72.m4s
#EXTINF:2.000,
segments/73.m4s
#EXTINF:2.000,
segments/74.m4s
#EXTINF:2.000,
segments/75.m4s
#EXTINF:2.000,
segments/76.m4s
#EXTINF:2.000,
segments/77.m4s
#EXTINF:2.000,
segments/78.m4s
#EXTINF:2.000,
segments/79.m4s
#EXTINF:2.000,
segments/80.m4s
#EXTINF:2.000,
segments/81.m4s
#EXTINF:2.000,
segments/82.m4s
#EXTINF:2.000,
segments/83.m4s
#EXTINF:2.000,
segments/84.m4s
#EXTINF:2.000,
segments/85.m4s
#EXTINF:2.000,
segments/86.m4s
#EXTINF:2.000,
segments/87.m4s
#EXTINF:2.000,
segments/88.m4s
#EXTINF:2.000,
segments/89.m4s
#EXTINF:2.000,
segments/90.m4s
#EXTINF:2.000,
segments/91.m4s
#EXTINF:2.000,
segments/92.m4s
#EXTINF:2.000,
segments/93.m4s
#EXTINF:2.000,
segments/94.m4s
#EXTINF:2.000,
segments/95.m4s
#EXTINF:2.000,
segments/96.m4s
#EXTINF:2.000,
segments/97.m4s
#EXTINF:2.000,
segments/98.m4s
#EXTINF:2.000,
segments/99.m4s
#EXTINF:2.000,
segments/100.m4s
#EXTINF:2.000,
segments/101.m4s
#EXTINF:2.000,
segments/102.m4s
#EXTINF:2.000,
segments/103.m4s
#EXTINF:2.000,
segments/104.m4s
#EXTINF:2.000,
segments/105.m4s
#EXTINF:2.000,
segments/106.m4s
#EXTINF:2.000,
segments/107.m4s
#EXTINF:2.000,
segments/108.m4s
#EXTINF:2.000,
segments/109.m4s
#EXTINF:2.000,
segments/110.m4s
#EXTINF:2.000,
segments/111.m4s
#EXTINF:2.000,
segments/112.m4s
#EXTINF:2.000,
segments/113.m4s
#EXTINF:2.000,
segments/114.m4s
#EXTINF:2.000,
segments/115.m4s
#EXTINF:2.000,
segments/116.m4s
#EXTINF:2.000,
segments/117.m4s
#EXTINF:2.000,
segments/118.m4s
#EXTINF:2.000,
segments/119.m4s
#EXTINF:2.000,
segments/120.m4s
#EXTINF:2.000,
segments/121.m4s
#EXTINF:2.000,
segments/122.m4s
#EXTINF:2.000,
segments/123.m4s
#EXTINF:2.000,
segments/124.m4s
#EXTINF:2.000,
segments/125.m4s
#EXTINF:2.000,
segments/126.m4s
#EXTINF:2.000,
segments/127.m4s
#EXTINF:2.000,
segments/128.m4s
#EXTINF:2.000,
segments/129.m4s
#EXTINF:2.000,
segments/130.m4s
#EXTINF:2.000,
segments/131.m4s
#EXTINF:2.000,
segments/132.m4s
#EXTINF:2.000,
segments/133.m4s
#EXTINF:2.000,
segments/134.m4s
#EXTINF:2.000,
segments/135.m4s
#EXTINF:2.000,
segments/136.m4s
#EXTINF:2.000,
segments/137.m4s
#EXTINF:2.000,
segments/138.m4s
#EXTINF:2.000,
segments/139.m4s
#EXTINF:2.000,
segments/140.m4s
#EXTINF:2.000,
segments/141.m4s
#EXTINF:2.000,
segments/142.m4s
#EXTINF:2.000,
segments/143.m4s
#EXTINF:2.000,
segments/144.m4s
#EXTINF:2.000,
segments/145.m4s
#EXTINF:2.000,
segments/146.m4s
#EXTINF:2.000,
segments/147.m4s
#EXTINF:2.000,
segments/148.m4s
#EXTINF:2.000,
segments/149.m4s
#EXTINF:2.000,
segments/150.m4s
#EXTINF:2.000,
segments/151.m4s
#EXTINF:2.000,
segments/152.m4s
#EXTINF:2.000,
segments/153.m4s
#EXTINF:2.000,
segments/154.m4s
#EXTINF:2.000,
segments/155.m4s
#EXTINF:2.000,
segments/156.m4s
#EXTINF:2.000,
segments/157.m4s
#EXTINF:2.000,
segments/158.m4s
#EXTINF:2.000,
segments/159.m4s
#EXTINF:2.000,
segments/160.m4s
#EXTINF:2.000,
segments/161.m4s
#EXTINF:2.000,
segments/162.m4s
#EXTINF:2.000,
segments/163.m4s
#EXTINF:2.000,
segments/164.m4s
#EXTINF:2.000,
segments/165.m4s
#EXTINF:2.000,
segments/166.m4s
#EXTINF:2.000,
segments/167.m4s
#EXTINF:2.000,
segments/168.m4s
#EXTINF:2.000,
segments/169.m4s
#EXTINF:2.000,
segments/170.m4s
#EXTINF:2.000,
segments/171.m4s
#EXTINF:2.000,
segments/172.m4s
#EXTINF:2.000,
segments/173.m4s
#EXTINF:2.000,
segments/174.m4s
#EXTINF:2.000,
segments/175.m4s
#EXTINF:2.000,
segments/176.m4s
#EXTINF:2.000,
segments/177.m4s
#EXTINF:2.000,
segments/178.m4s
#EXTINF:2.000,
segments/179.m4s
#EXTINF:2.000,
segments/180.m4s
#EXTINF:2.000,
segments/181.m4s
#EXT-X-ENDLIST

<Please attach the input files or email to shaka-packager-issues@google.com.>

Additional information:

I had tried different players Shaka Player, Hls.js, Veeplay and react-hls and none of them pass though the problematic time (2'01"), but using the VLC app the content is reproduced from the beginning to the end without any problem or errors. For more details here is the hls.js issue.

cosmin commented 5 months ago

From looking at the linked hls.js issue it seems that the problem is the underlying video decoder is failing to decode one of the segments. I'd recommend saving the input directly as a file and trying to play that directly with ffmpeg (since it was the selected video decoder) to see if it decodes successfully. If the input file can be decoded but the output of packager cannot be decoded then it might be a packager bug, and if so please reopen the issue and attach the input file.