Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (60)

  • (Dés)Activation de fonctionnalités (plugins)

    18 février 2011, par

    Pour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
    SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
    Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
    MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...)

  • Activation de l’inscription des visiteurs

    12 avril 2011, par

    Il est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
    Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
    Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

Sur d’autres sites (10716)

  • Non-blocking realtime read from multiple shell subprocesses (Python)

    8 février 2018, par Norman Edance

    I’m building real time multiple videostream monitoring using ffmpeg and subrocess.
    I currently have the following code, inspired by "Async and await with subprocesses" post.

    The problem is that after a certain period of time the output stops printing and the processes go into zombie mode. I guess that this problem is related to the overload of PIPE or deadlock. Help needed.

    """Async and await example using subprocesses

    Note:
       Requires Python 3.6.
    """

    import os
    import sys
    import time
    import platform
    import asyncio

    async def run_command_shell(command):
       """Run command in subprocess (shell)

       Note:
           This can be used if you wish to execute e.g. "copy"
           on Windows, which can only be executed in the shell.
       """
       # Create subprocess
       process = await asyncio.create_subprocess_shell(
           command,
           stderr=asyncio.subprocess.PIPE)

       # Status
       print('Started:', command, '(pid = ' + str(process.pid) + ')')

       # Wait for the subprocess to finish
       stdout, stderr = await process.communicate()

       # Progress
       if process.returncode == 0:
           print('Done:', command, '(pid = ' + str(process.pid) + ')')
       else:
           print('Failed:', command, '(pid = ' + str(process.pid) + ')')

       # Result
       result = stderr.decode().strip()

       # Real time print
       print(result)

       # Return stdout
       return result


    def make_chunks(l, n):
       """Yield successive n-sized chunks from l.

       Note:
           Taken from https://stackoverflow.com/a/312464
       """
       if sys.version_info.major == 2:
           for i in xrange(0, len(l), n):
               yield l[i:i + n]
       else:
           # Assume Python 3
           for i in range(0, len(l), n):
               yield l[i:i + n]


    def run_asyncio_commands(tasks, max_concurrent_tasks=0):
       """Run tasks asynchronously using asyncio and return results

       If max_concurrent_tasks are set to 0, no limit is applied.

       Note:
           By default, Windows uses SelectorEventLoop, which does not support
           subprocesses. Therefore ProactorEventLoop is used on Windows.
           https://docs.python.org/3/library/asyncio-eventloops.html#windows
       """

       all_results = []

       if max_concurrent_tasks == 0:
           chunks = [tasks]
       else:
           chunks = make_chunks(l=tasks, n=max_concurrent_tasks)

       for tasks_in_chunk in chunks:
           if platform.system() == 'Windows':
               loop = asyncio.ProactorEventLoop()
               asyncio.set_event_loop(loop)
           else:
               loop = asyncio.get_event_loop()

           commands = asyncio.gather(*tasks_in_chunk)  # Unpack list using *
           results = loop.run_until_complete(commands)
           all_results += results
           loop.close()
       return all_results


    if __name__ == '__main__':

       start = time.time()

       if platform.system() == 'Windows':
           # Commands to be executed on Windows
           commands = [
               ['hostname']
           ]
       else:
           # Commands to be executed on Unix
           commands = [
               ['du', '-sh', '/var/tmp'],
               ['hostname'],
           ]
       cmds = [["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx  -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx  -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx  -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx  -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx  -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx  -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx -f null -"],
               ["ffmpeg -y -i udp://xxx.xx.xx.xxx:xxxx -f null -"]]

       tasks = []
       for command in cmds:
           tasks.append(run_command_shell(*command))


       # # Shell execution example
       # tasks = [run_command_shell('copy c:/somefile d:/new_file')]

       # # List comprehension example
       # tasks = [
       #     run_command(*command, get_project_path(project))
       #     for project in accessible_projects(all_projects)
       # ]

       results = run_asyncio_commands(tasks, max_concurrent_tasks=20)  # At most 20 parallel tasks
       print('Results:', results)

       end = time.time()
       rounded_end = ('{0:.4f}'.format(round(end-start,4)))
       print('Script ran in about', str(rounded_end), 'seconds')

    Related : Non-blocking read from multiple subprocesses (Python)

  • Start of video is not labeled as "0" in QuickTime Video from GoPro

    26 mars 2020, par John Terragnoli

    I’m trying to combine four GoPro videos into a single video, and then rotate it 90 degrees. However, the time scales on the bottom of the videos are all wrong. The videos are 17 minutes and 42 second. But the beginning time is labeled as 5:15:20:32 and the ending time is 5:33:01:32. It just looks really weird and I’d like to fix it. After I use ffmpeg to rotate and concatenate the videos, the problem persists. Could it possibly be fixed with Exiftool ?

    ffmpeg -safe 0 -f concat -i list.txt -vcodec copy -acodec copy merged_videos.MP4

    ffmpeg -i input.mov -vf "transpose=1" output.mov

    Here is the exiftool information on one of the videos :

    File Name                       : GOPR3023.MP4
    Directory                       : .
    File Size                       : 3.7 GB
    File Modification Date/Time     : 2018:04:12 14:56:16-05:00
    File Access Date/Time           : 2020:03:25 12:17:18-05:00
    File Inode Change Date/Time     : 2020:03:25 17:57:04-05:00
    File Permissions                : rwxrwxrwx
    File Type                       : MP4
    File Type Extension             : mp4
    MIME Type                       : video/mp4
    Major Brand                     : MP4 v1 [ISO 14496-1:ch13]
    Minor Version                   : 2013.10.18
    Compatible Brands               : mp41
    Movie Data Size                 : 4001979951
    Movie Data Offset               : 28
    Movie Header Version            : 0
    Create Date                     : 2018:04:12 14:38:32
    Modify Date                     : 2018:04:12 14:38:32
    Time Scale                      : 60000
    Duration                        : 0:17:42
    Preferred Rate                  : 1
    Preferred Volume                : 100.00%
    Preview Time                    : 0 s
    Preview Duration                : 0 s
    Poster Time                     : 0 s
    Selection Time                  : 0 s
    Selection Duration              : 0 s
    Current Time                    : 0 s
    Next Track ID                   : 6
    Firmware Version                : HD5.03.02.51.00
    Lens Serial Number              : NAH6092300301117
    Camera Serial Number Hash       : 34676f2cdf49b86a1514817a93377bf7
    Track Header Version            : 0
    Track Create Date               : 2018:04:12 14:38:32
    Track Modify Date               : 2018:04:12 14:38:32
    Track ID                        : 1
    Track Duration                  : 0:17:42
    Track Layer                     : 0
    Track Volume                    : 0.00%
    Image Width                     : 1920
    Image Height                    : 1080
    Graphics Mode                   : srcCopy
    Op Color                        : 0 0 0
    Compressor ID                   : avc1
    Source Image Width              : 1920
    Source Image Height             : 1080
    X Resolution                    : 72
    Y Resolution                    : 72
    Compressor Name                 : GoPro AVC encoder
    Bit Depth                       : 24
    Color Representation            : nclx 1 1 1
    Video Frame Rate                : 59.94
    Time Code                       : 3
    Balance                         : 0
    Audio Format                    : mp4a
    Audio Channels                  : 2
    Audio Bits Per Sample           : 16
    Audio Sample Rate               : 48000
    Text Font                       : Unknown (21)
    Text Face                       : Plain
    Text Size                       : 10
    Text Color                      : 0 0 0
    Background Color                : 65535 65535 65535
    Font Name                       : Helvetica
    Other Format                    : tmcd
    Warning                         : [minor] The ExtractEmbedded option may find more tags in the movie data
    Matrix Structure                : 1 0 0 0 1 0 0 0 1
    Media Header Version            : 0
    Media Create Date               : 2018:04:12 14:38:32
    Media Modify Date               : 2018:04:12 14:38:32
    Media Time Scale                : 60000
    Media Duration                  : 0:17:42
    Handler Class                   : Media Handler
    Handler Type                    : NRT Metadata
    Handler Description             : GoPro SOS
    Gen Media Version               : 0
    Gen Flags                       : 0 0 0
    Gen Graphics Mode               : srcCopy
    Gen Op Color                    : 0 0 0
    Gen Balance                     : 0
    Meta Format                     : fdsc
    Image Size                      : 1920x1080
    Megapixels                      : 2.1
    Avg Bitrate                     : 30.1 Mbps
    Rotation                        : 0

    Part 2
    There is a pretty obvious "stutter" at the 17:42 mark where the two clips are combined. I’ve tried using ffmpeg and iMovie, but both give the same results. The GoPro broke up the event into multiple clips on it’s own so it seems weird that there would be any information missing. Is there any way to get rid of this stutter ?

    Thanks !

  • lavf : move AVStream.*index_entries* to AVStreamInternal

    9 octobre 2020, par Anton Khirnov
    lavf : move AVStream.*index_entries* to AVStreamInternal
    

    Those are private fields, no reason to have them exposed in a public
    header. Since there are some (semi-)public fields located after these,
    even though this section is supposed to be private, keep some dummy
    padding there until the next major bump to preserve ABI compatibility.

    • [DH] libavformat/ape.c
    • [DH] libavformat/asfdec_f.c
    • [DH] libavformat/asfdec_o.c
    • [DH] libavformat/avformat.h
    • [DH] libavformat/avidec.c
    • [DH] libavformat/bink.c
    • [DH] libavformat/cafdec.c
    • [DH] libavformat/cinedec.c
    • [DH] libavformat/dhav.c
    • [DH] libavformat/flacdec.c
    • [DH] libavformat/flic.c
    • [DH] libavformat/flvdec.c
    • [DH] libavformat/gxf.c
    • [DH] libavformat/ifv.c
    • [DH] libavformat/img2dec.c
    • [DH] libavformat/internal.h
    • [DH] libavformat/jvdec.c
    • [DH] libavformat/matroskadec.c
    • [DH] libavformat/mlvdec.c
    • [DH] libavformat/mov.c
    • [DH] libavformat/mp3dec.c
    • [DH] libavformat/mpc.c
    • [DH] libavformat/mpc8.c
    • [DH] libavformat/mux.c
    • [DH] libavformat/mvdec.c
    • [DH] libavformat/nsvdec.c
    • [DH] libavformat/nutdec.c
    • [DH] libavformat/nutenc.c
    • [DH] libavformat/rl2.c
    • [DH] libavformat/rpl.c
    • [DH] libavformat/segafilm.c
    • [DH] libavformat/tta.c
    • [DH] libavformat/utils.c
    • [DH] libavformat/vocdec.c