Recherche avancée

Médias (0)

Mot : - Tags -/formulaire

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (96)

  • 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 (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (9000)

  • avcodec/mpeg2dec : Fix motion vector rounding for chroma components

    11 février 2018, par Nekopanda
    avcodec/mpeg2dec : Fix motion vector rounding for chroma components
    

    In 16x8 motion compensation, for lower 16x8 region, the input to mpeg_motion() for motion_y was "motion_y + 16", which causes wrong rounding. For 4:2:0, chroma scaling for y is dividing by two and rounding toward zero. When motion_y < 0 and motion_y + 16 > 0, the rounding direction of "motion_y" and "motion_y + 16" is different and rounding "motion_y + 16" would be incorrect.

    We should input "motion_y" as is to round correctly. I add "is_16x8" flag to do that.

    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] libavcodec/mpegvideo_motion.c
    • [DH] tests/ref/fate/filter-mcdeint-fast
    • [DH] tests/ref/fate/filter-mcdeint-medium
    • [DH] tests/ref/fate/filter-w3fdif-complex
    • [DH] tests/ref/fate/filter-w3fdif-simple
    • [DH] tests/ref/fate/filter-yadif-mode0
    • [DH] tests/ref/fate/filter-yadif-mode1
    • [DH] tests/ref/fate/filter-yadif10
    • [DH] tests/ref/fate/filter-yadif16
    • [DH] tests/ref/fate/mpeg2-field-enc
    • [DH] tests/ref/fate/mpeg2-ticket6677
  • How to Simply Remove Duplicate Frames from a Video using ffmpeg

    29 janvier 2017, par Skeeve

    First of all, I’d preface this by saying I’m NO EXPERT with video manipulation,
    although I’ve been fiddling with ffmpeg for years (in a fairly limited way). Hence, I’m not too flash with all the language folk often use... and how it affects what I’m trying to do in my manipulations... but I’ll have a go with this anyway...

    I’ve checked a few links here, for example :
    ffmpeg - remove sequentially duplicate frames

    ...but the content didn’t really help me.

    I have some hundreds of video clips that have been created under both Windows and Linux using both ffmpeg and other similar applications. However, they have some problems with times in the video where the display is ’motionless’.

    As an example, let’s say we have some web site that streams a live video into, say, a Flash video player/plugin in a web browser. In this case, we’re talking about a traffic camera video stream, for example.

    There’s an instance of ffmpeg running that is capturing a region of the (Windows) desktop into a video file, viz :-

    ffmpeg -hide_banner -y -f dshow ^
         -i video="screen-capture-recorder" ^
         -vf "setpts=1.00*PTS,crop=448:336:620:360" ^
         -an -r 25 -vcodec libx264 -crf 0 -qp 0 ^
         -preset ultrafast SAMPLE.flv

    Let’s say the actual ’display’ that is being captured looks like this :-

    123456789 XXXXX 1234567 XXXXXXXXXXX 123456789 XXXXXXX
    ^---a---^ ^-P-^ ^--b--^ ^----Q----^ ^---c---^ ^--R--^

    ...where each character position represents a (sequence of) frame(s). Owing to a poor internet connection, a "single frame" can be displayed for an extended period (the ’X’ characters being an (almost) exact copy of the immediately previous frame). So this means we have segments of the captured video where the image doesn’t change at all (to the naked eye, anyway).

    How can we deal with the duplicate frames ?... and how does our approach change if the ’duplicates’ are NOT the same to ffmpeg but LOOK more-or-less the same to the viewer ?

    If we simply remove the duplicate frames, the ’pacing’ of the video is lost, and what used to take, maybe, 5 seconds to display, now takes a fraction of a second, giving a very jerky, unnatural motion, although there are no duplicate images in the video. This seems to be achievable using ffmpeg with an ’mp_decimate’ option, viz :-

        ffmpeg -i SAMPLE.flv ^                      ... (i)
           -r 25 ^
           -vf mpdecimate,setpts=N/FRAME_RATE/TB DEC_SAMPLE.mp4

    That reference I quoted uses a command that shows which frames ’mp_decimate’ will remove when it considers them to be ’the same’, viz :-

        ffmpeg -i SAMPLE.flv ^                      ... (ii)
           -vf mpdecimate ^
           -loglevel debug -f null -

    ...but knowing that (complicated formatted) information, how can we re-organize the video without executing multiple runs of ffmpeg to extract ’slices’ of video for re-combining later ?

    In that case, I’m guessing we’d have to run something like :-

    • user specifies a ’threshold duration’ for the duplicates
      (maybe run for 1 sec only)
    • determine & save main video information (fps, etc - assuming
      constant frame rate)
    • map the (frame/time where duplicates start)->no. of
      frames/duration of duplicates
    • if the duration of duplicates is less than the user threshold,
      don’t consider this period as a ’series of duplicate frames’
      and move on
    • extract the ’non-duplicate’ video segments (a, b & c in the
      diagram above)
    • create ’new video’ (empty) with original video’s specs
    • for each video segment
      extract the last frame of the segment
      create a short video clip with repeated frames of the frame
      just extracted (duration = user spec. = 1 sec)
      append (current video segment+short clip) to ’new video’
      and repeat

    ...but in my case, a lot of the captured videos might be 30 minutes long and have hundreds of 10 sec long pauses, so the ’rebuilding’ of the videos will take a long time using this method.

    This is why I’m hoping there’s some "reliable" and "more intelligent" way to use
    ffmepg (with/without the ’mp_decimate’ filter) to do the ’decimate’ function in only a couple of passes or so... Maybe there’s a way that the required segments could even be specified (in a text file, for example) and as ffmpeg runs it will
    stop/restart it’s transcoding at specified times/frame numbers ?

    Short of this, is there another application (for use on Windows or Linux) that could do what I’m looking for, without having to manually set start/stop points,
    extracting/combining video segments manually...?

    I’ve been trying to do all this with ffmpeg N-79824-gcaee88d under Win7-SP1 and (a different version I don’t currently remember) under Puppy Linux Slacko 5.6.4.

    Thanks a heap for any clues.

  • Problems with Python's azure.cognitiveservices.speech when installing together with FFmpeg in a Linux web app

    15 mai 2024, par Kakobo kakobo

    I need some help.&#xA;I'm building an web app that takes any audio format, converts into a .wav file and then passes it to 'azure.cognitiveservices.speech' for transcription.I'm building the web app via a container Dockerfile as I need to install ffmpeg to be able to convert non ".wav" audio files to ".wav" (as azure speech services only process wav files). For some odd reason, the 'speechsdk' class of 'azure.cognitiveservices.speech' fails to work when I install ffmpeg in the web app. The class works perfectly fine when I install it without ffpmeg or when i build and run the container in my machine.

    &#xA;

    I have placed debug print statements in the code. I can see the class initiating, for some reason it does not buffer in the same when when running it locally in my machine. The routine simply stops without any reason.

    &#xA;

    Has anybody experienced a similar issue with azure.cognitiveservices.speech conflicting with ffmpeg ?

    &#xA;

    Here's my Dockerfile :

    &#xA;

    # Use an official Python runtime as a parent imageFROM python:3.11-slim&#xA;&#xA;#Version RunRUN echo "Version Run 1..."&#xA;&#xA;Install ffmpeg&#xA;&#xA;RUN apt-get update &amp;&amp; apt-get install -y ffmpeg &amp;&amp; # Ensure ffmpeg is executablechmod a&#x2B;rx /usr/bin/ffmpeg &amp;&amp; # Clean up the apt cache by removing /var/lib/apt/lists saves spaceapt-get clean &amp;&amp; rm -rf /var/lib/apt/lists/*&#xA;&#xA;//Set the working directory in the container&#xA;&#xA;WORKDIR /app&#xA;&#xA;//Copy the current directory contents into the container at /app&#xA;&#xA;COPY . /app&#xA;&#xA;//Install any needed packages specified in requirements.txt&#xA;&#xA;RUN pip install --no-cache-dir -r requirements.txt&#xA;&#xA;//Make port 80 available to the world outside this container&#xA;&#xA;EXPOSE 8000&#xA;&#xA;//Define environment variable&#xA;&#xA;ENV NAME World&#xA;&#xA;//Run main.py when the container launches&#xA;&#xA;CMD ["streamlit", "run", "main.py", "--server.port", "8000", "--server.address", "0.0.0.0"]`and here&#x27;s my python code:&#xA;

    &#xA;

    def transcribe_audio_continuous_old(temp_dir, audio_file, language):&#xA;    speech_key = azure_speech_key&#xA;    service_region = azure_speech_region&#xA;&#xA;    time.sleep(5)&#xA;    print(f"DEBUG TIME BEFORE speechconfig")&#xA;&#xA;    ran = generate_random_string(length=5)&#xA;    temp_file = f"transcript_key_{ran}.txt"&#xA;    output_text_file = os.path.join(temp_dir, temp_file)&#xA;    speech_recognition_language = set_language_to_speech_code(language)&#xA;    &#xA;    speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)&#xA;    speech_config.speech_recognition_language = speech_recognition_language&#xA;    audio_input = speechsdk.AudioConfig(filename=os.path.join(temp_dir, audio_file))&#xA;        &#xA;    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_input, language=speech_recognition_language)&#xA;    done = False&#xA;    transcript_contents = ""&#xA;&#xA;    time.sleep(5)&#xA;    print(f"DEBUG TIME AFTER speechconfig")&#xA;    print(f"DEBUG FIle about to be passed {audio_file}")&#xA;&#xA;    try:&#xA;        with open(output_text_file, "w", encoding=encoding) as file:&#xA;            def recognized_callback(evt):&#xA;                print("Start continuous recognition callback.")&#xA;                print(f"Recognized: {evt.result.text}")&#xA;                file.write(evt.result.text &#x2B; "\n")&#xA;                nonlocal transcript_contents&#xA;                transcript_contents &#x2B;= evt.result.text &#x2B; "\n"&#xA;&#xA;            def stop_cb(evt):&#xA;                print("Stopping continuous recognition callback.")&#xA;                print(f"Event type: {evt}")&#xA;                speech_recognizer.stop_continuous_recognition()&#xA;                nonlocal done&#xA;                done = True&#xA;            &#xA;            def canceled_cb(evt):&#xA;                print(f"Recognition canceled: {evt.reason}")&#xA;                if evt.reason == speechsdk.CancellationReason.Error:&#xA;                    print(f"Cancellation error: {evt.error_details}")&#xA;                nonlocal done&#xA;                done = True&#xA;&#xA;            speech_recognizer.recognized.connect(recognized_callback)&#xA;            speech_recognizer.session_stopped.connect(stop_cb)&#xA;            speech_recognizer.canceled.connect(canceled_cb)&#xA;&#xA;            speech_recognizer.start_continuous_recognition()&#xA;            while not done:&#xA;                time.sleep(1)&#xA;                print("DEBUG LOOPING TRANSCRIPT")&#xA;&#xA;    except Exception as e:&#xA;        print(f"An error occurred: {e}")&#xA;&#xA;    print("DEBUG DONE TRANSCRIPT")&#xA;&#xA;    return temp_file, transcript_contents&#xA;

    &#xA;

    The transcript this callback works fine locally, or when installed without ffmpeg in the linux web app. Not sure why it conflicts with ffmpeg when installed via container dockerfile. The code section that fails can me found on note #NOTE DEBUG"

    &#xA;