Recherche avancée

Médias (91)

Autres articles (97)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (8444)

  • How to convert rtmp hevc video stream to srt av1 endpoint with ffmpeg ?

    20 juin 2024, par Lulík

    i want use ffmpeg to listen rtmp stream and send to srt endpoint.

    


    Flow : smartphone (camera) -> laptop (ffmpeg script) -> desktop (obs studio)

    


    ffmpeg script show warning message and in obs stuido i can see any video only audio.

    


    Thank you in advance.

    


    Console output while running script (error in the end is bcs i stoped sending data from phone) :

    


    ffmpeg version git-2024-06-20-8d6014d Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 12 (Debian 12.2.0-14)
  configuration: --enable-libsvtav1 --enable-libsrt
  libavutil      59. 24.100 / 59. 24.100
  libavcodec     61.  8.100 / 61.  8.100
  libavformat    61.  3.104 / 61.  3.104
  libavdevice    61.  2.100 / 61.  2.100
  libavfilter    10.  2.102 / 10.  2.102
  libswscale      8.  2.100 /  8.  2.100
  libswresample   5.  2.100 /  5.  2.100
Input #0, flv, from 'rtmp://192.168.0.194/s/streamKey':
  Duration: 00:00:00.00, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: hevc (Main), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1080x1920, 10240 kb/s, 30 fps, 120 tbr, 1k tbn
  Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 131 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> av1 (libsvtav1))
  Stream #0:1 -> #0:1 (aac (native) -> mp2 (native))
Press [q] to stop, [?] for help
Svt[info]: -------------------------------------------
Svt[info]: SVT [version]:   SVT-AV1 Encoder Lib 595a874
Svt[info]: SVT [build]  :   GCC 12.2.0   64 bit
Svt[info]: LIB Build date: Jun 20 2024 14:25:08
Svt[info]: -------------------------------------------
Svt[info]: Number of logical cores available: 12
Svt[info]: Number of PPCS 76
Svt[info]: [asm level on system : up to avx2]
Svt[info]: [asm level selected : up to avx2]
Svt[info]: -------------------------------------------
Svt[info]: SVT [config]: main profile   tier (auto) level (auto)
Svt[info]: SVT [config]: width / height / fps numerator / fps denominator       : 1080 / 1920 / 120 / 1
Svt[info]: SVT [config]: bit-depth / color format                   : 8 / YUV420
Svt[info]: SVT [config]: preset / tune / pred struct                    : 10 / PSNR / random access
Svt[info]: SVT [config]: gop size / mini-gop size / key-frame type          : 641 / 16 / key frame
Svt[info]: SVT [config]: BRC mode / rate factor                     : CRF / 35 
Svt[info]: SVT [config]: AQ mode / variance boost                   : 2 / 0
Svt[info]: -------------------------------------------
Svt[warn]: Failed to set thread priority: Invalid argument
Output #0, mpegts, to 'srt://192.168.0.167:9998?mode=caller':
  Metadata:
    encoder         : Lavf61.3.104
  Stream #0:0: Video: av1, yuv420p(tv, smpte170m/bt470bg/smpte170m, progressive), 1080x1920, q=2-31, 120 fps, 90k tbn
      Metadata:
        encoder         : Lavc61.8.100 libsvtav1
  Stream #0:1: Audio: mp2, 44100 Hz, stereo, s16, 384 kb/s
      Metadata:
        encoder         : Lavc61.8.100 mp2
[mpegts @ 0x55ec921d9540] Stream 0, codec av1, is muxed as a private data stream and may not be recognized upon reading.
[in#0/flv @ 0x55ec9219cc40] Error during demuxing: Input/output error1990.7kbits/s speed=0.967x    
[out#0/mpegts @ 0x55ec922247c0] video:4431KiB audio:1138KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 6.374870%
frame=  723 fps= 31 q=35.0 Lsize=    5923KiB time=00:00:24.12 bitrate=2011.3kbits/s speed=1.04x


    


    I send video stream from mobile app over rtmp encoded with hevc to my laptop where running script ffmpeg -f flv -listen 1 -i rtmp://192.168.0.194/s/streamKey -c:v libsvtav1 -f mpegts srt://192.168.0.167:9998?mode=caller. On the desktop i have obs with media source input srt://192.168.0.167:9998?mode=listener.

    


    When i run ffmpeg script without video codec option (-c:v libsvtav1) its working fine and in obs i can see video from my phone camera. With the option i can not see video only audio.
I clearly dont understand warning message : [mpegts @ 0x55ec921d9540] Stream 0, codec av1, is muxed as a private data stream and may not be recognized upon reading..
Do I need specify codec (av1) in obs media source or my ffmpeg script is wrong ?

    


  • How to get webam frames one by one but also compressed ?

    29 mars, par Vorac

    I need to grab frames from the webcam of a laptop, transmit them one by one and the receiving side stitch them into a video. I picked ffmpeg-python as wrapper of choice and the example from the docs works right away :

    


    #!/usr/bin/env python

# In this file: reading frames one by one from the webcam.


import ffmpeg

width = 640
height = 480


reader = (
    ffmpeg
    .input('/dev/video0', s='{}x{}'.format(width, height))
    .output('pipe:', format='rawvideo', pix_fmt='yuv420p')
    .run_async(pipe_stdout=True)
)

# This is here only to test the reader.
writer = (
    ffmpeg
    .input('pipe:', format='rawvideo', pix_fmt='yuv420p', s='{}x{}'.format(width, height))
    .output('/tmp/test.mp4', format='h264', pix_fmt='yuv420p')
    .overwrite_output()
    .run_async(pipe_stdin=True)
)


while True:
    chunk = reader.stdout.read(width * height * 1.5)  # yuv
    print(len(chunk))
    writer.stdin.write(chunk)


    


    Now for the compression part.

    


    My reading of the docs is that the input to the reader perhaps needs be rawvideo but nothing else does. I tried replacing rawvideo with h264 in my code but that resulted in empty frames. I'm considering a third invocation looking like this but is that really the correct approach ?

    


    encoder = (                                                                     
    ffmpeg                                                                      
    .input('pipe:', format='rawvideo', pix_fmt='yuv420p', s='{}x{}'.format(width, height))
    .output('pipe:', format='h264', pix_fmt='yuv420p')                          
    .run_async(pipe_stdin=True, pipe_stdout=True)                               


    


  • ffmpeg command in my Python code is not working in Docker

    12 juin 2024, par Akhil Varghese

    I am developing a Python (Django-REST) app for video processing. I need to extract the frames of videos and need to save a live stream(RSTP stream) to the desired directory.
I am using ffmpeg for saving the RTSP stream, and I have also Dockerized the app.

    


      

    • Live Stream save method
    • 


    


    import subprocess
@api_view(['POST'])
def saveRtsp(request):
    logger.info("Saving RTSP URL")
    rtsp_url = 'rtsp://192.168.1.117/sample2.mkv'
    rtsp_video_path = 'rtsp.mp4'
    try:
        ffmpeg_command = [
            'ffmpeg',
            '-y',
            "-analyzeduration", "20000000",
            "-probesize", "10000000",
            "-rtsp_transport", "tcp",
            "-r", "30",
            "-i", rtsp_url,
            "-c:v", "copy",
            "-b:v", "1M",
            "-c:a", "copy",
            "-b:a", "128k",
            "-f", "mp4",
            rtsp_video_path
        ]
      
      subprocess.run(ffmpeg_command)
      return True
    except Exception as e:
        logger.error(f"Failed to save RTSP URL: {e}")
        return False


    


    This is actually saving a video file in my directory with properties (as shown by "Get Info" in the MacOS Finder) :

    


    enter image description here

    


    As shown in the image, the video doesn't have the resolution and codec information, so it's not compatible with players.

    


    However, If I execute the following command directly in the Docker container shell, I get a compatible video.

    


    A valid video information :

    


    enter image description here

    


    As shown in the image, a compatible video has the Dimension, codecs, and Duration details in the more info section.

    


    ffmpeg -analyzeduration 20000000 -probesize 10000000 -rtsp_transport tcp -r 30  -i rtsp://xx.xx.xx.xx/sample2.mkv -c:v copy -b:v 1M -c:a copy -b:a 128k -f mp4 testoutput2.mp4


    


    My Dockerfile is :

    


    FROM python:3.9-slim

# Set environment variables
ENV PYTHONUNBUFFERED 1

# Set the working directory in the container
WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    ffmpeg \
    libsm6 \
    libxext6 \
    libx264-dev \
    libopencv-dev \
    && apt-get clean

# Copy the requirements file into the container
COPY requirements.txt /app/requirements.txt

# Install Python dependencies
RUN pip install --no-cache-dir -r /app/requirements.txt

# Copy the current directory contents into the container at /app
COPY . /app/

# Expose the port the app runs on
EXPOSE 8000

# Run the Django development server
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]


    


    Why does the strange behaviour happen ?
How can I fix this issue ?

    


    I tried using different codecs and even the ffmpeg-python library,
but still getting the same result.