Hello everyone,

Sometimes I have a problem with generating DASH manifest file, sometimes i don't.

I would like to understand why is that so and what could i do about it, because
i am using the same command in both cases.


On error i get:
..
[webm_dash_manifest @ 0000000000495700] Error parsing Cues
video.webm: Operation not permitted


Which is not very helpful and informative in itself.

Trimmed down command still having the same error:
./ffmpeg.exe -f webm_dash_manifest -i "video_notworking.webm" -c copy -map 0 -f webm_dash_manifest -adaptation_sets "id=0,streams=0" test_manifest.mpd


I am not adept in using ffmpeg, so maybe error is due to my misuse of command flags,
but of this command usage I got inspired by article at:
https://developer.mozilla.org/en-US/docs/Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video

The video file works on it's own with ffplay and there are no errors
with ffprobe. Video source file is not generated by ffmpeg.

Video file can be converted by ffmpeg like so:
./ffmpeg.exe -i video.webm -f webm -dash 1 video_converted.webm

And then the DASH manifest generation command works.

I would like to avoid the conversion step if possible, because it is
extra step to be done and takes time, especially if video is lengthy
and high resolution.

I don't know what "Cues" are, but is there some way to get more info on why exactly parsing failed? E.g. How to know if there is some missing information in source file or format is unsupported/malformed?
Maybe file is corrupt or something?

I will copy full outputs below message - for not working case and for working case.

For not working case ffprobe's line
"Duration: N/A, start: 0.000000, bitrate: N/A" seems fishy, because in working case it has values, e.g. "Duration: 00:09:52.33, start: 0.000000, bitrate: 3293 kb/s",
the same is for converted.

Is there a "fast-way" conversion available that just adds duration?


Then what seems weird is that in non working case Stream contains chunk:
"yuv420p(tv, bt709/unknown/unknown)"
Where working case without -f, contains "yuv420p(tv, bt709)"
with -f "none(tv, bt709)" and still works. For converted "yuv420p(tv)"

How should i interpret those values "bt709/unknown/unknown" in parentheses?

What are your thoughts? Suggestions?

Thank you!

Full log outputs for:

Not working:
$ ./ffmpeg.exe -f webm_dash_manifest -i "video_notworking.webm" -c copy -map 0 -f webm_dash_manifest -adaptation_sets "id=0,streams=0" test_manifest.mpd -loglevel trace ffmpeg version 4.3.1-2021-01-01-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Splitting the commandline.
Reading option '-f' ... matched as option 'f' (force format) with argument 'webm_dash_manifest'. Reading option '-i' ... matched as input url with argument 'video_notworking.webm'. Reading option '-c' ... matched as option 'c' (codec name) with argument 'copy'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0'. Reading option '-f' ... matched as option 'f' (force format) with argument 'webm_dash_manifest'. Reading option '-adaptation_sets' ... matched as AVOption 'adaptation_sets' with argument 'id=0,streams=0'.
Reading option 'test_manifest.mpd' ... matched as output url.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'trace'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument trace.
Successfully parsed a group of options.
Parsing a group of options: input url video_notworking.webm.
Applying option f (force format) with argument webm_dash_manifest.
Successfully parsed a group of options.
Opening an input file: video_notworking.webm.
[webm_dash_manifest @ 0000000000474980] Opening 'video_notworking.webm' for reading
[file @ 0000000000476100] Setting default whitelist 'file,crypto,data'
st:0 removing common factor 1000000 from timebase
[webm_dash_manifest @ 0000000000474980] Error parsing Cues
[AVIOContext @ 000000000047e380] Statistics: 32768 bytes read, 0 seeks
video_notworking.webm: Operation not permitted



Probe for not working video case:
$ ./ffprobe.exe -hide_banner -i "video_notworking.webm" -loglevel trace
[NULL @ 0000000000567e40] Opening 'video_notworking.webm' for reading
[file @ 00000000005687c0] Setting default whitelist 'file,crypto,data'
Probing h263 score:25 size:2048
Probing matroska,webm score:100 size:2048
Probing mp3 score:1 size:2048
[matroska,webm @ 0000000000567e40] Format matroska,webm probed with size=2048 and score=100
st:0 removing common factor 1000000 from timebase
[matroska,webm @ 0000000000567e40] Before avformat_find_stream_info() pos: 705 bytes read:32768 seeks:0 nb_streams:1
[vp9 @ 000000000057c780] Format yuv420p chosen by get_format().
[matroska,webm @ 0000000000567e40] All info found
[matroska,webm @ 0000000000567e40] stream 0: start_time: 0 duration: NOPTS
[matroska,webm @ 0000000000567e40] format: start_time: 0 duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [matroska,webm @ 0000000000567e40] After avformat_find_stream_info() pos: 3210 bytes read:32768 seeks:0 frames:1
Input #0, matroska,webm, from 'video_notworking.webm':
  Metadata:
    encoder         : google/video-file
    http://youtube.com/streaming/otf/durations/112015: Segment-Count: 87
                    : Segment-Durations-Ms: 5339,5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),5338,5339(r=1),533
                    :
                    :
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng), 1, 1/1000: Video: vp9 (Profile 0), 1 reference frame, yuv420p(tv, bt709/unknown/unknown), 1920x1080, 0/1, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default)
[AVIOContext @ 0000000000572a80] Statistics: 32768 bytes read, 0 seeks



Probe with -f for not working case:
$ ./ffprobe.exe -hide_banner -f webm_dash_manifest -i "video_notworking.webm" -loglevel trace [webm_dash_manifest @ 00000000006460c0] Opening 'video_notworking.webm' for reading
[file @ 0000000000646a00] Setting default whitelist 'file,crypto,data'
st:0 removing common factor 1000000 from timebase
[webm_dash_manifest @ 00000000006460c0] Error parsing Cues
[AVIOContext @ 0000000000650cc0] Statistics: 32768 bytes read, 0 seeks
video_notworking.webm: Operation not permitted



Probe for working case:
$ ./ffprobe.exe -hide_banner -i "video_working.webm" -loglevel trace
[NULL @ 0000000000577e40] Opening 'video_working.webm' for reading
[file @ 00000000005787c0] Setting default whitelist 'file,crypto,data'
Probing matroska,webm score:100 size:2048
[matroska,webm @ 0000000000577e40] Format matroska,webm probed with size=2048 and score=100
st:0 removing common factor 1000000 from timebase
[matroska,webm @ 0000000000577e40] Before avformat_find_stream_info() pos: 2352 bytes read:32768 seeks:0 nb_streams:1
[vp9 @ 000000000057f640] Format yuv420p chosen by get_format().
[matroska,webm @ 0000000000577e40] All info found
[matroska,webm @ 0000000000577e40] stream 0: start_time: 0 duration: NOPTS
[matroska,webm @ 0000000000577e40] format: start_time: 0 duration: 592.325 (estimate from stream) bitrate=3293 kb/s [matroska,webm @ 0000000000577e40] After avformat_find_stream_info() pos: 17475 bytes read:32768 seeks:0 frames:1
Input #0, matroska,webm, from 'video_working.webm':
  Metadata:
    encoder         : google/video-file
  Duration: 00:09:52.33, start: 0.000000, bitrate: 3293 kb/s
    Stream #0:0(eng), 1, 1/1000: Video: vp9 (Profile 0), 1 reference frame, yuv420p(tv, bt709), 3840x2160, 0/1, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
[AVIOContext @ 0000000000582a80] Statistics: 32768 bytes read, 0 seeks



Probe for working with -f flag.
$ ./ffprobe.exe -hide_banner -f webm_dash_manifest -i "video_working.webm" -loglevel trace [webm_dash_manifest @ 00000000004d6080] Opening 'video_working.webm' for reading
[file @ 00000000004d6a00] Setting default whitelist 'file,crypto,data'
st:0 removing common factor 1000000 from timebase
[webm_dash_manifest @ 00000000004d6080] File ended prematurely at pos. 243864208 (0xe891290) [webm_dash_manifest @ 00000000004d6080] Before avformat_find_stream_info() pos: 2352 bytes read:27630115 seeks:156 nb_streams:1 [webm_dash_manifest @ 00000000004d6080] stream 0: start_time: NOPTS duration: 592.325 [webm_dash_manifest @ 00000000004d6080] format: start_time: NOPTS duration: 592.325 (estimate from stream) bitrate=3293 kb/s [webm_dash_manifest @ 00000000004d6080] Could not find codec parameters for stream 0 (Video: vp9, 1 reference frame, none(tv, bt709), 3840x2160, 1/1000): unspecified pixel format Consider increasing the value for the 'analyzeduration' and 'probesize' options [webm_dash_manifest @ 00000000004d6080] After avformat_find_stream_info() pos: 2352 bytes read:27630115 seeks:156 frames:0
Input #0, webm_dash_manifest, from 'video_working.webm':
  Metadata:
    encoder         : google/video-file
  Duration: 00:09:52.33, bitrate: 3293 kb/s
    Stream #0:0(eng), 0, 1/1000: Video: vp9, 1 reference frame, none(tv, bt709), 3840x2160, 0/1, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      webm_dash_manifest_duration: 592325
      webm_dash_manifest_cues_end: 2347
      webm_dash_manifest_file_name: video_working.webm
      webm_dash_manifest_track_number: 1
      webm_dash_manifest_cues_start: 220
      webm_dash_manifest_initialization_range: 219
      webm_dash_manifest_bandwidth: 11988200
      webm_dash_manifest_cluster_keyframe: 1
      webm_dash_manifest_cue_timestamps: 0,5005,10010,15015,17084,20020,25025,30030,35035,40040,45045,50384,55389,60394,65399,70404,75409,80414,81982,85419,90424,95429,97598,100434,105439,110444,115449,120454,125459,129263,130464,135469,140474,144711,149716,150250,154721,159726,164731,169736,174
[AVIOContext @ 00000000004e0cc0] Statistics: 27630115 bytes read, 156 seeks


_______________________________________________
ffmpeg-user mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to