Opened 14 months ago

Closed 9 months ago

#11526 closed defect (fixed)

cmfv and cmfa not in hls allowed_extensions

Reported by: gamer191 Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: hls
Cc: gamer191 Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by gamer191)

Summary of the bug:
Cmfv and cmfa are not in ffmpeg's HLS demuxer's list of allowed_extensions. This causes issues when downloading niconico videos using yt-dlp.

This can be reproduced with yt-dlp "https://www.nicovideo.jp/watch/sm44612421" --downloader ffmpeg (the cmfa issue can be reproduced using yt-dlp "https://www.nicovideo.jp/watch/sm44612421" --downloader ffmpeg -f bestaudio). Alternatively, you can create a .m3u8 file containing

#EXTM3U
#EXT-X-TARGETDURATION:174
#EXTINF:135,
https://example.com/file.cmfv

and then run

% ffmpeg -v 9 -loglevel 99 -i "C:\Users\REDACTED\file.m3u8"
ffmpeg version N-118897-gfc44ccd981-20250323 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14.2.0 (crosstool-NG 1.27.0.18_7458341)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --disable-libvvenc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20250323
  libavutil      59. 60.100 / 59. 60.100
  libavcodec     61. 33.102 / 61. 33.102
  libavformat    61.  9.107 / 61.  9.107
  libavdevice    61.  4.100 / 61.  4.100
  libavfilter    10.  9.100 / 10.  9.100
  libswscale      8. 13.103 /  8. 13.103
  libswresample   5.  4.100 /  5.  4.100
  libpostproc    58.  4.100 / 58.  4.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-i' ... matched as input url with argument 'C:\Users\REDACTED\file.m3u8'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input url C:\Users\REDACTED\file.m3u8.
Successfully parsed a group of options.
Opening an input file: C:\Users\REDACTED\file.m3u8.
[AVFormatContext @ 0000022059d7de40] Opening 'C:\Users\REDACTED\file.m3u8' for reading
[file @ 0000022059d29380] Setting default whitelist 'file,crypto,data'
Probing hls score:100 size:77
[hls @ 0000022059d7de40] Format hls probed with size=2048 and score=100
[hls @ 0000022059d7de40] URL https://example.com/file.cmfv is not in allowed_extensions
[AVIOContext @ 0000022059d37c40] Statistics: 77 bytes read, 0 seeks
[in#0 @ 0000022059d38480] Error opening input: Invalid data found when processing input
Error opening input file C:\Users\REDACTED\file.m3u8.
Error opening input files: Invalid data found when processing input

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.

Attachments (4)

cmfv_m3u8.m3u8 (324 bytes ) - added by gamer191 13 months ago.
EXT-X-MAP.cmfv (739 bytes ) - added by gamer191 13 months ago.
video.cmfv (1.6 KB ) - added by gamer191 13 months ago.
key (file extension set to .mp4 because .key isn't whitelisted).mp4 (16 bytes ) - added by gamer191 13 months ago.

Download all attachments as: .zip

Change History (9)

comment:1 by gamer191, 14 months ago

Description: modified (diff)

comment:2 by MasterQuestionable, 14 months ago

Keywords: hls added
Resolution: duplicate
Status: newclosed

comment:3 by Michael Niedermayer, 13 months ago

Resolution: duplicatefixed

by gamer191, 13 months ago

Attachment: cmfv_m3u8.m3u8 added

comment:4 by gamer191, 13 months ago

Resolution: fixed
Status: closedreopened

Thanks for the patch. Unfortunately this is still broken, it just gives a different error message:

>ffmpeg -v 9 -loglevel 99 -i "cmfv_m3u8.m3u8"
ffmpeg version N-119396-g48c0dba23b-20250430 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14.2.0 (crosstool-NG 1.27.0.18_7458341)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libvvenc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20250430
  libavutil      60.  2.100 / 60.  2.100
  libavcodec     62.  1.102 / 62.  1.102
  libavformat    62.  0.102 / 62.  0.102
  libavdevice    62.  0.100 / 62.  0.100
  libavfilter    11.  0.100 / 11.  0.100
  libswscale      9.  0.100 /  9.  0.100
  libswresample   6.  0.100 /  6.  0.100
  libpostproc    59.  1.100 / 59.  1.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-i' ... matched as input url with argument 'cmfv_m3u8.m3u8'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input url cmfv_m3u8.m3u8.
Successfully parsed a group of options.
Opening an input file: cmfv_m3u8.m3u8.
[AVFormatContext @ 00000142356623c0] Opening 'cmfv_m3u8.m3u8' for reading
[file @ 00000142355fd180] Setting default whitelist 'file,crypto,data'
Probing hls score:100 size:324
[hls @ 00000142356623c0] Format hls probed with size=2048 and score=100
[hls @ 00000142356623c0] Skip ('#EXT-X-VERSION:6')
[hls @ 00000142356623c0] new_program: id=0x0000
[hls @ 00000142356623c0] HLS request for url 'file:EXT-X-MAP.cmfv', offset 0, playlist 0
[hls @ 00000142356623c0] Opening 'file:EXT-X-MAP.cmfv' for reading
[hls @ 00000142356623c0] Downloading an initialization section of size 739
[AVIOContext @ 00000142356685c0] Statistics: 739 bytes read, 0 seeks
[hls @ 00000142356623c0] HLS request for url 'file:video.cmfv', offset 0, playlist 0
[hls @ 00000142356623c0] Opening 'file:key (file extension set to .mp4 because .key isn't whitelisted).mp4' for reading
[AVIOContext @ 0000014235668500] Statistics: 16 bytes read, 0 seeks
[hls @ 00000142356623c0] Opening 'crypto:file:video.cmfv' for reading
Probing mov,mp4,m4a,3gp,3g2,mj2 score:100 size:2048
Probing mp3 score:1 size:2048
Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[hls @ 00000142356623c0] detected format mov,mp4,m4a,3gp,3g2,mj2 extension mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v,avif,heic,heif mismatches allowed extensions in url file:video.cmfv
[hls @ 00000142356623c0] Error when loading first segment 'file:video.cmfv'
[AVIOContext @ 000001423566ad40] Statistics: 1607 bytes read, 0 seeks
[AVIOContext @ 0000014235603440] Statistics: 324 bytes read, 0 seeks
[in#0 @ 0000014235636580] Error opening input: Invalid data found when processing input
Error opening input file cmfv_m3u8.m3u8.
Error opening input files: Invalid data found when processing input

Notably it does work with -extension_picky 0:

>ffmpeg -extension_picky 0 -v 9 -loglevel 99 -i "cmfv_m3u8.m3u8"
ffmpeg version N-119396-g48c0dba23b-20250430 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14.2.0 (crosstool-NG 1.27.0.18_7458341)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libvvenc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20250430
  libavutil      60.  2.100 / 60.  2.100
  libavcodec     62.  1.102 / 62.  1.102
  libavformat    62.  0.102 / 62.  0.102
  libavdevice    62.  0.100 / 62.  0.100
  libavfilter    11.  0.100 / 11.  0.100
  libswscale      9.  0.100 /  9.  0.100
  libswresample   6.  0.100 /  6.  0.100
  libpostproc    59.  1.100 / 59.  1.100
Splitting the commandline.
Reading option '-extension_picky' ... matched as AVOption 'extension_picky' with argument '0'.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-i' ... matched as input url with argument 'cmfv_m3u8.m3u8'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input url cmfv_m3u8.m3u8.
Successfully parsed a group of options.
Opening an input file: cmfv_m3u8.m3u8.
[AVFormatContext @ 000001d8b319e580] Opening 'cmfv_m3u8.m3u8' for reading
[file @ 000001d8b319f9c0] Setting default whitelist 'file,crypto,data'
Probing hls score:100 size:324
[hls @ 000001d8b319e580] Format hls probed with size=2048 and score=100
[hls @ 000001d8b319e580] Skip ('#EXT-X-VERSION:6')
[hls @ 000001d8b319e580] new_program: id=0x0000
[hls @ 000001d8b319e580] HLS request for url 'file:EXT-X-MAP.cmfv', offset 0, playlist 0
[hls @ 000001d8b319e580] Opening 'file:EXT-X-MAP.cmfv' for reading
[hls @ 000001d8b319e580] Downloading an initialization section of size 739
[AVIOContext @ 000001d8b31a4d00] Statistics: 739 bytes read, 0 seeks
[hls @ 000001d8b319e580] HLS request for url 'file:video.cmfv', offset 0, playlist 0
[hls @ 000001d8b319e580] Opening 'file:key (file extension set to .mp4 because .key isn't whitelisted).mp4' for reading
[AVIOContext @ 000001d8b31a4e00] Statistics: 16 bytes read, 0 seeks
[hls @ 000001d8b319e580] Opening 'crypto:file:video.cmfv' for reading
Probing mov,mp4,m4a,3gp,3g2,mj2 score:100 size:2048
Probing mp3 score:1 size:2048
Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'ftyp' parent:'root' sz: 32 8 9223372036854775807
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] ISO: File Type Major Brand: isom
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'moov' parent:'root' sz: 707 40 9223372036854775807
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'mvhd' parent:'moov' sz: 108 8 699
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] time scale = 90000
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'iods' parent:'moov' sz: 27 116 699
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'trak' parent:'moov' sz: 524 143 699
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'tkhd' parent:'trak' sz: 92 8 516
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'mdia' parent:'trak' sz: 424 100 516
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'mdhd' parent:'mdia' sz: 32 8 416
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'hdlr' parent:'mdia' sz: 60 40 416
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] ctype=[0][0][0][0]
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stype=vide
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'minf' parent:'mdia' sz: 324 100 416
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'vmhd' parent:'minf' sz: 20 8 316
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'dinf' parent:'minf' sz: 36 28 316
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'dref' parent:'dinf' sz: 28 8 28
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'stbl' parent:'minf' sz: 260 64 316
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'stsd' parent:'stbl' sz: 184 8 252
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] size=168 4CC=avc1 codec_type=0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'avcC' parent:'stsd' sz: 62 8 82
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'btrt' parent:'stsd' sz: 20 70 82
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'stts' parent:'stbl' sz: 16 192 252
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] track[0].stts.entries = 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'stsc' parent:'stbl' sz: 16 208 252
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] track[0].stsc.entries = 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'stsz' parent:'stbl' sz: 20 224 252
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] sample_size = 0 sample_count = 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'stco' parent:'stbl' sz: 16 244 252
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] advanced_editlist does not work with fragmented MP4. disabling.
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'mvex' parent:'moov' sz: 40 667 699
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'trex' parent:'mvex' sz: 32 8 32
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'styp' parent:'root' sz: 24 747 9223372036854775807
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'sidx' parent:'root' sz: 52 771 9223372036854775807
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'moof' parent:'root' sz: 396 823 9223372036854775807
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] moof offset 32f
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'mfhd' parent:'moof' sz: 16 8 388
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'traf' parent:'moof' sz: 372 24 388
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'tfhd' parent:'traf' sz: 20 8 364
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] frag flags 0x610000
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'tfdt' parent:'traf' sz: 20 28 364
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'trun' parent:'traf' sz: 324 48 364
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] flags 0xb05 entries 25
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] found tfdt time 0, using it for dts
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] first sample flags 0x2600000
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 1, offset 4c3, dts 0, size 193, distance 0, keyframe 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 2, offset 584, dts 3600, size 40, distance 1, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 3, offset 5ac, dts 7200, size 38, distance 2, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 4, offset 5d2, dts 10800, size 37, distance 3, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 5, offset 5f7, dts 14400, size 39, distance 4, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 6, offset 61e, dts 18000, size 40, distance 5, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 7, offset 646, dts 21600, size 38, distance 6, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 8, offset 66c, dts 25200, size 39, distance 7, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 9, offset 693, dts 28800, size 39, distance 8, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 10, offset 6ba, dts 32400, size 40, distance 9, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 11, offset 6e2, dts 36000, size 38, distance 10, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 12, offset 708, dts 39600, size 39, distance 11, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 13, offset 72f, dts 43200, size 39, distance 12, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 14, offset 756, dts 46800, size 40, distance 13, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 15, offset 77e, dts 50400, size 38, distance 14, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 16, offset 7a4, dts 54000, size 39, distance 15, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 17, offset 7cb, dts 57600, size 39, distance 16, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 18, offset 7f2, dts 61200, size 40, distance 17, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 19, offset 81a, dts 64800, size 38, distance 18, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 20, offset 840, dts 68400, size 39, distance 19, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 21, offset 867, dts 72000, size 39, distance 20, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 22, offset 88e, dts 75600, size 40, distance 21, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 23, offset 8b6, dts 79200, size 38, distance 22, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 24, offset 8dc, dts 82800, size 39, distance 23, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] AVIndex stream 0, sample 25, offset 903, dts 86400, size 39, distance 24, keyframe 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] type:'mdat' parent:'root' sz: 1135 1219 9223372036854775807
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] on_parse_exit_offset=1219
[hls @ 000001d8b319e580] Before avformat_find_stream_info() pos: 324 bytes read:324 seeks:0 nb_streams:1
[h264 @ 000001d8b31b2900] nal_unit_type: 7(SPS), nal_ref_idc: 1
[h264 @ 000001d8b31b2900] Decoding VUI
[h264 @ 000001d8b31b2900] nal_unit_type: 8(PPS), nal_ref_idc: 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 0, dts 0
[NULL @ 000001d8b31a4480] nal_unit_type: 7(SPS), nal_ref_idc: 1
[NULL @ 000001d8b31a4480] Decoding VUI
[NULL @ 000001d8b31a4480] nal_unit_type: 8(PPS), nal_ref_idc: 1
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[h264 @ 000001d8b31b2900] nal_unit_type: 9(AUD), nal_ref_idc: 0
[h264 @ 000001d8b31b2900] nal_unit_type: 6(SEI), nal_ref_idc: 0
    Last message repeated 2 times
[h264 @ 000001d8b31b2900] nal_unit_type: 5(IDR), nal_ref_idc: 1
[h264 @ 000001d8b31b2900] Format yuv420p chosen by get_format().
[h264 @ 000001d8b31b2900] Reinit context to 320x240, pix_fmt: yuv420p
[h264 @ 000001d8b31b2900] ct_type:0 pic_struct:0
[h264 @ 000001d8b31b2900] no picture
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 1, dts 40000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 2, dts 80000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 3, dts 120000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 4, dts 160000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 5, dts 200000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 6, dts 240000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 7, dts 280000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 8, dts 320000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 9, dts 360000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 10, dts 400000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 11, dts 440000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 12, dts 480000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 13, dts 520000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 14, dts 560000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 15, dts 600000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 16, dts 640000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 17, dts 680000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 18, dts 720000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 19, dts 760000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001d8b31a4040] stream 0, sample 20, dts 800000
[NULL @ 000001d8b31a4480] ct_type:0 pic_struct:0
[hls @ 000001d8b319e580] All info found
[hls @ 000001d8b319e580] stream 0: start_time: 0.08 duration: NOPTS
[hls @ 000001d8b319e580] format: start_time: 0.08 duration: 1 (estimate from stream) bitrate=2 kb/s
[hls @ 000001d8b319e580] After avformat_find_stream_info() pos: 324 bytes read:324 seeks:0 frames:21
Input #0, hls, from 'cmfv_m3u8.m3u8':
  Duration: 00:00:01.00, start: 0.080000, bitrate: 2 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
  Stream #0:0(und), 21, 1/90000: Video: h264 (Main), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt709, left), 320x240 [SAR 1:1 DAR 4:3], 0/1, 9 kb/s, 25 fps, 25 tbr, 90k tbn, Start-Time 0.080s (default)
    Metadata:
      variant_bitrate : 0
      compatible_brands: isomavc1dashcmfc
      handler_name    : ETI ISO Video Media Handler
      vendor_id       : [0][0][0][0]
      encoder         : Elemental H.264
      major_brand     : isom
      minor_version   : 1
      creation_time   : 2025-05-01T04:55:27.000000Z
Successfully opened the file.
Correcting start time of Input #0 by 9223372036854695807 us.
At least one output file must be specified
[AVIOContext @ 000001d8b31a8e80] Statistics: 1607 bytes read, 0 seeks
[AVIOContext @ 000001d8b31a9800] Statistics: 324 bytes read, 0 seeks

I noticed that in the developer thread you mentioned not having test cases for this. I initially assumed that it wouldn't be possible since the m3u8 links expire after a short timestamp, however I ultimately managed to create a test case by downloading all the assets locally and manually editing the m3u8. As such, I am currently uploading cmfv_m3u8.m3u8 to this ticket. Note that all 4 files must be downloaded to the same folder and not renamed (cmfv_m3u8.m3u8 can be renamed)

Thanks again for looking into this issue, and apologies for the trouble I caused by not sending a proper testcase

EDIT: cmfv_m3u8.m3u8 is supposed to be one second of the color purple, btw

Last edited 13 months ago by gamer191 (previous) (diff)

by gamer191, 13 months ago

Attachment: EXT-X-MAP.cmfv added

by gamer191, 13 months ago

Attachment: video.cmfv added

comment:5 by Michael Niedermayer, 9 months ago

Resolution: fixed
Status: reopenedclosed
Note: See TracTickets for help on using tickets.