Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (90)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

Sur d’autres sites (6949)

  • Add black video to video with sound

    4 février 2017, par garrettlynch

    I’m trying to insert 13 seconds of black video at the start of a video that has sound using ffmpeg like so :

    ffmpeg -f lavfi -i "color=c=black:s=720x406:r=25:sar=1/1" -i input.mp4 -filter_complex \
    "[0:v] trim=end=13,setpts=PTS-STARTPTS [blackstart]; \
    [blackstart] [1:v] concat=n=2:v=1:a=0[out]" \
    -map "[out]" -c:a copy output.mp4

    However the sound is not being maintained. What am I doing incorrectly ? -c:a copy does not seem to work should I be using a [1:a] somewhere ?

    garrett-retina:~ garrett-macbookretina$ ffmpeg -f lavfi -i "color=c=red:s=720x406:r=25:sar=1/1" -i input.mp4 -filter_complex \
    > "[0:v] trim=end=13,setpts=PTS-STARTPTS [blackstart]; \
    > [blackstart] [1:v] concat=n=2:v=1:a=0[out]" \
    >  -map "[out]" -c:a copy output.mp4
    ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
     built with Apple LLVM version 5.0 (clang-500.2.76) (based on LLVM 3.3svn)
     configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
     libavutil      55. 34.100 / 55. 34.100
     libavcodec     57. 64.101 / 57. 64.101
     libavformat    57. 56.100 / 57. 56.100
     libavdevice    57.  1.100 / 57.  1.100
     libavfilter     6. 65.100 /  6. 65.100
     libavresample   3.  1.  0 /  3.  1.  0
     libswscale      4.  2.100 /  4.  2.100
     libswresample   2.  3.100 /  2.  3.100
     libpostproc    54.  1.100 / 54.  1.100
    Input #0, lavfi, from 'color=c=red:s=720x406:r=25:sar=1/1':
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 720x406 [SAR 1:1 DAR 360:203], 25 tbr, 25 tbn, 25 tbc
    Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.56.100
     Duration: 33:59:47.32, start: 0.000000, bitrate: 179 kb/s
       Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x406 [SAR 1:1 DAR 360:203], 62 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
       Metadata:
         handler_name    : VideoHandler
       Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, stereo, fltp, 114 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
    [libx264 @ 0x7fa344048400] using SAR=1/1
    [libx264 @ 0x7fa344048400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    [libx264 @ 0x7fa344048400] profile High, level 3.0
    [libx264 @ 0x7fa344048400] 264 - core 148 r2748 97eaef2 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 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=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to '/Users/garrett-macbookretina/Desktop/Best of Luck With the Wall/exports/test.mp4':
     Metadata:
       encoder         : Lavf57.56.100
       Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 720x406 [SAR 1:1 DAR 360:203], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
       Metadata:
         encoder         : Lavc57.64.101 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream mapping:
     Stream #0:0 (rawvideo) -> trim
     Stream #1:0 (h264) -> concat:in1:v0
     concat -> Stream #0:0 (libx264)
    Press [q] to stop, [?] for help
    frame=3060008 fps=432 q=-1.0 Lsize=  957795kB time=34:00:00.20 bitrate=  64.1kbits/s speed=17.3x    
    video:921972kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.885564%
    [libx264 @ 0x7fa344048400] frame I:16585 Avg QP:13.67  size: 49743
    [libx264 @ 0x7fa344048400] frame P:770518 Avg QP:16.48  size:    91
    [libx264 @ 0x7fa344048400] frame B:2272905 Avg QP:25.11  size:    22
    [libx264 @ 0x7fa344048400] consecutive B-frames:  0.9%  0.1%  0.4% 98.6%
    [libx264 @ 0x7fa344048400] mb I  I16..4: 10.2% 39.7% 50.1%
    [libx264 @ 0x7fa344048400] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.7%  0.0%  0.0%  0.0%  0.0%    skip:99.1%
    [libx264 @ 0x7fa344048400] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.2%  0.0%  0.0%  direct: 0.0%  skip:99.8%  L0:46.9% L1:53.1% BI: 0.1%
    [libx264 @ 0x7fa344048400] 8x8 transform intra:39.9% inter:52.0%
    [libx264 @ 0x7fa344048400] coded y,uvDC,uvAC intra: 86.1% 77.1% 60.4% inter: 0.0% 0.1% 0.0%
    [libx264 @ 0x7fa344048400] i16 v,h,dc,p: 66% 10% 13% 11%
    [libx264 @ 0x7fa344048400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 20% 14%  6%  7%  7%  7%  7% 11%
    [libx264 @ 0x7fa344048400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 19% 11%  7%  9%  8%  8%  7%  9%
    [libx264 @ 0x7fa344048400] i8c dc,h,v,p: 59% 19% 17%  5%
    [libx264 @ 0x7fa344048400] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 0x7fa344048400] ref P L0: 53.9%  4.0% 16.6% 25.5%  0.0%
    [libx264 @ 0x7fa344048400] ref B L0: 27.9% 71.6%  0.5%
    [libx264 @ 0x7fa344048400] ref B L1: 97.6%  2.4%
    [libx264 @ 0x7fa344048400] kb/s:61.71
    garrett-retina:~ garrett-macbookretina$
  • Python : How to clip/trim required part from the video and move the trimmed video file to other directory

    4 avril 2021, par saurabh

    I'm trying to remove duplicate segments from videos from a directory and paste these trimmed videos to other directory.

    


    For example :

    


    I've following directory structure for saving live rtsp stream (each 1 min long) :-

    


    Live_videos
------2021-04-04
      ------stream1
            -------14 36 08.avi( 1 min)
                   14 37 08.avi( Saved only till 14 37 39 mark due to disconnect with stream1 camera)
                   14 38 35.avi( 1 min)
            stream2
            -------14 36 15.avi( 1 min)
                   14 37 15.avi( 1 min)
                   14 38 14.avi( 1 min)


    


    So, the disconnect and reconnect time are 14 37 40 and 14 38 34 respectively which will be sent to some other server and that server will search for videos saved in their machine which contains segments from the given timestamps and sends the video file in following directory structure : -

    


    Edge_videos
-----------2021-04-04
           ----------stream1
                     -------14 36 35.avi
                     -------14 37 35.avi


    


    Now, you can see that the received video files have the required segments from disconnect period as well as duplicate segments which are already saved in Live_videos directory.

    


    How do I remove the duplicate segments from the received videos and move only the required trimmed video file to the Live_videos----> stream1 directory and delete all the files from Edge_videos afterwards.

    


  • Python asyncio subprocess code returns "pipe closed by peer or os.write(pipe, data) raised exception."

    4 novembre 2022, par Duke Dougal

    I am trying to convert a synchronous Python process to asyncio. Any ideas what I am doing wrong ?

    


    This is the synchronous code which successfully starts ffmpeg and converts a directory of webp files into a video.

    


    import subprocess
import shlex
from os import listdir
from os.path import isfile, join

output_filename = 'output.mp4'
process = subprocess.Popen(shlex.split(f'ffmpeg -y -framerate 60 -i pipe: -vcodec libx265 -pix_fmt yuv420p -crf 24 output.mp4'), stdin=subprocess.PIPE)

thepath = '/home/ubuntu/webpfiles/'
thefiles = [f for f in listdir(thepath) if isfile(join(thepath, f))]
for filename in thefiles:
    absolute_path = f'{thepath}{filename}'
    with open(absolute_path, 'rb') as f:
        process.stdin.write(f.read())

process.stdin.close()
process.wait()
process.terminate()


    


    This async code fails :

    


    from os import listdir
from os.path import isfile, join
import shlex
import asyncio

outputfilename = 'output.mp4'

async def write_stdin(proc):
    thepath = '/home/ubuntu/webpfiles/'
    thefiles = [f for f in listdir(thepath) if isfile(join(thepath, f))]
    thefiles.sort()
    for filename in thefiles:
        absolute_path = f'{thepath}{filename}'
        with open(absolute_path, 'rb') as f:
            await proc.communicate(input=f.read())

async def create_ffmpeg_subprocess():
    bin = f'/home/ubuntu/bin/ffmpeg'
    params = f'-y -framerate 60 -i pipe: -vcodec libx265 -pix_fmt yuv420p -crf 24 {outputfilename}'
    proc = await asyncio.create_subprocess_exec(
        bin,
        *shlex.split(params),
        stdin=asyncio.subprocess.PIPE,
        stdout=asyncio.subprocess.PIPE,
        stderr=asyncio.subprocess.PIPE,
    )
    return proc

async def start():
    loop = asyncio.get_event_loop()
    proc = await create_ffmpeg_subprocess()
    task_stdout = loop.create_task(write_stdin(proc))
    await asyncio.gather(task_stdout)

if __name__ == '__main__':
    asyncio.run(start())


    


    The output for the async code is :

    


    pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.
pipe closed by peer or os.write(pipe, data) raised exception.


    


    etc - one line for each webp file