Recherche avancée

Médias (0)

Mot : - Tags -/diogene

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (51)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

Sur d’autres sites (6679)

  • Use FFMPEG to generate MPD files for MPEG-DASH adaptive streaming

    9 octobre 2020, par CMOS

    So I am trying to setup adaptive streaming and I have what I think is 80-90% of the problem finished. Right now I ingest my source video, transcode it into 5 resolutions each with 3 bitrates (low, medium, high) and then I split all of those videos into 5 second chunks so that the user can always have the best viewing possible. Now I am at the point where I need to generate / create my MPD manifest file and I am having a hard time figuring out how. Almost everyone just says to use MP4Box but their license is too restrictive for my project.

    



    Is there anyway to generate a MPD file using FFMPEG when I segment my video ? or maybe generate a HLS that I can then convert into a MPD manifest ? Any info would be awesome, this is my current FFMPEG command (working)

    



    Note the $ variables are inputs into a bash script that set the input file, bitrate and scale.

    



    /usr/bin/ffmpeg \
  -re \
  -i $1 \
  -an \
  -c:v libx264 \
  -b:v $7 \
  -b:a 196k \
  -strict -2 \
  -movflags faststart \
  -pix_fmt yuv420p \
  -vf "scale='$4:trunc(ow/a/2)*2'" \
  -flags -global_header \
  -map 0 \
  -f segment \
  -segment_time 5 \
  -segment_list test.m3u8 \
  -segment_format mpegts \
  $2%05d.mp4


    


  • | NGINX | FFMPEG not creating DASH manifests or chunks in the designated DIR |

    7 avril 2020, par Mathew Knight

    Hopefully someone can help here, I have a setup that takes two input RTMP streams from two separate machines into my server. From here I am trying to serve some MPEG DASH manifests and chunks to an experimental spatial audio/360 web (.js) player.

    



    My issue is that while i can see the FFMPEG processes running and creating the Chunks the files themselves are not appearing in the specified folder and so the media player will not read the content.

    



    Is there something obvious that i am not doing that is preventing these files being written ?

    



    Any help with this would be amazing !!!

    



    Here is my config :

    



    #user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;


    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

}

rtmp {
        server {
            listen 1935;
            chunk_size 4096;

            application live {
            live on;
            record off;
            interleave off;
            wait_key on;
            meta on;
            wait_video off;
            idle_streams off;
            sync 300ms;
            session_relay on;
            #allow publish 127.0.0.1;
            #allow publish 192.168.2.0/24;
            allow publish all;
            #deny publish all;
            allow play all;    

         dash on;
            dash_nested on;
            dash_path /tmp/dash;
            dash_fragment 3;
            dash_playlist_length 120;
            dash_cleanup on;

            #dash_clock_compensation http_head;
            #dash_clock_helper_uri https://localhost/time;

    #dash_variant _low   bandwidth="500000"  width="640"  height="360";
            #dash_variant _med  bandwidth="1500000" width="1280"  height="720";
            #dash_variant _high bandwidth="5000000" width="1920" height="1080" max;

            # EDIT THESE SO THE LIVESTREAM_KEY IS REPLACED BY YOUR PERSONAL KEY THAT YOU CAN LOOK UP ON THE SITE OF THE PLATFORM
            # push rtmp://live-ams.twitch.tv/app/LIVESTREAM_KEY;
            # push rtmp://a.rtmp.youtube.com/live2/LIVESTREAM_KEY;
            # push rtmp://ingest-ams.mixer.com:1935/beam/LIVESTREAM_KEY;

         exec_push ffmpeg -re -an -i 'rtmp://localhost:1935/live/stream' -c:v libx264 -preset veryfast -s 1920x1080 -bufsize 15000k -b:v 15000k -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -an -f dash -init_seg_name 'init-stream$RepresentationID$_video.webm' -media_seg_name 'chunk-stream$RepresentationID$_video-$Number%05d$.webm' 'http://localhost:1935/dash/video.mpd' 2>>/var/log/nginx/ffmpegvideo.log;




            }



    application dash {
        #TRANSCODED VIDEO/AUDIO FROM FFMPEG COMES HERE?????
        live on;
        meta copy;

        record all;
        record_path /rec;
        }

        }


    server {
            listen 1936;
            chunk_size 4096;

            application live {
            live on;
            record off;
            interleave off;
            wait_key on;
            meta on;
            wait_video off;
            idle_streams off;
            sync 300ms;
            session_relay on;
            #allow publish 127.0.0.1;
            #allow publish 192.168.2.0/24;
            allow publish all;
            #deny publish all;
            allow play all;    


            # EDIT THESE SO THE LIVESTREAM_KEY IS REPLACED BY YOUR PERSONAL KEY THAT YOU CAN LOOK UP ON THE SITE OF THE PLATFORM
            # push rtmp://live-ams.twitch.tv/app/LIVESTREAM_KEY;
            # push rtmp://a.rtmp.youtube.com/live2/LIVESTREAM_KEY;
            # push rtmp://ingest-ams.mixer.com:1935/beam/LIVESTREAM_KEY;

    exec_push ffmpeg -re -i 'rtmp://localhost:1936/live/stream' -filter 'channelmap=0|1|2|3|4|5|6|7:' -c:a libopus -b:a 512k -vn -f dash -init_seg_name 'init-stream$RepresentationID$_audio_01-08ch.webm' -media_seg_name 'chunk-stream$RepresentationID$_audio_01-08ch-$Number%05d$.webm' 'http://localhost:1936/dash/audio_01-08ch.mpd' -filter 'channelmap=8|9|10|11|12|13|14|15:' -c:a libopus -b:a 512k -vn -f dash -init_seg_name 'init-stream$RepresentationID$_audio_09-16ch.webm' -media_seg_name 'chunk-stream$RepresentationID$_audio_09-16ch-$Number%05d$.webm' 'http://localhost:1936/dash/audio_09-16ch.mpd' 2>>/var/log/nginx/ffmpegaudio.log;
            }





    application dash {
        #TRANSCODED AUDIO FROM FFMPEG COMES HERE?????
        live on;
        meta copy;
        }


}
}


    



    and here is the output from my FFMPEG logs :

    



    AUDIO :

    



    ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
[aac @ 0x55bfeaaafc60] Channel layout 'stereo' with 2 channels does not match specified number of channels 16: ignoring specified channel layout
Guessed Channel Layout for Input Stream #0.0 : hexadecagonal
Input #0, flv, from 'rtmp://localhost:1936/live/stream':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 0
    displayHeight   : 0
    fps             : 0
    profile         : 
    level           : 
  Duration: 00:00:00.00, start: 0.042000, bitrate: N/A
    Stream #0:0: Audio: aac (LC), 48000 Hz, hexadecagonal, fltp, 512 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (aac (native) -> opus (libopus))
  Stream #0:0 -> #1:0 (aac (native) -> opus (libopus))
Press [q] to stop, [?] for help
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/init-stream_audio_01-08ch.webm' for writing
Output #0, dash, to 'http://localhost:1936/dash/audio_01-08ch.mpd':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 0
    displayHeight   : 0
    fps             : 0
    profile         : 
    level           : 
    encoder         : Lavf57.83.100
    Stream #0:0: Audio: opus (libopus), 48000 Hz, 7.1, flt, 512 kb/s
    Metadata:
      encoder         : Lavc57.107.100 libopus
[dash @ 0x55bfeaab43e0] Cannot use rename on non file protocol, this may lead to races and temporary partial files
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/init-stream_audio_09-16ch.webm' for writing
Output #1, dash, to 'http://localhost:1936/dash/audio_09-16ch.mpd':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 0
    displayHeight   : 0
    fps             : 0
    profile         : 
    level           : 
    encoder         : Lavf57.83.100
    Stream #1:0: Audio: opus (libopus), 48000 Hz, 7.1, flt, 512 kb/s
    Metadata:
      encoder         : Lavc57.107.100 libopus
size=N/A time=00:00:00.49 bitrate=N/A speed=0.986x    
size=N/A time=00:00:01.01 bitrate=N/A speed=1.01x    
size=N/A time=00:00:01.49 bitrate=N/A speed=0.993x    
size=N/A time=00:00:02.01 bitrate=N/A speed=   1x    
size=N/A time=00:00:02.49 bitrate=N/A speed=0.995x    
size=N/A time=00:00:03.01 bitrate=N/A speed=   1x    
size=N/A time=00:00:03.53 bitrate=N/A speed=   1x    
size=N/A time=00:00:04.01 bitrate=N/A speed=0.998x    
size=N/A time=00:00:04.53 bitrate=N/A speed=   1x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing
size=N/A time=00:00:05.01 bitrate=N/A speed=0.997x    
size=N/A time=00:00:05.53 bitrate=N/A speed=   1x    
size=N/A time=00:00:06.03 bitrate=N/A speed=0.999x    
size=N/A time=00:00:06.55 bitrate=N/A speed=   1x    
size=N/A time=00:00:07.05 bitrate=N/A speed=0.999x    
size=N/A time=00:00:07.55 bitrate=N/A speed=0.999x    
size=N/A time=00:00:08.07 bitrate=N/A speed=   1x    
size=N/A time=00:00:08.57 bitrate=N/A speed=   1x    
size=N/A time=00:00:09.09 bitrate=N/A speed=   1x    
size=N/A time=00:00:09.59 bitrate=N/A speed=   1x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing
size=N/A time=00:00:10.09 bitrate=N/A speed=0.999x    
size=N/A time=00:00:10.61 bitrate=N/A speed=   1x    
size=N/A time=00:00:11.09 bitrate=N/A speed=0.999x    
size=N/A time=00:00:11.61 bitrate=N/A speed=   1x    
size=N/A time=00:00:12.11 bitrate=N/A speed=0.999x    
size=N/A time=00:00:12.63 bitrate=N/A speed=   1x    
size=N/A time=00:00:13.13 bitrate=N/A speed=   1x    
size=N/A time=00:00:13.63 bitrate=N/A speed=0.999x    
size=N/A time=00:00:14.15 bitrate=N/A speed=   1x    
size=N/A time=00:00:14.63 bitrate=N/A speed=0.999x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing
size=N/A time=00:00:15.15 bitrate=N/A speed=   1x    
size=N/A time=00:00:15.67 bitrate=N/A speed=   1x    
size=N/A time=00:00:16.15 bitrate=N/A speed=0.999x    
size=N/A time=00:00:16.67 bitrate=N/A speed=   1x    
size=N/A time=00:00:17.15 bitrate=N/A speed=0.999x    
size=N/A time=00:00:17.67 bitrate=N/A speed=   1x    
size=N/A time=00:00:18.17 bitrate=N/A speed=   1x    
size=N/A time=00:00:18.67 bitrate=N/A speed=0.999x    
size=N/A time=00:00:19.19 bitrate=N/A speed=   1x    
size=N/A time=00:00:19.69 bitrate=N/A speed=   1x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing



    



    VIDEO :

    



    ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, flv, from 'rtmp://localhost:1935/live/stream':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 3840
    displayHeight   : 1920
    fps             : 30
    profile         : 
    level           : 
  Duration: 00:00:00.00, start: 0.033000, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuv420p(tv, bt470bg/bt709/bt709, progressive), 3840x1920 [SAR 1:1 DAR 2:1], 15360 kb/s, 30 fps, 30 tbr, 1k tbn, 60 tbc
    Stream #0:1: Audio: aac (LC), 48000 Hz, 7.1, fltp, 327 kb/s
Codec AVOption tile-columns (Number of tile columns to use, log2) specified for output file #0 (http://localhost:1935/dash/video.mpd) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Codec AVOption frame-parallel (Enable frame parallel decodability features) specified for output file #0 (http://localhost:1935/dash/video.mpd) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x55e24ea47f40] VBV maxrate unspecified, assuming CBR
[libx264 @ 0x55e24ea47f40] using SAR=9/8
[libx264 @ 0x55e24ea47f40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x55e24ea47f40] profile High, level 4.0
[libx264 @ 0x55e24ea47f40] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=150 keyint_min=76 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=cbr mbtree=1 bitrate=15000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=15000 vbv_bufsize=15000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/init-stream_video.webm' for writing
Output #0, dash, to 'http://localhost:1935/dash/video.mpd':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 3840
    displayHeight   : 1920
    fps             : 30
    profile         : 
    level           : 
    encoder         : Lavf57.83.100
    Stream #0:0: Video: h264 (libx264), yuv420p, 1920x1080 [SAR 9:8 DAR 2:1], q=-1--1, 15000 kb/s, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc57.107.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/15000000 buffer size: 15000000 vbv_delay: -1
frame=   11 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
[dash @ 0x55e24ea4b640] Cannot use rename on non file protocol, this may lead to races and temporary partial files
frame=   26 fps= 26 q=19.0 size=N/A time=00:00:00.10 bitrate=N/A speed=0.0997x    
frame=   42 fps= 28 q=17.0 size=N/A time=00:00:00.63 bitrate=N/A speed=0.421x    
frame=   57 fps= 28 q=14.0 size=N/A time=00:00:01.13 bitrate=N/A speed=0.565x    
frame=   72 fps= 29 q=15.0 size=N/A time=00:00:01.63 bitrate=N/A speed=0.65x    
frame=   87 fps= 29 q=14.0 size=N/A time=00:00:02.13 bitrate=N/A speed=0.706x    
frame=  102 fps= 29 q=16.0 size=N/A time=00:00:02.63 bitrate=N/A speed=0.746x    
frame=  118 fps= 29 q=16.0 size=N/A time=00:00:03.16 bitrate=N/A speed=0.785x    
frame=  133 fps= 29 q=17.0 size=N/A time=00:00:03.66 bitrate=N/A speed=0.807x    
frame=  148 fps= 29 q=15.0 size=N/A time=00:00:04.16 bitrate=N/A speed=0.826x    
frame=  163 fps= 29 q=18.0 size=N/A time=00:00:04.66 bitrate=N/A speed=0.841x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  178 fps= 29 q=17.0 size=N/A time=00:00:05.16 bitrate=N/A speed=0.854x    
frame=  193 fps= 29 q=18.0 size=N/A time=00:00:05.66 bitrate=N/A speed=0.864x    
frame=  208 fps= 29 q=15.0 size=N/A time=00:00:06.16 bitrate=N/A speed=0.873x    
frame=  224 fps= 30 q=15.0 size=N/A time=00:00:06.70 bitrate=N/A speed=0.885x    
frame=  239 fps= 30 q=16.0 size=N/A time=00:00:07.20 bitrate=N/A speed=0.892x    
frame=  254 fps= 30 q=15.0 size=N/A time=00:00:07.70 bitrate=N/A speed=0.898x    
frame=  269 fps= 30 q=17.0 size=N/A time=00:00:08.20 bitrate=N/A speed=0.903x    
frame=  284 fps= 30 q=16.0 size=N/A time=00:00:08.70 bitrate=N/A speed=0.908x    
frame=  299 fps= 30 q=16.0 size=N/A time=00:00:09.20 bitrate=N/A speed=0.912x    
frame=  314 fps= 30 q=18.0 size=N/A time=00:00:09.70 bitrate=N/A speed=0.916x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  330 fps= 30 q=17.0 size=N/A time=00:00:10.23 bitrate=N/A speed=0.922x    
frame=  345 fps= 30 q=17.0 size=N/A time=00:00:10.73 bitrate=N/A speed=0.925x    
frame=  360 fps= 30 q=15.0 size=N/A time=00:00:11.23 bitrate=N/A speed=0.928x    
frame=  375 fps= 30 q=15.0 size=N/A time=00:00:11.73 bitrate=N/A speed=0.931x    
frame=  390 fps= 30 q=16.0 size=N/A time=00:00:12.23 bitrate=N/A speed=0.933x    
frame=  405 fps= 30 q=17.0 size=N/A time=00:00:12.73 bitrate=N/A speed=0.935x    
frame=  420 fps= 30 q=14.0 size=N/A time=00:00:13.23 bitrate=N/A speed=0.937x    
frame=  435 fps= 30 q=16.0 size=N/A time=00:00:13.73 bitrate=N/A speed=0.94x    
frame=  450 fps= 30 q=16.0 size=N/A time=00:00:14.23 bitrate=N/A speed=0.941x    
frame=  465 fps= 30 q=18.0 size=N/A time=00:00:14.73 bitrate=N/A speed=0.943x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  481 fps= 30 q=16.0 size=N/A time=00:00:15.26 bitrate=N/A speed=0.946x    
frame=  496 fps= 30 q=17.0 size=N/A time=00:00:15.76 bitrate=N/A speed=0.947x    
frame=  511 fps= 30 q=16.0 size=N/A time=00:00:16.26 bitrate=N/A speed=0.949x    
frame=  526 fps= 30 q=16.0 size=N/A time=00:00:16.76 bitrate=N/A speed=0.95x    
frame=  541 fps= 30 q=16.0 size=N/A time=00:00:17.26 bitrate=N/A speed=0.951x    
frame=  557 fps= 30 q=16.0 size=N/A time=00:00:17.80 bitrate=N/A speed=0.953x    
frame=  572 fps= 30 q=15.0 size=N/A time=00:00:18.30 bitrate=N/A speed=0.954x    
frame=  587 fps= 30 q=16.0 size=N/A time=00:00:18.80 bitrate=N/A speed=0.955x    
frame=  602 fps= 30 q=16.0 size=N/A time=00:00:19.30 bitrate=N/A speed=0.956x    
frame=  618 fps= 30 q=18.0 size=N/A time=00:00:19.83 bitrate=N/A speed=0.958x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  633 fps= 30 q=17.0 size=N/A time=00:00:20.33 bitrate=N/A speed=0.959x    
frame=  648 fps= 30 q=16.0 size=N/A time=00:00:20.83 bitrate=N/A speed=0.96x    
frame=  663 fps= 30 q=16.0 size=N/A time=00:00:21.33 bitrate=N/A speed=0.961x    
frame=  678 fps= 30 q=16.0 size=N/A time=00:00:21.83 bitrate=N/A speed=0.961x    
frame=  693 fps= 30 q=16.0 size=N/A time=00:00:22.33 bitrate=N/A speed=0.962x    
frame=  708 fps= 30 q=16.0 size=N/A time=00:00:22.83 bitrate=N/A speed=0.962x    
frame=  723 fps= 30 q=17.0 size=N/A time=00:00:23.33 bitrate=N/A speed=0.963x    
frame=  739 fps= 30 q=17.0 size=N/A time=00:00:23.86 bitrate=N/A speed=0.965x    
frame=  754 fps= 30 q=16.0 size=N/A time=00:00:24.36 bitrate=N/A speed=0.965x    
frame=  769 fps= 30 q=18.0 size=N/A time=00:00:24.86 bitrate=N/A speed=0.966x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  784 fps= 30 q=15.0 size=N/A time=00:00:25.36 bitrate=N/A speed=0.966x    
frame=  799 fps= 30 q=15.0 size=N/A time=00:00:25.86 bitrate=N/A speed=0.967x    
frame=  814 fps= 30 q=15.0 size=N/A time=00:00:26.36 bitrate=N/A speed=0.967x    
frame=  829 fps= 30 q=16.0 size=N/A time=00:00:26.86 bitrate=N/A speed=0.968x    
frame=  844 fps= 30 q=15.0 size=N/A time=00:00:27.36 bitrate=N/A speed=0.968x    
frame=  860 fps= 30 q=15.0 size=N/A time=00:00:27.90 bitrate=N/A speed=0.97x    
frame=  875 fps= 30 q=15.0 size=N/A time=00:00:28.40 bitrate=N/A speed=0.97x    
frame=  890 fps= 30 q=15.0 size=N/A time=00:00:28.90 bitrate=N/A speed=0.971x    
frame=  905 fps= 30 q=16.0 size=N/A time=00:00:29.40 bitrate=N/A speed=0.971x    
frame=  920 fps= 30 q=18.0 size=N/A time=00:00:29.90 bitrate=N/A speed=0.971x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  935 fps= 30 q=16.0 size=N/A time=00:00:30.40 bitrate=N/A speed=0.971x    
frame=  950 fps= 30 q=16.0 size=N/A time=00:00:30.90 bitrate=N/A speed=0.972x    
frame=  966 fps= 30 q=15.0 size=N/A time=00:00:31.43 bitrate=N/A speed=0.973x    
frame=  981 fps= 30 q=15.0 size=N/A time=00:00:31.93 bitrate=N/A speed=0.973x    
frame=  996 fps= 30 q=16.0 size=N/A time=00:00:32.43 bitrate=N/A speed=0.974x    
frame= 1011 fps= 30 q=15.0 size=N/A time=00:00:32.93 bitrate=N/A speed=0.974x    
frame= 1026 fps= 30 q=16.0 size=N/A time=00:00:33.43 bitrate=N/A speed=0.974x    
frame= 1041 fps= 30 q=16.0 size=N/A time=00:00:33.93 bitrate=N/A speed=0.974x    
frame= 1057 fps= 30 q=16.0 size=N/A time=00:00:34.46 bitrate=N/A speed=0.975x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame= 1072 fps= 30 q=18.0 size=N/A time=00:00:34.96 bitrate=N/A speed=0.976x    
frame= 1087 fps= 30 q=18.0 size=N/A time=00:00:35.46 bitrate=N/A speed=0.976x    
frame= 1102 fps= 30 q=15.0 size=N/A time=00:00:35.96 bitrate=N/A speed=0.976x    
frame= 1117 fps= 30 q=15.0 size=N/A time=00:00:36.46 bitrate=N/A speed=0.976x    
frame= 1132 fps= 30 q=16.0 size=N/A time=00:00:36.96 bitrate=N/A speed=0.976x    
frame= 1148 fps= 30 q=16.0 size=N/A time=00:00:37.50 bitrate=N/A speed=0.977x    
frame= 1163 fps= 30 q=17.0 size=N/A time=00:00:38.00 bitrate=N/A speed=0.978x    
frame= 1178 fps= 30 q=15.0 size=N/A time=00:00:38.50 bitrate=N/A speed=0.978x    
frame= 1193 fps= 30 q=15.0 size=N/A time=00:00:39.00 bitrate=N/A speed=0.978x    
frame= 1208 fps= 30 q=18.0 size=N/A time=00:00:39.50 bitrate=N/A speed=0.978x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing  


    


  • Shaka Player returns 4001 error - Node.js local web server playing MPEG-DASH

    27 mai 2020, par salgarji

    I've used Chrome inspection tool to access 'Console' and analyze what is happening. Complete error information :

    



    D {severity: 2, category: 4, code: 4001, data: Array(1), handled: false}
category: 4
code: 4001
data: Array(1)
0: "http://localhost:8080/dash_segmentos/video.mpd"
length: 1
__proto__: Array(0)
handled: false
severity: 2
__proto__: Object


    



    My Server.js file :

    



    var http = require('http');
var fs = require('fs');

console.log(__dirname);

var path='dash_segmentos/video.mpd';
fs.access(path, fs.constants.R_OK | fs.constants.W_OK, (err) => {
    if (err) {
        console.log("%s doesn't exist", path);
    } else {
        console.log('can read/write %s', path);
    }
});

const PORT=8080; 

fs.readFile('./player.html', function (err, html) {

    if (err) throw err;    

    http.createServer(function(request, response) {  
        response.setHeader("Access-Control-Allow-Headers", "authorization, content-type");
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        response.writeHeader(200, {"Content-Type": "text/html"}); 
        response.write(html);  
        response.end();
    }).listen(PORT);
});


    



    As you can see I've added CORS (I guess it's correct) and a console.log to see if it's in the proper location. Furthermore, I've verified that file is accessible with fs.access and it returns can read/write dash_segmentos/video.mpd For this reason, I'm sure I am in the correct path and referencing the right file.

    



    The HTML code (player.html) provided to Server.js :

    



    &#xA;&#xA; &#xA; <code class="echappe-js">&lt;script type=&quot;text/javascript&quot;&amp;#xA;src=&quot;https://cdnjs.cloudflare.com/ajax/libs/shaka-player/2.5.11/shaka-player.compiled.js&quot;&gt;&lt;/script&gt;&#xA; &#xA; &#xA; 
    &#xA; &#xA;

    &#xA;&#xA; &lt;script&gt;&amp;#xA;function initApp() { &amp;#xA;shaka.polyfill.installAll(); &amp;#xA;if (shaka.Player.isBrowserSupported()) { &amp;#xA; initPlayer(); &amp;#xA; } else { &amp;#xA; console.error(&amp;#x27;Browser not supported!&amp;#x27;);&amp;#xA; }}&amp;#xA;&amp;#xA;function initPlayer() { &amp;#xA;var video = document.getElementById( &amp;#x27;video&amp;#x27; );&amp;#xA;var player = new shaka.Player( video );&amp;#xA; window.player = player; &amp;#xA;player.addEventListener(&amp;#x27;error&amp;#x27;, onErrorEvent); &amp;#xA;player.load(path).then(function (){&amp;#xA;    console.log(&amp;#x27;Video loaded correctly&amp;#x27;);&amp;#xA; }).catch(onError);&amp;#xA;&amp;#xA;function onErrorEvent(event) {&amp;#xA; onError(event.detail); &amp;#xA; }&amp;#xA;function onError(error) {&amp;#xA; console.error(&amp;#x27;Codigo de error: &amp;#x27;, error.code, &amp;#x27; en &amp;#x27;, error);&amp;#xA; }&amp;#xA;}&amp;#xA;&lt;/script&gt;&#xA;&#xA;&lt;script&gt;&amp;#xA;var path=&amp;#x27;dash_segmentos/video.mpd&amp;#x27;;&amp;#xA;//var path=&amp;#x27;https://dash.akamaized.net/dash264/TestCases/2c/qualcomm/1/MultiResMPEG2.mpd&amp;#x27;;&amp;#xA;//the URL above is working! but it won&amp;#x27;t read my local mpd&amp;#xA;&amp;#xA;document.addEventListener(&amp;#x27;DOMContentLoaded&amp;#x27;, initApp);&amp;#xA;&amp;#xA; &lt;/script&gt;&#xA; &#xA;&#xA;

    &#xA;&#xA;

    I've tried changing the URL to an online resource and the player is properly working.

    &#xA;&#xA;

    My fluent-ffmpeg command which generates the video is :

    &#xA;&#xA;

    var ffmpeg = require(&#x27;fluent-ffmpeg&#x27;);&#xA;&#xA;var grabacion = new ffmpeg();&#xA;&#xA;grabacion.addInput(&#x27;0&#x27;)&#xA;.inputOptions([&#x27;-y -nostdin&#x27;, &#x27;-f avfoundation&#x27;, &#x27;-video_size 1280x720&#x27;, &#x27;-framerate 30&#x27;])&#xA;.outputOptions([&#x27;-vcodec libx264&#x27;, &#x27;-keyint_min 0&#x27;, &#x27;-g 100&#x27;, &#x27;-map 0:v&#x27;, &#x27;-b:v 1000k&#x27;, &#x27;-f dash&#x27;,&#xA; &#x27;-use_template 1&#x27;, &#x27;-use_timeline 0&#x27;, &#x27;-init_seg_name video0-$RepresentationID$-$Number$.mp4&#x27;,&#xA; &#x27;-media_seg_name video0-$RepresentationID$-$Number$.mp4&#x27;,&#x27;-single_file 0&#x27;, &#x27;-remove_at_exit 0&#x27;, &#x27;-window_size 20&#x27;, &#x27;-seg_duration 4&#x27;])&#xA;.output(&#x27;/path/to/files/dash_segmentos/video.mpd&#x27;)&#xA;.run();&#xA;

    &#xA;&#xA;

    The mpd manifest file is :

    &#xA;&#xA;

    &lt;?xml version="1.0" encoding="utf-8"?>&#xA;<mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediapresentationduration="PT26.7S" maxsegmentduration="PT4.0S" minbuffertime="PT13.2S">&#xA;    <programinformation>&#xA;    </programinformation>&#xA;    <servicedescription>&#xA;    </servicedescription>&#xA;    <period start="PT0.0S">&#xA;        <adaptationset contenttype="video" startwithsap="1" segmentalignment="true" bitstreamswitching="true" framerate="30000/1001" maxwidth="1280" maxheight="720" par="16:9">&#xA;            <representation mimetype="video/mp4" codecs="avc1.7a001f" bandwidth="1000000" width="1280" height="720" sar="1:1">&#xA;                <segmenttemplate timescale="1000000" duration="4000000" initialization="video0-$RepresentationID$-$Number$.mp4" media="video0-$RepresentationID$-$Number$.mp4" startnumber="1">&#xA;                </segmenttemplate>&#xA;            </representation>&#xA;        </adaptationset>&#xA;    </period>&#xA;</mpd>&#xA;

    &#xA;&#xA;

    Is something about ffmpeg ? Permissions ? Pixel format ? Encoding ? I've tried with other mpd file provided by my Raspberry Pi using video4linux (v4l) and it returns the same error !

    &#xA;&#xA;

    I know that's a lot of code, but maybe you find it quicker than me. I guess it's a Shaka Player thing with the XML, but I can't explain how ffmpeg is wrongly creating XML code.

    &#xA;&#xA;

    Thank you in advance !!

    &#xA;