nschlia / ffmpegfs

FUSE-based transcoding filesystem with video support from many formats to FLAC, MP4, TS, WebM, OGG, MP3, HLS, and others.
https://nschlia.github.io/ffmpegfs/
GNU General Public License v3.0
198 stars 14 forks source link

HLS: Warnings when processing with FFmpeg #89

Closed nschlia closed 2 years ago

nschlia commented 3 years ago

Several warnings when processing an HLS stream with FFmpeg, for example "[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 8995024)".

The seems to be an invalid DTS in the first packet, see "[mpegts @ 0x564b6ca37400] Invalid timestamps stream=0, pts=1024, dts=8589932616, size=26430"

This is obviously the very last packet of the segment. Checking the segment alone does not reveal any problems, only when the segments are combined.

Not a big issue, as the streams actually play fine, but should be checked anyway.

Example log:

root@plattenlurch:~/# ffmpeg -i '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/master.m3u8'  -c:a copy -c:v copy test.ts       
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/index_0_av.m3u8' for reading
[hls @ 0x564b6ca26300] Skip ('#EXT-X-ALLOW-CACHE:YES')
[hls @ 0x564b6ca26300] Skip ('#EXT-X-VERSION:3')
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000001.ts' for reading
[mpegts @ 0x564b6ca37400] Invalid timestamps stream=0, pts=1024, dts=8589932616, size=26430
Input #0, hls, from '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/master.m3u8':
  Duration: 01:19:18.14, start: 0.000000, bitrate: N/A                                                                                                                                        
  Program 0                                                                                                                                                                                   
    Metadata:                                                                                                                                                                                 
      variant_bitrate : 0                                                                                                                                                                     
  Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x674 [SAR 1:1 DAR 640:337], 30 fps, 30 tbr, 90k tbn                                                                  
    Metadata:                                                                                                                                                                                 
      variant_bitrate : 0                                                                                                                                                                     
  Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp                                                                                                               
    Metadata:                                                                                                                                                                                 
      variant_bitrate : 0                                                                                                                                                                     
Output #0, mpegts, to 'test.ts':                                                                                                                                                              
  Metadata:                                                                                                                                                                                   
    encoder         : Lavf59.2.101                                                                                                                                                            
  Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x674 [SAR 1:1 DAR 640:337], q=2-31, 30 fps, 30 tbr, 90k tbn                                                          
    Metadata:                                                                                                                                                                                 
      variant_bitrate : 0                                                                                                                                                                     
  Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp                                                                                                               
    Metadata:                                                                                                                                                                                 
      variant_bitrate : 0                                                                                                                                                                     
Stream mapping:                                                                                                                                                                               
  Stream #0:0 -> #0:0 (copy)                                                                                                                                                                  
  Stream #0:1 -> #0:1 (copy)                                                                                                                                                                  
Press [q] to stop, [?] for help                                                                                                                                                               
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000002.ts' for reading                              
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 895024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000003.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 1795024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000004.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 2695024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000005.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 3595024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000006.ts' for reading
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000007.ts' for reading                              
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 5395024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000008.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 6295024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000009.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 7195024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000010.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 8095024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000011.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 8995024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000012.ts' for reading
[mpegts @ 0x564b6ca37400] Packet corrupt (stream = 0, dts = 9895024).
[hls @ 0x564b6ca26300] Opening '/mnt/video/Musik/Apocalyptica/Live in Wacken 2017/Apocalyptica - Full Show.m4v/000013.ts' for reading
frame= 3723 fps=161 q=-1.0 Lsize=   22571kB time=00:02:04.20 bitrate=1488.7kbits/s speed=5.36x                                                                                                
video:19179kB audio:1958kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 6.786518%                                                                                       
nschlia commented 2 years ago

Running ffmpeg with the -loglevel debug parameter reveals:

AVIOContext @ 0x555d80d8d040] Statistics: 654240 bytes read, 0 seeks256.9kbits/s speed=15.2x    
[hls @ 0x555d80d84300] HLS request for url '/mnt/video/Musik/I Miss My Death - While You Remember Me(Live 2013).m4v/000002.ts', offset 0, playlist 0
[hls @ 0x555d80d84300] Opening '/mnt/video/Musik/I Miss My Death - While You Remember Me(Live 2013).m4v/000002.ts' for reading
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 17 expected 4 got 0
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 0 expected 4 got 0
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 4096 expected 4 got 0
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 256 expected 8 got 0
[mpegts @ 0x555d80d8b900] Packet corrupt (stream = 0, dts = 897424).
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 257 expected 4 got 0
[AVIOContext @ 0x555d80f47300] Statistics: 684320 bytes read, 0 seeks432.4kbits/s speed=12.1x    
[hls @ 0x555d80d84300] HLS request for url '/mnt/video/Musik/I Miss My Death - While You Remember Me(Live 2013).m4v/000003.ts', offset 0, playlist 0
[hls @ 0x555d80d84300] Opening '/mnt/video/Musik/I Miss My Death - While You Remember Me(Live 2013).m4v/000003.ts' for reading
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 17 expected 4 got 0
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 0 expected 4 got 0
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 4096 expected 4 got 0
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 256 expected 4 got 0
[mpegts @ 0x555d80d8b900] Packet corrupt (stream = 0, dts = 1797424).
[mpegts @ 0x555d80d8b900] Continuity check failed for pid 257 expected 8 got 0
[AVIOContext @ 0x555d80f47300] Statistics: 713836 bytes read, 0 seeks416.7kbits/s speed=11.8x    
[hls @ 0x555d80d84300] HLS request for url '/mnt/video/Musik/I Miss My Death - While You Remember Me(Live 2013).m4v/000004.ts', offset 0, playlist 0

There is a longer discussion about this matter here: https://ffmpeg-trac.avcodec.narkive.com/XzBIhn9B/2828-avformat-new-hls-segment-mpegts-continuity-counter-is-being-incorrectly-set-to-0-on-each This does not seem to be a problem with Firefox etc, W3C mentions "Timestamp rollovers and discontinuities must be handled by the UA. " https://rawgit.com/w3c/media-source/30c2d1e/media-source.html#mpeg2ts-discontinuities Well, anyway, I think we can close this as minor problem.