Recherche avancée

Médias (91)

Autres articles (112)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (7939)

  • FFMPEG save last 10 sec before a movement and next 30secs

    2 novembre 2020, par Set1ish

    I have a surveillance camera that process frame by frame live video. In case of movement, I want to save a video containing the last 10 seconds before the movement and next 30 seconds after the movement.
I beleve (may be I'm wrong), that last 10 second + next 30seconds task, should be obtained without decoding-rencoding process.

    


    I try to use python with fmmpeg pipes, creating a reader and a writer, but the reader seams too slow for the stream and I loose some packets (= loose on video quality for saved file).

    


    Here my code

    


    import ffmpeg
import numpy as np

width = 1280
height = 720


process1 = (
    ffmpeg
    .input('rtsp://.....',rtsp_transport='udp', r='10', t="00:00:30")
    .output('pipe:', format='rawvideo', pix_fmt='yuv420p')
    .run_async(pipe_stdout=True)
)

process2 = (
    ffmpeg
    .input('pipe:', format='rawvideo', pix_fmt='yuv420p', s='{}x{}'.format(width, height))
    .output("prova-02-11-2020.avi", pix_fmt='yuv420p',r='10')
    .overwrite_output()
    .run_async(pipe_stdin=True)
)
while True:
    in_bytes = process1.stdout.read(width * height * 3)
    if not in_bytes:
        break
    in_frame = (
        np
        .frombuffer(in_bytes, np.uint8)
        )

    #In future I will save in_frame in a queue
    out_frame = in_frame
   
    process2.stdin.write(
        out_frame
        .astype(np.uint8)
        .tobytes()
    )

process2.stdin.close()
process1.wait()
process2.wait()


    


    If I run

    


    ffmpeg -i rtsp://... -acodec copy -vcodec copy -t "00:00:30" out.avi


    


    It look that decode-rencode process is done in quick/smart way without loosing any packet.
My dream is to make the same on python for the surveillance camera but intergrating with code that analyse the stream.

    


    I would like that the flow for creating the file, does not requires decoding + enconding. The last 10secs frames are in a queue and, at specific event, the contenet of queue plus next 30secs frames are saved into a avi file

    


    I have the constraints to have realtime motion detection on live streaming

    


    Did you have any comments or suggestion ?

    


  • x264 Downsides of a high CRF (22) intermediary codec between conversions instead of lossless

    18 décembre 2019, par bobtheencoder

    I have a huge collection of video files that are in the range of CRF 16-20 taking up TB’s of space. The only need I have for these originals is that I have to encode them from time to time but the CRF of these final encodes is very low (CRF 26-28).

    I understand that a lossy to lossy converstion ALWAYS results in some quality loss but my question is what if the intermediate file is almost visually lossless compared to the final output.

    So to sum up, what quality difference should I expect from the following routes ?

    CRF 18 (original) -----> CRF 28 (final)
    CRF 18 (original) -----> CRF 22 (long-term storage) -----> Lossy  CRF 28 (final)
  • Issue in FFmpegAndroid library when i compress video it convert video time into 1 or 2 second

    25 mai 2017, par Fateh Singh Saini

    Used this dependencies :
    compile ’com.writingminds:FFmpegAndroid:0.3.2’

    I used blow code for video compress
    public static final String VIDEOCODEC = "-vcodec" ;
    public static final String AUDIOCODEC = "-acodec" ;

    public static final String VIDEOBITSTREAMFILTER = "-vbsf";
    public static final String AUDIOBITSTREAMFILTER = "-absf";

    public static final String VERBOSITY = "-v";
    public static final String FILE_INPUT = "-i";
    public static final String SIZE = "-s";
    public static final String FRAMERATE = "-r";
    public static final String FORMAT = "-f";
    public static final String BITRATE_VIDEO = "-b:v";

    public static final String BITRATE_AUDIO = "-b:a";
    public static final String CHANNELS_AUDIO = "-ac";
    public static final String FREQ_AUDIO = "-ar";

    String[] complexCommand = "-y", FILE_INPUT, yourRealPath, SIZE, "480x360", FRAMERATE, "25", VIDEOCODEC, "mpeg4", BITRATE_VIDEO, "150k", BITRATE_AUDIO, "48000", CHANNELS_AUDIO, "2", FREQ_AUDIO, "22050", filePath ;

    /**
    * Executing ffmpeg binary
    */
    private static String execFFmpegBinary(final String[] command) {


       try {
           ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
               @Override
               public void onFailure(String s) {
                   Log.d(TAG, "FAILED with output : " + s);
               }

               @Override
               public void onSuccess(String s) {
                   Log.d(TAG, "SUCCESS with output : " + s);
               }

               @Override
               public void onProgress(String s) {
                   Log.d(TAG, "Started command : ffmpeg " + command);
                   Log.d(TAG, "progress : " + s);
               }

               @Override
               public void onStart() {
                   Log.d(TAG, "Started command : ffmpeg " + command);
               }

               @Override
               public void onFinish() {
                   Log.d(TAG, "Finished command : ffmpeg " + command);

               }
           });
       } catch (FFmpegCommandAlreadyRunningException e) {
           // do nothing for now
       }
       return filePath;
    }