Opened 12 days ago

#11316 new defect

DASH manifest generator: incomplete codecstring

Reported by: Suxsem Owned by:
Priority: normal Component: ffmpeg
Version: git-master Keywords: DASH
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

the DASH manifest generator doesn't produce a valid codecstring, i.e.

codecs="hev1"

should be

codecs="hev1.1.6.L186.0"

in order for the stream to be playable in the browser.

This is the output of ffprobe:

ffprobe -v verbose rtsp://admin:***@camera-retro.lan/ch0_0
ffprobe version 2024-11-18-git-970d57988d-essentials_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 14.2.0 (Rev1, 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-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      59. 47.100 / 59. 47.100
  libavcodec     61. 25.100 / 61. 25.100
  libavformat    61.  9.100 / 61.  9.100
  libavdevice    61.  4.100 / 61.  4.100
  libavfilter    10.  6.101 / 10.  6.101
  libswscale      8.  9.101 /  8.  9.101
  libswresample   5.  4.100 /  5.  4.100
  libpostproc    58.  4.100 / 58.  4.100
[tcp @ 000002a2c2c0ef00] Starting connection attempt to 192.168.12.162 port 554
[tcp @ 000002a2c2c0ef00] Successfully connected to 192.168.12.162 port 554
[rtsp @ 000002a2c2c0e7c0] SDP:
v=0
o=- 1732188474342789 1 IN IP4 192.168.12.162
s=Session streamed by "rRTSPServer"
i=ch0_0.h264
t=0 0
a=tool:LIVE555 Streaming Media v2023.01.19
a=type:broadcast
a=control:*
a=range:npt=now-
a=x-qt-text-nam:Session streamed by "rRTSPServer"
a=x-qt-text-inf:ch0_0.h264
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:700
a=rtpmap:96 H265/90000
a=fmtp:96 profile-space=0;profile-id=1;tier-flag=0;level-id=186;interop-constraints=000000000000;sprop-vps=QAEMAf//AWAAAAMAAAMAAAMAAAMAuqwJ;sprop-sps=QgEBAWAAAAMAAAMAAAMAAAMAuqABICAFEf5a7kSIi/Lc1AQEBAI=;sprop-pps=RAHA8oSJAzJA
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
b=AS:32
a=rtpmap:97 MPEG4-GENERIC/16000
a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1408
a=control:track2

[rtsp @ 000002a2c2c0e7c0] setting jitter buffer size to 500
    Last message repeated 1 times
Input #0, rtsp, from 'rtsp://admin:v24226148n@camera-retro.lan/ch0_0':
  Metadata:
    title           : Session streamed by "rRTSPServer"
    comment         : ch0_0.h264
  Duration: N/A, start: 0.000250, bitrate: N/A
  Stream #0:0: Video: hevc (Main), 1 reference frame, yuv420p(tv, bt709, left), 2304x1296, 20 fps, 20 tbr, 90k tbn
  Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp

How to reproduce:

ffmpeg -i rtsp://admin:***@camera-retro.lan/ch0_0 \
       -map 0 \
       -codec:v copy \
       -codec:a copy \
       -f dash \
       -use_template 1 \
       -use_timeline 1 \
       -window_size 50 \
       -extra_window_size 5 \
       -seg_duration 5 \
       tmp/output.mpd

ffmpeg version 2024-11-18-git-970d57988d-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 14.2.0 (Rev1, 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-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      59. 47.100 / 59. 47.100
  libavcodec     61. 25.100 / 61. 25.100
  libavformat    61.  9.100 / 61.  9.100
  libavdevice    61.  4.100 / 61.  4.100
  libavfilter    10.  6.101 / 10.  6.101
  libswscale      8.  9.101 /  8.  9.101
  libswresample   5.  4.100 /  5.  4.100
  libpostproc    58.  4.100 / 58.  4.100
Input #0, rtsp, from 'rtsp://admin:v24226148n@camera-retro.lan/ch0_0':
  Metadata:
    title           : Session streamed by "rRTSPServer"
    comment         : ch0_0.h264
  Duration: N/A, start: 0.000250, bitrate: N/A
  Stream #0:0: Video: hevc (Main), yuv420p(tv, bt709), 2304x1296, 80 tbr, 90k tbn
  Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
[dash @ 000001b15d377a80] No bit rate set for stream 0
[dash @ 000001b15d377a80] Opening 'tmp/init-stream0.m4s' for writing
[dash @ 000001b15d377a80] No bit rate set for stream 1
[dash @ 000001b15d377a80] Opening 'tmp/init-stream1.m4s' for writing
Output #0, dash, to 'tmp/output.mpd':
  Metadata:
    title           : Session streamed by "rRTSPServer"
    comment         : ch0_0.h264
    encoder         : Lavf61.9.100
  Stream #0:0: Video: hevc (Main), yuv420p(tv, bt709), 2304x1296, q=2-31, 80 tbr, 90k tbn
  Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp
Press [q] to stop, [?] for help
[dash @ 000001b15d377a80] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[dash @ 000001b15d377a80] Opening 'tmp/chunk-stream0-00001.m4s.tmp' for writing
[dash @ 000001b15d377a80] Opening 'tmp/chunk-stream1-00001.m4s.tmp' for writing
[dash @ 000001b15d377a80] Opening 'tmp/output.mpd.tmp' for writingpeed= 1.3x
[dash @ 000001b15d377a80] Opening 'tmp/chunk-stream1-00002.m4s.tmp' for writing
....

This is the generated manifest:

<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="urn:mpeg:dash:schema:mpd:2011"
	xmlns:xlink="http://www.w3.org/1999/xlink"
	xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
	profiles="urn:mpeg:dash:profile:isoff-live:2011"
	type="static"
	mediaPresentationDuration="PT4M32.9S"
	maxSegmentDuration="PT5.0S"
	minBufferTime="PT12.0S">
	<ProgramInformation>
		<Title>Session streamed by &quot;rRTSPServer&quot;</Title>
	</ProgramInformation>
	<ServiceDescription id="0">
	</ServiceDescription>
	<Period id="0" start="PT0.0S">
		<AdaptationSet id="0" contentType="video" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" maxWidth="2304" maxHeight="1296" par="16:9">
			<Representation id="0" mimeType="video/mp4" codecs="hev1" bandwidth="840731" width="2304" height="1296" scanType="unknown" sar="1:1">
				<SegmentTemplate timescale="90000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startNumber="1">
					<SegmentTimeline>
						<S t="0" d="542990" />
						<S d="539404" />
						<S d="538874" />
						...
					</SegmentTimeline>
				</SegmentTemplate>
			</Representation>
		</AdaptationSet>
		<AdaptationSet id="1" contentType="audio" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true">
			<Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="33712" audioSamplingRate="16000">
				<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="1" />
				<SegmentTemplate timescale="16000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startNumber="6">
					<SegmentTimeline>
						<S t="404078" d="80895" />
						<S d="80897" />
						<S d="80900" />
						...
					</SegmentTimeline>
				</SegmentTemplate>
			</Representation>
		</AdaptationSet>
	</Period>
</MPD>

I think this could be related: https://trac.ffmpeg.org/ticket/9902

Change History (0)

Note: See TracTickets for help on using tickets.