Recherche avancée

Médias (1)

Mot : - Tags -/publier

Autres articles (88)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Menus personnalisés

    14 novembre 2010, par

    MediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
    Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
    Menus créés à l’initialisation du site
    Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...)

  • Déploiements possibles

    31 janvier 2010, par

    Deux types de déploiements sont envisageable dépendant de deux aspects : La méthode d’installation envisagée (en standalone ou en ferme) ; Le nombre d’encodages journaliers et la fréquentation envisagés ;
    L’encodage de vidéos est un processus lourd consommant énormément de ressources système (CPU et RAM), il est nécessaire de prendre tout cela en considération. Ce système n’est donc possible que sur un ou plusieurs serveurs dédiés.
    Version mono serveur
    La version mono serveur consiste à n’utiliser qu’une (...)

Sur d’autres sites (8201)

  • FFMPEG failed with RTSP running in docker

    9 août 2023, par SantiSori

    I'm trying to dockerize a simple application with node to stream the content of a RTSP camera through a websocker. To test I'm using the example : rtsp ://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4

    


    My code in node is as follows :

    


    VideoStream = require('rtsp-multi-stream')
streamer = new VideoStream.VideoStream({
  debug: true,
  wsPort: 9000,
  ffmpegPath: 'ffmpeg',
  ffmpegArgs: {
    '-b:v': '2048K',
    '-an': '',
    '-r': '24',
  },
});

setInterval(() => console.log([...streamer.liveMuxers.keys()]), 10000);


    


    When I run it locally, it works correctly :

    


    $ node ./rtsp.js
ffmpeg version 5.1.2-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the F
Fmpeg developers
  built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32thr
eads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --e
nable-libxml2 --enable-gmp --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-libass --enable-libfreetype --enable-libfribidi --enabl
e-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm -
-enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va
--enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libo
pencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --e
nable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --ena
ble-libvorbis --enable-librubberband
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
prueba: New WebSocket Connection (1 total)
Input #0, rtsp, from 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_11
5k.mp4':
  Metadata:
    title           : BigBuckBunny_115k.mp4
  Duration: 00:10:34.63, start: 0.000000, bitrate: N/A
  Stream #0:0: Audio: aac (LC), 12000 Hz, stereo, fltp
  Stream #0:1: Video: h264 (High), yuv420p(progressive), 240x160 [SAR 32:27 DAR
16:9], 24 fps, 24.08 tbr, 90k tbn
Stream mapping:
  Stream #0:1 -> #0:0 (h264 (native) -> mpeg1video (native))
  Stream #0:0 -> #0:1 (aac (native) -> mp2 (native))
Press [q] to stop, [?] for help
[mpeg1video @ 00000217d19e8840] too many threads/slices (11), reducing to 10
Output #0, mpegts, to 'pipe:':
  Metadata:
    title           : BigBuckBunny_115k.mp4
    encoder         : Lavf59.27.100
  Stream #0:0: Video: mpeg1video, yuv420p(progressive), 240x160 [SAR 32:27 DAR 1
6:9], q=2-31, 200 kb/s, 30 fps, 90k tbn
    Metadata:
      encoder         : Lavc59.37.100 mpeg1video
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
  Stream #0:1: Audio: mp2, 16000 Hz, stereo, s16, 160 kb/s
    Metadata:
      encoder         : Lavc59.37.100 mp2
[mpegts @ 00000217d38c64c0] Non-monotonous DTS in output stream 0:1; previous: 3
774, current: 2576; changing to 3775. This may result in incorrect timestamps in
 the output file.
frame=    1 fps=0.0 q=0.0 size=       0kB time=00:00:00.60 bitrate=   0.0kbits/s
frame=   23 fps=0.0 q=2.8 size=      69kB time=00:00:01.46 bitrate= 384.0kbits/s
frame=   35 fps= 31 q=2.6 size=     104kB time=00:00:01.97 bitrate= 430.0kbits/s
frame=   48 fps= 30 q=2.3 size=     135kB time=00:00:02.47 bitrate= 446.3kbits/s
frame=   60 fps= 28 q=2.1 size=     168kB time=00:00:02.98 bitrate= 461.7kbits/s
frame=   72 fps= 27 q=2.0 size=     194kB time=00:00:03.48 bitrate= 454.9kbits/s


    


    Then I pass it to docker, for that I have the following dockerfile :

    


    FROM node:16-alpine

RUN apk update
RUN apk add
RUN apk add ffmpeg

RUN mkdir -p /home/node/app
WORKDIR /home/node/app
COPY . .

RUN npm install
CMD [ "node", "rtsp-multi.js" ]


    


    When I run docker I get the following errors :

    


    Socket connected /?url=rtsp%3A%2F%2Fwowzaec2demo.streamlock.net%2Fvod%2Fmp4%3ABigBuckBunny_115k.mp4
ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.2.1 (Alpine 12.2.1_git20220924-r3) 20220924
  configuration: --prefix=/usr --enable-avfilter --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gnutls --enable-gpl --enable-libass --enable-libmp3lame --enable-libpulse --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libx264 --enable-libx265 --enable-libtheora --enable-libv4l2 --enable-libdav1d --enable-lto --enable-postproc --enable-pic --enable-pthreads --enable-shared --enable-libxcb --enable-librist --enable-libsrt --enable-libssh --enable-libvidstab --disable-stripping --disable-static --disable-librtmp --disable-lzma --enable-libaom --enable-libopus --enable-libsoxr --enable-libwebp --enable-vaapi --enable-vdpau --enable-vulkan --enable-libdrm --enable-libzmq --optflags=-O2 --disable-debug --enable-libsvtav1
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Error go live Timeout
[rtsp @ 0x7fdd7d811100] Could not find codec parameters for stream 1 (Video: h264, none, 240x160): unspecified pixel format
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, rtsp, from 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4':
  Metadata:
    title           : BigBuckBunny_115k.mp4
  Duration: 00:10:34.63, start: 0.000000, bitrate: N/A
  Stream #0:0: Audio: aac, 12000 Hz, stereo, fltp
  Stream #0:1: Video: h264, none, 240x160, 90k tbr, 90k tbn
Socket closed
Stream mapping:
  Stream #0:1 -> #0:0 (h264 (native) -> mpeg1video (native))
Press [q] to stop, [?] for help
Cannot determine format of input stream 0:1 after EOF
Error marking filters as finished
Exiting normally, received signal 15.


    


    I have tried to put as parameter to increase the analyzeduration and probesize inside ffmpegArgs but it doesn't seem to work. I have also tried with the node library node-rtsp-stream but it doesn't work either.

    


    I need to make it work inside docker but I am not able to, I have checked and on my PC and inside docker the versions of node and ffmpeg are the same. I have also checked with other old versions and the error is the same. I don't know what else to try, how can I make it work inside docker ?

    


  • yt_dlp gives a strange message : "Seek to desired resync point failed. Seeking to earliest point available instead." and "File ended prematurely"

    16 septembre 2023, par nikita goncharov

    I have a discord bot (discord.py) in python and it can play music. Lastly it had trouble in playing the music, giving some random warnings but it mostly worked. But now it gives me this message :

    


    [matroska,webm @ 000001570fe92d40] Seek to desired resync point failed. Seeking to earliest point available instead.


    


    [matroska,webm @ 000001570fe92d40] File ended prematurely


    


    and also this one

    


    Warning: program compiled against libxml 211 using older 209


    


    As I saw this is a very common warning but I still have no Idea how to fix it.

    


    I will leave the code of the bot down bellow :

    


    Ytdlp setup (I have renamed the librarie to be youtube_dl)

    


    youtube_dl.utils.bug_reports_message = lambda: ''


ytdl_format_options = {
    'format': 'bestaudio/best',
    'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
    'restrictfilenames': True,
    'noplaylist': True,
    'nocheckcertificate': True,
    'ignoreerrors': False,
    'logtostderr': True,
    'quiet': True,
    'no_warnings': False,
    'default_search': 'auto',
    'source_address': '0.0.0.0',  # bind to ipv4 since ipv6 addresses cause issues sometimes
}

ffmpeg_options = {
    'options': '-vn',
}

ytdl = youtube_dl.YoutubeDL(ytdl_format_options)


class YTDLSource(discord.PCMVolumeTransformer):
    def __init__(self, source, *, data, volume=0.5):
        super().__init__(source, volume)

        self.data = data

        self.title = data.get('title')
        self.url = data.get('url')
        self.duration = data.get('duration')
        img = ""
        imgs = ['']
        for image in data.get("thumbnails"):
            img = image["url"]
            imgs.append(image["url"])
        self.image = img
        self.thumbnails = imgs


    


    The play command :

    


    # if message.author.voice_client is not None:
try:
    print(1)
    sessionChannel = message.author.voice.channel
except:
    embedAns = discord.Embed(color=discord.Color.from_rgb(255, 201, 115))
    # embedImg.set_image(url=player.image)
    # embedImg.type = "image"
    embedAns.add_field(name="Player", value=f'To play audio you must join a voice channel!',
                       inline=True)
    embedAns.add_field(name="", value=f'*{message.author.name}*', inline=False)
    # embedImg.image.width = "800"
    await message.channel.send(embed=embedAns)
try:
    print(2)
    await message.author.voice.channel.connect(reconnect=False)
    print(2)
except:
    pass
"""embedAns = discord.Embed(color=discord.Color.from_rgb(102, 196, 250))
# embedImg.set_image(url=player.image)
# embedImg.type = "image"
embedAns.add_field(name="Player", value=f'Succesfuly joined voice channel to play music in {sessionChannel}! Loading in youtube song... Please wait...', inline=True)
embedAns.add_field(name="", value=f'*{message.author.name}*', inline=False)
# embedImg.image.width = "800"
await message.channel.send(embed=embedAns)"""
try:
    print(3)
    load = await message.channel.send(
        f'Succesfuly joined voice channel to play music in {sessionChannel}')
    print(4)
    url = matched.group(1)
    player = await YTDLSource.from_url(url, loop=client.loop, stream=True)
    # Embed = await YTDLSource.from_url(url, loop=client.loop, stream=False)
    sessionChannel.guild.voice_client.play(player, after=lambda e: print(
        f'Player error: {e}') if e else None)
    await load.delete()
    sec = player.duration % 60
    temp = player.duration // 60
    min = temp % 60
    hour = temp // 60
    if hour == 0:
        timeStr = f"{min:02d}:{sec:02d}"
    else:
        timeStr = f"{hour}:{min:02d}:{sec:02d}"
    # await message.reply()
    embedImg = discord.Embed(color=discord.Color.from_rgb(102, 196, 250))
    # embedImg.set_image(url=player.image)
    # embedImg.type = "image"
    embedImg.set_thumbnail(url=player.image)
    embedImg.add_field(name="Player", value=f'Now playing: **{player.title}** \n `{timeStr}`',
                       inline=True)
    embedImg.add_field(name="", value=f'Requested by: {message.author.name}', inline=False)
    # embedImg.image.width = "800"
    await message.channel.send(embed=embedImg)
except Exception as ex:
    embedAns = discord.Embed(color=discord.Color.from_rgb(255, 119, 115))
    # embedImg.set_image(url=player.image)
    # embedImg.type = "image"
    # embedImg.set_thumbnail(url=player.image)
    embedAns.add_field(name="Player Error",
                       value=f'Couldent play audio on {sessionChannel} \n`{ex}`', inline=True)
    embedAns.add_field(name="", value=f'Requested by: {message.author.name}', inline=False)


    


  • FileNotFoundError : [WinError 2] The system cannot find the file specified - FFMPEG

    5 avril 2024, par shiftyscales

    I am running a script using conda environment on Windows and getting this error (stack trace below), which is apparently caused by python executable not being able to find the ffmpeg.exe. There are numerous questions about this, but none of the solutions unfortunately worked for me, so I hope someone has fresh ideas.

    


    What I tried :

    


      

    • conda install -c conda-forge ffmpeg (after this I can run ffmpeg in command line, but still getting the error)
    • 


    • pip install ffmpeg-python
    • 


    • Added the folder where ffmpeg.exe is located in conda env to the Windows Path as well as to sys.path in python.
    • 


    • copied the same ffmpeg.exe a) to the location of python.exe in conda env, b) to the location of the script I am running, c) to the location of subprocess.py.
    • 


    • Downloaded ffmpeg windows binary and repeated the last two steps with that file.
    • 


    


    Is there anything else that I can try to make it work ?

    


    ---------------------------------------------------------------------------&#xA;FileNotFoundError                         Traceback (most recent call last)&#xA;Cell In[10], line 22&#xA;     19 truncate_second = 8.2         # Video end = start_second &#x2B; truncate_second&#xA;     21 # Extract Video CAVP Features &amp; New Video Path:&#xA;---> 22 cavp_feats, new_video_path = extract_cavp(video_path, start_second, truncate_second, tmp_path=tmp_path)&#xA;&#xA;File D:\Software\Anaconda\envs\diff_foley\Lib\site-packages\torch\nn\modules\module.py:1518, in Module._wrapped_call_impl(self, *args, **kwargs)&#xA;   1516     return self._compiled_call_impl(*args, **kwargs)  # type: ignore[misc]&#xA;   1517 else:&#xA;-> 1518     return self._call_impl(*args, **kwargs)&#xA;&#xA;File D:\Software\Anaconda\envs\diff_foley\Lib\site-packages\torch\nn\modules\module.py:1527, in Module._call_impl(self, *args, **kwargs)&#xA;   1522 # If we don&#x27;t have any hooks, we want to skip the rest of the logic in&#xA;   1523 # this function, and just call forward.&#xA;   1524 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks&#xA;   1525         or _global_backward_pre_hooks or _global_backward_hooks&#xA;   1526         or _global_forward_hooks or _global_forward_pre_hooks):&#xA;-> 1527     return forward_call(*args, **kwargs)&#xA;   1529 try:&#xA;   1530     result = None&#xA;&#xA;File D:\Software\Anaconda\envs\diff_foley\Lib\site-packages\torch\utils\_contextlib.py:115, in context_decorator.<locals>.decorate_context(*args, **kwargs)&#xA;    112 @functools.wraps(func)&#xA;    113 def decorate_context(*args, **kwargs):&#xA;    114     with ctx_factory():&#xA;--> 115         return func(*args, **kwargs)&#xA;&#xA;File D:\Work\DIff-Foley\Diff-Foley\inference\demo_util.py:131, in Extract_CAVP_Features.forward(self, video_path, start_second, truncate_second, tmp_path)&#xA;    129 print("truncate second: ", truncate_second)&#xA;    130 # Load the video, change fps:&#xA;--> 131 video_path_low_fps = reencode_video_with_diff_fps(video_path, self.tmp_path, self.fps, start_second, truncate_second)&#xA;    132 video_path_high_fps = reencode_video_with_diff_fps(video_path, self.tmp_path, 21.5, start_second, truncate_second)&#xA;    134 # read the video:&#xA;&#xA;File D:\Work\DIff-Foley\Diff-Foley\inference\demo_util.py:42, in reencode_video_with_diff_fps(video_path, tmp_path, extraction_fps, start_second, truncate_second)&#xA;     31 def reencode_video_with_diff_fps(video_path: str, tmp_path: str, extraction_fps: int, start_second, truncate_second) -> str:&#xA;     32     &#x27;&#x27;&#x27;Reencodes the video given the path and saves it to the tmp_path folder.&#xA;     33 &#xA;     34     Args:&#xA;   (...)&#xA;     40         str: The path where the tmp file is stored. To be used to load the video from&#xA;     41     &#x27;&#x27;&#x27;&#xA;---> 42     assert which_ffmpeg() != &#x27;&#x27;, &#x27;Is ffmpeg installed? Check if the conda environment is activated.&#x27;&#xA;     43     # assert video_path.endswith(&#x27;.mp4&#x27;), &#x27;The file does not end with .mp4. Comment this if expected&#x27;&#xA;     44     # create tmp dir if doesn&#x27;t exist&#xA;     45     os.makedirs(tmp_path, exist_ok=True)&#xA;&#xA;File D:\Work\DIff-Foley\Diff-Foley\inference\demo_util.py:26, in which_ffmpeg()&#xA;     20 def which_ffmpeg() -> str:&#xA;     21     &#x27;&#x27;&#x27;Determines the path to ffmpeg library&#xA;     22 &#xA;     23     Returns:&#xA;     24         str -- path to the library&#xA;     25     &#x27;&#x27;&#x27;&#xA;---> 26     result = subprocess.run([&#x27;which&#x27;, &#x27;ffmpeg&#x27;], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)&#xA;     27     ffmpeg_path = result.stdout.decode(&#x27;utf-8&#x27;).replace(&#x27;\n&#x27;, &#x27;&#x27;)&#xA;     28     return ffmpeg_path&#xA;&#xA;File D:\Software\Anaconda\envs\diff_foley\Lib\subprocess.py:548, in run(input, capture_output, timeout, check, *popenargs, **kwargs)&#xA;    545     kwargs[&#x27;stdout&#x27;] = PIPE&#xA;    546     kwargs[&#x27;stderr&#x27;] = PIPE&#xA;--> 548 with Popen(*popenargs, **kwargs) as process:&#xA;    549     try:&#xA;    550         stdout, stderr = process.communicate(input, timeout=timeout)&#xA;&#xA;File D:\Software\Anaconda\envs\diff_foley\Lib\subprocess.py:1026, in Popen.__init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask, pipesize, process_group)&#xA;   1022         if self.text_mode:&#xA;   1023             self.stderr = io.TextIOWrapper(self.stderr,&#xA;   1024                     encoding=encoding, errors=errors)&#xA;-> 1026     self._execute_child(args, executable, preexec_fn, close_fds,&#xA;   1027                         pass_fds, cwd, env,&#xA;   1028                         startupinfo, creationflags, shell,&#xA;   1029                         p2cread, p2cwrite,&#xA;   1030                         c2pread, c2pwrite,&#xA;   1031                         errread, errwrite,&#xA;   1032                         restore_signals,&#xA;   1033                         gid, gids, uid, umask,&#xA;   1034                         start_new_session, process_group)&#xA;   1035 except:&#xA;   1036     # Cleanup if the child failed starting.&#xA;   1037     for f in filter(None, (self.stdin, self.stdout, self.stderr)):&#xA;&#xA;File D:\Software\Anaconda\envs\diff_foley\Lib\subprocess.py:1538, in Popen._execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_gid, unused_gids, unused_uid, unused_umask, unused_start_new_session, unused_process_group)&#xA;   1536 # Start the process&#xA;   1537 try:&#xA;-> 1538     hp, ht, pid, tid = _winapi.CreateProcess(executable, args,&#xA;   1539                              # no special security&#xA;   1540                              None, None,&#xA;   1541                              int(not close_fds),&#xA;   1542                              creationflags,&#xA;   1543                              env,&#xA;   1544                              cwd,&#xA;   1545                              startupinfo)&#xA;   1546 finally:&#xA;   1547     # Child is launched. Close the parent&#x27;s copy of those pipe&#xA;   1548     # handles that only the child should have open.  You need&#xA;   (...)&#xA;   1551     # pipe will not close when the child process exits and the&#xA;   1552     # ReadFile will hang.&#xA;   1553     self._close_pipe_fds(p2cread, p2cwrite,&#xA;   1554                          c2pread, c2pwrite,&#xA;   1555                          errread, errwrite)&#xA;&#xA;FileNotFoundError: [WinError 2] The system cannot find the file specified&#xA;</locals>

    &#xA;