
Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (67)
-
Submit bugs and patches
13 avril 2011Unfortunately a software is never perfect.
If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
You may also (...) -
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (8590)
-
Spring content + MPD manifest and Dash.js player [closed]
31 octobre 2024, par IupaI'm total newbie to video content from web, however I was curious how those things work actually, and I found so far that for web pages there are already js libs which firstly customize the video html tag to support many features like resolution/subtitles/speed etc,secondly they work with specific manifest file as a src for video, it's *.mpd extension and xml format where is described how to play the chunks of video, now in order to generate such manifests I need another libs like ffmpeg that can generate not only manifests but the chunks as well in different resolutions and other tons of settings (kinda crazy ¯_(ツ)_/¯), anyway now I understood that in order to use spring content lib I need to generate all of those during the uploads of files, are there some tutorials/best practices for such ?


-
MPD MPEG-DASH - Shows only one bitrate
13 août 2018, par Justin RecHelp. I wont show bitrate.
player.getBitrateInfoListFor("video") ;
Shows only one bitrate - 454948manifest.mpd generated by GPAC
<period duration="PT0H21M48.338S">
<adaptationset segmentalignment="true" group="1" maxwidth="270" maxheight="480" maxframerate="2070000/93437" par="270:480" lang="und">
<representation mimetype="video/mp4" codecs="avc3.640015" width="270" height="480" framerate="2070000/93437" sar="1:1" startwithsap="1" bandwidth="454948">
<segmenttemplate media="480_bbb/segment__track1_$Number$.m4s" timescale="2070000" startnumber="1" duration="8280000" initialization="480_bbb/segment__track1_init.mp4"></segmenttemplate>
</representation>
</adaptationset>
<adaptationset segmentalignment="true" group="1" maxwidth="202" maxheight="360" maxframerate="2070000/93437" par="202:360" lang="und">
<representation mimetype="video/mp4" codecs="avc3.64000D" width="202" height="360" framerate="2070000/93437" sar="1:1" startwithsap="1" bandwidth="281508">
<segmenttemplate media="360_bbb/segment__track1_$Number$.m4s" timescale="2070000" startnumber="1" duration="8280000" initialization="360_bbb/segment__track1_init.mp4"></segmenttemplate>
</representation>
</adaptationset>
<adaptationset segmentalignment="true" group="1" maxwidth="134" maxheight="240" maxframerate="2070000/93437" par="134:240" lang="und">
<representation mimetype="video/mp4" codecs="avc3.64000B" width="134" height="240" framerate="2070000/93437" sar="1:1" startwithsap="1" bandwidth="182832">
<segmenttemplate media="240_bbb/segment__track1_$Number$.m4s" timescale="2070000" startnumber="1" duration="8280000" initialization="240_bbb/segment__track1_init.mp4"></segmenttemplate>
</representation>
</adaptationset>
<adaptationset segmentalignment="true" group="1" maxwidth="80" maxheight="144" maxframerate="2070000/93437" par="80:144" lang="und">
<representation mimetype="video/mp4" codecs="avc3.640009" width="80" height="144" framerate="2070000/93437" sar="1:1" startwithsap="1" bandwidth="99667">
<segmenttemplate media="144_bbb/segment__track1_$Number$.m4s" timescale="2070000" startnumber="1" duration="8280000" initialization="144_bbb/segment__track1_init.mp4"></segmenttemplate>
</representation>
</adaptationset>
<adaptationset segmentalignment="true" lang="und">
<representation mimetype="audio/mp4" codecs="mp4a.40.2" startwithsap="1" bandwidth="66056">
<audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="1"></audiochannelconfiguration>
<segmenttemplate media="audio_bbb/segment__track2_$Number$.m4s" timescale="48000" startnumber="1" duration="192000" initialization="audio_bbb/segment__track2_init.mp4"></segmenttemplate>
</representation>
</adaptationset>
</period>player.getBitrateInfoListFor("video") ;
Shows only one bitrate - 454948 -
How to finalize LL-DASH stream MPD file using Shaka Packager [closed]
11 août, par ArjitI'm using Shaka Packager with FFmpeg piping to produce LL-DASH live streams from an NGINX-RTMP input. Streaming works fine, but when the publisher stops streaming, Shaka Player continuously trying to fetch & throws 404 errors for segment files that don’t exist.


For example, if the last segment is
29.m4s
, the player still tries to fetch :

GET http://localhost:8080/dash/stream/480p_30.m4s 404 (Not Found)
GET http://localhost:8080/dash/stream/720p_31.m4s 404 (Not Found)



Even though the stream ended at segment 29.


Shaka-packager :


"$SHAKA_PACKAGER_BIN" \
 "in=${VIDEO_720P_FIFO},stream=video,format=mp4,init_segment=${STREAM_OUTPUT_DIR}/720p_init.mp4,segment_template=${STREAM_OUTPUT_DIR}/720p_\$Number\$.m4s,bandwidth=3000000,hls_name=720p" \
 "in=${VIDEO_480P_FIFO},stream=video,format=mp4,init_segment=${STREAM_OUTPUT_DIR}/480p_init.mp4,segment_template=${STREAM_OUTPUT_DIR}/480p_\$Number\$.m4s,bandwidth=1500000,hls_name=480p" \
 "in=${AUDIO_FIFO},stream=audio,format=mp4,init_segment=${STREAM_OUTPUT_DIR}/audio_init.mp4,segment_template=${STREAM_OUTPUT_DIR}/audio_\$Number\$.m4s,bandwidth=128000,hls_name=audio" \
 --hls_master_playlist_output "${STREAM_OUTPUT_DIR}/master.m3u8" \
 --hls_playlist_type LIVE \
 --mpd_output "${STREAM_OUTPUT_DIR}/manifest.mpd" \
 --io_block_size 65536 \
 --segment_duration 2 \
 --low_latency_dash_mode=true \
 --utc_timings "urn:mpeg:dash:utc:http-xsdate:2014=http://time.akamai.com/?iso" \
 --min_buffer_time 1 \
 --time_shift_buffer_depth 60 \
 --hls_start_time_offset -2 \
 --preserved_segments_outside_live_window 10



FFMPEG :


ffmpeg -y -re -i "rtmp://localhost:1935/live/${STREAM_KEY}" \
-filter_complex \
"[0:v]split=2[v720][v480]; \
[v720]scale=w=1280:h=720,setsar=1[v720out]; \
[v480]scale=w=854:h=480,setsar=1[v480out]; \
[0:a]aresample=44100[aout]" \
\
-map "[v720out]" -c:v libx264 -b:v 3000k -maxrate 3000k -bufsize 6000k -preset veryfast -tune zerolatency -g 60 -keyint_min 60 -sc_threshold 0 \
-movflags empty_moov+default_base_moof -frag_duration 2000000 -f mp4 ${VIDEO_720P_FIFO} \
-map "[v480out]" -c:v libx264 -b:v 1500k -maxrate 1500k -bufsize 3000k -preset veryfast -tune zerolatency -g 60 -keyint_min 60 -sc_threshold 0 \
-movflags empty_moov+default_base_moof -frag_duration 2000000 -f mp4 ${VIDEO_480P_FIFO} \
-map "[aout]" -c:a aac -b:a 128k \
-movflags empty_moov+default_base_moof -frag_duration 2000000 -f mp4 ${AUDIO_FIFO} \
-loglevel info -stats



To finalize the stream, I have a script that :


- 

- Waits for segments to stop being created
- Sends
SIGINT
to FFmpeg and Shaka Packager - Manually appends
#EXT-X-ENDLIST
to HLS playlists








Here’s a simplified version of the finalization logic :


#!/bin/bash
exec >> /output/debug.log 2>&1

STREAM_KEY="$1"

FFMPEG_PID_FILE="/output/${STREAM_KEY}_transcoder.pid"
SHAKA_PID_FILE="/output/${STREAM_KEY}_packager.pid"

VIDEO_720P_FIFO="/output/video_720p.pipe"
VIDEO_480P_FIFO="/output/video_480p.pipe"
AUDIO_FIFO="/output/audio.pipe"

HLS_PLAYLISTS_DIR="/output/${STREAM_KEY}"

LAST_COUNT=-1
STABLE_COUNT=0
MAX_STABLE=5 # 5 seconds of no new segments

while true; do
 CURRENT_COUNT=$(ls ${STREAM_OUTPUT_DIR}/*.m4s 2>/dev/null | wc -l)
 if [ "$CURRENT_COUNT" -eq "$LAST_COUNT" ]; then
 STABLE_COUNT=$((STABLE_COUNT + 1))
 else
 STABLE_COUNT=0
 fi

 if [ "$STABLE_COUNT" -ge "$MAX_STABLE" ]; then
 echo "No new segments for $MAX_STABLE seconds, safe to finalize."
 break
 fi

 LAST_COUNT=$CURRENT_COUNT
 sleep 1
done

# Stop Shaka Packager
if [ -f "$SHAKA_PID_FILE" ]; then
 SHAKA_PID=$(cat "$SHAKA_PID_FILE")
 kill -INT $SHAKA_PID
 echo "Waiting for Shaka Packager process $SHAKA_PID to finish..."
 while kill -0 $SHAKA_PID > /dev/null 2>&1; do
 sleep 1
 done
 echo "$(date): Killed Shaka Packager PID $SHAKA_PID"
 rm -f "$SHAKA_PID_FILE"
fi

# Stop FFmpeg transcoder if still running
if [ -f "$FFMPEG_PID_FILE" ]; then
 FFMPEG_PID=$(cat "$FFMPEG_PID_FILE")
 # kill -SIGINT $FFMPEG_PID
 kill -9 $FFMPEG_PID
 echo "Waiting for FFmpeg process $SHAKA_PID to finish..."
 while kill -0 $FFMPEG_PID > /dev/null 2>&1; do
 sleep 1
 done

 echo "$(date): Killed FFmpeg PID $FFMPEG_PID"
 rm -f "$FFMPEG_PID_FILE"
fi




for playlist in "$HLS_PLAYLISTS_DIR"/*.m3u8; do
 if [[ "$(basename "$playlist")" != "master.m3u8" ]]; then
 echo "#EXT-X-ENDLIST" >> "$playlist"
 fi
done

rm -f "$VIDEO_720P_FIFO" "$VIDEO_480P_FIFO" "$AUDIO_FIFO"

echo "$(date): Finalization complete for stream $STREAM_KEY."




shaka-packager wait infinitely when i am sending
INT/TERM
.

Question :


- 

- Why doesn't Shaka Packager finalize the
LL-DASH MPD
manifest when
receivingSIGINT
? - Is there a way to tell Shaka Packager to write the final segments and
set
availabilityEndTime
without switching toVOD
mode ? - Should I be doing something manually to flush the last segments or
finalize the MPD, similar to
#EXT-X-ENDLIST
in HLS ?








I only want to gracefully end the stream so Shaka Player doesn't try to fetch non-existent segments, without switching the stream to VOD mode.