Opened 10 months ago
Last modified 10 months ago
#10678 new defect
Sporadic "Error parsing Cues... Operation not permitted" errors when trying to generate a DASH manifest
Reported by: | Kerry Shetline | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | ffmpeg |
Version: | 6.0 | Keywords: | dash webm manifest cues |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
I have already-generated .webm audio and video files (1 audio, 3 video resolutions for each video I want to stream). The video has been generated not by ffmpeg, but HandbrakeCLI 1.7.0, with V9 encoding. The audio (which has never caused an error) is generated by ffmpeg using libvorbis.
Most of the time ffmpeg creates a manifest without any problem. Sporadically, however, "Error parsing Cues" comes up, maybe 1 out of 5 times, and I can't create a manifest. Since this is happening during an automated process to process many videos for streaming, the audio and video sources are being created exactly the same way whether ffmpeg succeeds or fails in generating a manifest, making this all the more confusing.
The video files ffmpeg chokes on play perfectly well using VLC, and mediainfo doesn't show any problems with the files.
How to reproduce:
Here is the command I've been using:
ffmpeg -v 9 -loglevel 99 -f webm_dash_manifest -i '.\Sample Video.v480.webm' -f webm_dash_manifest -i '.\Sample Video.v720.webm' -f webm_dash_manifest -i '.\Sample Video.v1080.webm' -f webm_dash_manifest -i '.\Sample Video.audio.webm' -c copy -map 0 -map 1 -map 2 -map 3 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1,2 id=1,streams=3" '.\Sample Video.mpd'
Here is the output generated:
ffmpeg version 6.1-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers built with gcc 12.2.0 (Rev10, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --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 58. 29.100 / 58. 29.100 libavcodec 60. 31.102 / 60. 31.102 libavformat 60. 16.100 / 60. 16.100 libavdevice 60. 3.100 / 60. 3.100 libavfilter 9. 12.100 / 9. 12.100 libswscale 7. 5.100 / 7. 5.100 libswresample 4. 12.100 / 4. 12.100 libpostproc 57. 3.100 / 57. 3.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 '-f' ... matched as option 'f' (force format) with argument 'webm_dash_manifest'. Reading option '-i' ... matched as output url with argument '.\Sample Video.v480.webm'. Reading option '-f' ... matched as option 'f' (force format) with argument 'webm_dash_manifest'. Reading option '-i' ... matched as output url with argument '.\Sample Video.v720.webm'. Reading option '-f' ... matched as option 'f' (force format) with argument 'webm_dash_manifest'. Reading option '-i' ... matched as output url with argument '.\Sample Video.v1080.webm'. Reading option '-f' ... matched as option 'f' (force format) with argument 'webm_dash_manifest'. Reading option '-i' ... matched as output url with argument '.\Sample Video.audio.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 '-map' ... matched as option 'map' (set input stream mapping) with argument '1'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '2'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '3'. 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,1,2 id=1,streams=3'. Reading option '.\Sample Video.mpd' ... matched as output url. 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 .\Sample Video.v480.webm. Applying option f (force format) with argument webm_dash_manifest. Successfully parsed a group of options. Opening an input file: .\Sample Video.v480.webm. [webm_dash_manifest @ 000002bbcb41dc80] Opening '.\Sample Video.v480.webm' for reading [file @ 000002bbcb41e300] Setting default whitelist 'file,crypto,data' st:0 removing common factor 1000000 from timebase [webm_dash_manifest @ 000002bbcb41dc80] Error parsing Cues [AVIOContext @ 000002bbcb41e5c0] Statistics: 102283 bytes read, 4 seeks [in#0 @ 000002bbcb41dac0] Error opening input: Operation not permitted Error opening input file .\Sample Video.v480.webm. Error opening input files: Operation not permitted
mediainfo for offending input file:
mediainfo '.\Sample Video.v480.webm' General Complete name : .\Sample Video.v480.webm Format : WebM Format version : Version 2 File size : 628 MiB Duration : 1 h 34 min Overall bit rate : 926 kb/s Frame rate : 23.976 FPS Encoded date : 2023-11-21 16:48:35 UTC Writing application : HandBrake 1.7.0 2023111500 Writing library : Lavf60.16.100 Video ID : 1 Format : VP9 Format profile : 0 Codec ID : V_VP9 Duration : 1 h 34 min Bit rate : 882 kb/s Width : 720 pixels Height : 480 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Bits/(Pixel*Frame) : 0.106 Stream size : 598 MiB (95%) Default : Yes Forced : No Color range : Limited Color primaries : BT.709 Transfer characteristics : BT.709 Matrix coefficients : BT.709
Interestingly different macOS experience, albeit with older versions of both ffmpeg (6.0) and HandbrakeCLI (1.6.1):
To speed things up, I've had my Mac working on encoding videos too, but a different batch of them. I hadn't seen this error crop up there. I let my Mac take a crack at a video my PC had been stumbling on, and it got through it just fine.
Merely using an older version of ffmpeg on my PC didn't help it build a manifest from the already-generated videos created with Handbrake CLI 1.7.0. In an hour or so I'll be able to see if videos newly-encoded using the older Handbrake help.