[FFmpeg-trac] #9902(undetermined:new): Unable to Play encoded video using FFmpeg webm_dash_manifest encoder with Dash.js

FFmpeg trac at avcodec.org
Mon Sep 5 09:35:06 EEST 2022


#9902: Unable to Play encoded video using FFmpeg webm_dash_manifest encoder with
Dash.js
-------------------------------------+-------------------------------------
             Reporter:  shirsendu    |                    Owner:  (none)
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:
                                     |  undetermined
              Version:  git-master   |               Resolution:
             Keywords:  dash         |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by shirsendu:

Old description:

> Hi,
>     I am trying to transcode in webm dash format using
> {{{
> ffmpeg \
>  -f webm_dash_manifest -i video_160x90_250k.webm \
>  -f webm_dash_manifest -i video_320x180_500k.webm \
>  -f webm_dash_manifest -i video_640x360_750k.webm \
>  -f webm_dash_manifest -i audio_128k.webm \
>  -c copy -map 0 -map 1 -map 2 -map 3 \
>  -adaptation_sets "id=0,streams=0,1,2 id=1,streams=3" \
>  -f webm_dash_manifest \
>  manifest.mpd
> }}}
> Which generates a manifest.mpd file which looks like this
>
> {{{
> <?xml version="1.0" encoding="UTF-8"?>
> <MPD
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xmlns="urn:mpeg:DASH:schema:MPD:2011"
>   xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011"
>   type="static"
>   mediaPresentationDuration="PT8864.3S"
>   minBufferTime="PT1S"
>   profiles="urn:mpeg:dash:profile:webm-on-demand:2012">
> <Period id="0" start="PT0S" duration="PT8864.3S" >
> <AdaptationSet id="0" mimeType="audio/webm" codecs="opus" lang="hin"
> audioSamplingRate="48000" bitstreamSwitching="true"
> subsegmentAlignment="true" subsegmentStartsWithSAP="1">
> <Representation id="0" bandwidth="99209">
> <BaseURL>audio.webm</BaseURL>
> <SegmentBase
>   indexRange="109939455-109976406">
> <Initialization
>   range="0-864" />
> </SegmentBase>
> </Representation>
> </AdaptationSet>
> <AdaptationSet id="1" mimeType="video/webm" codecs="av1" lang="hin"
> bitstreamSwitching="false" subsegmentAlignment="true"
> subsegmentStartsWithSAP="1">
> <Representation id="1" bandwidth="474873" width="792" height="330">
> <BaseURL>video-800p.webm</BaseURL>
> <SegmentBase
>   indexRange="200763509-200791162">
> <Initialization
>   range="0-884" />
> </SegmentBase>
> </Representation>
> <Representation id="2" bandwidth="1236911" width="1272" height="530">
> <BaseURL>video-1280p.webm</BaseURL>
> <SegmentBase
>   indexRange="596699241-596726959">
> <Initialization
>   range="0-884" />
> </SegmentBase>
> </Representation>
> <Representation id="3" bandwidth="3732848" width="1920" height="800">
> <BaseURL>video-1920p.webm</BaseURL>
> <SegmentBase
>   indexRange="1775390115-1775417858">
> <Initialization
>   range="0-884" />
> </SegmentBase>
> </Representation>
> </AdaptationSet>
> </Period>
> </MPD>
> }}}
>
> Trying to play the video using dash.js failed saying
>
> then if I change this specific line codecs part
> {{{
> <AdaptationSet id="1" mimeType="video/webm" codecs="av1" lang="hin"
> bitstreamSwitching="false" subsegmentAlignment="true"
> subsegmentStartsWithSAP="1">
> }}}
> codecs="av1" -> codecs="av01.0.01M.08.0.111.01.01.01.0"
>
> then files starts playing normally
>
> site note I got this codec name when I try to transcode using dash
> encoder in ffmpeg not the webm_dash_manifest encoder
>
> also bitstreamSwitching in video is false by default where it should be
> true for a video

New description:

 Hi,
     I am trying to transcode in webm dash format using

 {{{
 ffmpeg \
  -f webm_dash_manifest -i video-800p.webm \
  -f webm_dash_manifest -i video-1280p.webm \
  -f webm_dash_manifest -i video-1920p.webm \
  -f webm_dash_manifest -i audio.webm \
  -c copy -map 0 -map 1 -map 2 -map 3 \
  -adaptation_sets "id=0,streams=0,1,2 id=1,streams=3" \
  -f webm_dash_manifest \
  manifest.mpd
 }}}

 {{{
 webm_dash_manifest_duration: 6.91658e+06
       webm_dash_manifest_initialization_range: 544
       webm_dash_manifest_file_name: video-1280p.webm
       webm_dash_manifest_track_number: 1
       webm_dash_manifest_cues_start: 645266452
       webm_dash_manifest_cues_end: 645288083
       webm_dash_manifest_bandwidth: 1230753
       webm_dash_manifest_cluster_keyframe: 1
       webm_dash_manifest_cue_timestamps:
 0,6708,13417,20125,26833,33542,40250,46958,53667,60375,67083,73792,80500,87208,93917,100625,107333,114042,120750,127458,134167,140875,147583,154292,161000,167708,174417,181125,187833,194542,201250,207958,214667,221375,228083,234792,241500,248208,254917,26
 [libdav1d @ 000002a65e5cdc80] libdav1d 1.0.0-46-gcd5e415
 Input #3, webm_dash_manifest, from './media/_Movie/Chandigarh Kare
 Aashiqui/Chandigarh Kare Aashiqui/video-1920p.webm':
   Metadata:
     title           :
     ENCODER         : Lavf59.27.100
   Duration: 01:55:16.58, bitrate: 2139 kb/s
   Stream #3:0: Video: av1 (Main), yuv420p10le(tv, bt709, progressive),
 1920x820, SAR 1:1 DAR 96:41, 24 fps, 24 tbr, 1k tbn (default)
     Metadata:
       title           : Encoded by HashMiner!
       ENCODER         : Lavc59.37.100 libsvtav1
       DURATION        : 01:55:16.584000000
       webm_dash_manifest_duration: 6.91658e+06
       webm_dash_manifest_initialization_range: 544
       webm_dash_manifest_file_name: video-1920p.webm
       webm_dash_manifest_track_number: 1
       webm_dash_manifest_cues_start: 1850068057
       webm_dash_manifest_cues_end: 1850089705
       webm_dash_manifest_bandwidth: 3777662
       webm_dash_manifest_cluster_keyframe: 1
       webm_dash_manifest_cue_timestamps:
 0,6708,13417,20125,26833,33542,40250,46958,53667,60375,67083,73792,80500,87208,93917,100625,107333,114042,120750,127458,134167,140875,147583,154292,161000,167708,174417,181125,187833,194542,201250,207958,214667,221375,228083,234792,241500,248208,254917,26
 Output #0, webm_dash_manifest, to './media/Movie/4-1/0/manifest.mpd':
   Metadata:
     title           :
     encoder         : Lavf59.27.100
   Stream #0:0(hin): Audio: opus, 48000 Hz, stereo, fltp (default)
     Metadata:
       title           :
       ENCODER         : Lavc59.37.100 libopus
       DURATION        : 01:55:16.648000000
       webm_dash_manifest_duration: 6.91665e+06
       webm_dash_manifest_initialization_range: 503
       webm_dash_manifest_file_name: audio.webm
       webm_dash_manifest_track_number: 1
       webm_dash_manifest_cues_start: 85783808
       webm_dash_manifest_cues_end: 85812590
       webm_dash_manifest_bandwidth: 99206
       webm_dash_manifest_cluster_keyframe: 1
       webm_dash_manifest_cue_timestamps:
 -7,0,4974,4981,9974,9981,14974,14981,19974,19981,24974,24981,29974,29981,34974,34981,39974,39981,44974,44981,49974,49981,54974,54981,59974,59981,64974,64981,69974,69981,74974,74981,79974,79981,84974,84981,89974,89981,94974,94981,99974,99981,104974,104981,
   Stream #0:1: Video: av1 (Main), yuv420p10le(tv, bt709, progressive),
 768x328 [SAR 1:1 DAR 96:41], q=2-31, 24 fps, 24 tbr, 1k tbn (default)
     Metadata:
       title           : Encoded by HashMiner!
       ENCODER         : Lavc59.37.100 libsvtav1
       DURATION        : 01:55:16.584000000
       webm_dash_manifest_duration: 6.91658e+06
       webm_dash_manifest_initialization_range: 544
       webm_dash_manifest_file_name: video-800p.webm
       webm_dash_manifest_track_number: 1
       webm_dash_manifest_cues_start: 212306368
       webm_dash_manifest_cues_end: 212327942
       webm_dash_manifest_bandwidth: 481344
       webm_dash_manifest_cluster_keyframe: 1
       webm_dash_manifest_cue_timestamps:
 0,6708,13417,20125,26833,33542,40250,46958,53667,60375,67083,73792,80500,87208,93917,100625,107333,114042,120750,127458,134167,140875,147583,154292,161000,167708,174417,181125,187833,194542,201250,207958,214667,221375,228083,234792,241500,248208,254917,26
   Stream #0:2: Video: av1 (Main), yuv420p10le(tv, bt709, progressive),
 1344x574 [SAR 1:1 DAR 96:41], q=2-31, 24 fps, 24 tbr, 1k tbn (default)
     Metadata:
       title           : Encoded by HashMiner!
       ENCODER         : Lavc59.37.100 libsvtav1
       DURATION        : 01:55:16.584000000
       webm_dash_manifest_duration: 6.91658e+06
       webm_dash_manifest_initialization_range: 544
       webm_dash_manifest_file_name: video-1280p.webm
       webm_dash_manifest_track_number: 1
       webm_dash_manifest_cues_start: 645266452
       webm_dash_manifest_cues_end: 645288083
       webm_dash_manifest_bandwidth: 1230753
       webm_dash_manifest_cluster_keyframe: 1
       webm_dash_manifest_cue_timestamps:
 0,6708,13417,20125,26833,33542,40250,46958,53667,60375,67083,73792,80500,87208,93917,100625,107333,114042,120750,127458,134167,140875,147583,154292,161000,167708,174417,181125,187833,194542,201250,207958,214667,221375,228083,234792,241500,248208,254917,26
   Stream #0:3: Video: av1 (Main), yuv420p10le(tv, bt709, progressive),
 1920x820 [SAR 1:1 DAR 96:41], q=2-31, 24 fps, 24 tbr, 1k tbn (default)
     Metadata:
       title           : Encoded by HashMiner!
       ENCODER         : Lavc59.37.100 libsvtav1
       DURATION        : 01:55:16.584000000
       webm_dash_manifest_duration: 6.91658e+06
       webm_dash_manifest_initialization_range: 544
       webm_dash_manifest_file_name: video-1920p.webm
       webm_dash_manifest_track_number: 1
       webm_dash_manifest_cues_start: 1850068057
       webm_dash_manifest_cues_end: 1850089705
       webm_dash_manifest_bandwidth: 3777662
       webm_dash_manifest_cluster_keyframe: 1
       webm_dash_manifest_cue_timestamps:
 0,6708,13417,20125,26833,33542,40250,46958,53667,60375,67083,73792,80500,87208,93917,100625,107333,114042,120750,127458,134167,140875,147583,154292,161000,167708,174417,181125,187833,194542,201250,207958,214667,221375,228083,234792,241500,248208,254917,26
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #1:0 -> #0:1 (copy)
   Stream #2:0 -> #0:2 (copy)
   Stream #3:0 -> #0:3 (copy)
 Press [q] to stop, [?] for help
 frame=    0 fps=0.0 q=-1.0 q=-1.0 q=-1.0 size=       2kB time=00:00:00.00
 bitrate=N/A speed=   0x
 frame=    0 fps=0.0 q=-1.0 Lq=-1.0 q=-1.0 size=       2kB time=00:00:00.00
 bitrate=N/A speed=   0x
 video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

 Which generates a manifest.mpd file which looks like this

 {{{
 <?xml version="1.0" encoding="UTF-8"?>
 <MPD
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="urn:mpeg:DASH:schema:MPD:2011"
   xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011"
   type="static"
   mediaPresentationDuration="PT8864.3S"
   minBufferTime="PT1S"
   profiles="urn:mpeg:dash:profile:webm-on-demand:2012">
 <Period id="0" start="PT0S" duration="PT8864.3S" >
 <AdaptationSet id="0" mimeType="audio/webm" codecs="opus" lang="hin"
 audioSamplingRate="48000" bitstreamSwitching="true"
 subsegmentAlignment="true" subsegmentStartsWithSAP="1">
 <Representation id="0" bandwidth="99209">
 <BaseURL>audio.webm</BaseURL>
 <SegmentBase
   indexRange="109939455-109976406">
 <Initialization
   range="0-864" />
 </SegmentBase>
 </Representation>
 </AdaptationSet>
 <AdaptationSet id="1" mimeType="video/webm" codecs="av1" lang="hin"
 bitstreamSwitching="false" subsegmentAlignment="true"
 subsegmentStartsWithSAP="1">
 <Representation id="1" bandwidth="474873" width="792" height="330">
 <BaseURL>video-800p.webm</BaseURL>
 <SegmentBase
   indexRange="200763509-200791162">
 <Initialization
   range="0-884" />
 </SegmentBase>
 </Representation>
 <Representation id="2" bandwidth="1236911" width="1272" height="530">
 <BaseURL>video-1280p.webm</BaseURL>
 <SegmentBase
   indexRange="596699241-596726959">
 <Initialization
   range="0-884" />
 </SegmentBase>
 </Representation>
 <Representation id="3" bandwidth="3732848" width="1920" height="800">
 <BaseURL>video-1920p.webm</BaseURL>
 <SegmentBase
   indexRange="1775390115-1775417858">
 <Initialization
   range="0-884" />
 </SegmentBase>
 </Representation>
 </AdaptationSet>
 </Period>
 </MPD>
 }}}

 Trying to play the video using dash.js failed saying

 then if I change this specific line codecs part
 {{{
 <AdaptationSet id="1" mimeType="video/webm" codecs="av1" lang="hin"
 bitstreamSwitching="false" subsegmentAlignment="true"
 subsegmentStartsWithSAP="1">
 }}}
 codecs="av1" -> codecs="av01.0.01M.08.0.111.01.01.01.0"

 then files starts playing normally

 site note I got this codec name when I try to transcode using dash encoder
 in ffmpeg not the webm_dash_manifest encoder

 also bitstreamSwitching in video is false by default where it should be
 true for a video

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9902#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list