Recherche avancée

Médias (1)

Mot : - Tags -/MediaSPIP 0.2

Autres articles (49)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • 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

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

Sur d’autres sites (10004)

  • ffmpeg and streaming video - frame time issue

    6 mai 2014, par 4ntoine

    I’ve compiled ffmpeg-android (https://github.com/appunite/AndroidFFmpeg) and it works for files.
    The problem is that it shows nothing for network streams (both rtmp and hls) as frame timestamp is too big and it seems to be not from video beginning (as for file). Then it waits for the first frame time which for network stream is too big :

    player_decode_video copying...
    05-05 18:11:26.994: INFO/player.c(16998): player_decode_video Decoded video frame: 568.233000, time_base: 51140970
    05-05 18:11:26.994: INFO/player.c(16998): player_wait_for_frame[0] start
    ...
    05-05 18:11:30.587: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (0.000977)
    05-05 18:11:30.587: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 568232023
    05-05 18:11:31.088: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:31.088: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (0.501542)
    05-05 18:11:31.088: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 567731458
    05-05 18:11:31.588: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:31.588: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (1.002778)
    05-05 18:11:31.588: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 567230222
    05-05 18:11:32.089: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:32.089: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (1.504563)
    05-05 18:11:32.089: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 566728437
    05-05 18:11:32.590: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:32.590: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (2.005708)
    05-05 18:11:32.590: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 566227292

    also i can’t figure out what timestamp for frame for network stream means (for file frames it’s a time from video beginning)

    for file it’s clear : time_base is frame number and timestamp is time from video beginning and it plays the files :

    player_decode_video Decoded video frame: 0.320000, time_base: 8
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.320000) - (0.344337)
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -24337
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.344: INFO/player.c(16998): player_update_time: 0.346169/4.000000
    05-05 18:32:42.344: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.344: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.344: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.344: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.344: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.344: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.344: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.425: INFO/player.c(16998): player_decode_video Decoded video frame: 0.360000, time_base: 9
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.360000) - (0.427994)
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -67994
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.425: INFO/player.c(16998): player_update_time: 0.429214/4.000000
    05-05 18:32:42.425: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.425: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.425: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.425: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.435: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.435: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.435: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video Decoded video frame: 0.400000, time_base: 10
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.400000) - (0.494742)
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -94742
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.495: INFO/player.c(16998): player_update_time: 0.495993/4.000000
    05-05 18:32:42.495: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.495: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.495: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.495: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.555: INFO/player.c(16998): player_decode_video Decoded video frame: 0.440000, time_base: 11
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.440000) - (0.556698)
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -116698
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.555: INFO/player.c(16998): player_update_time: 0.557858/4.000000
    05-05 18:32:42.555: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.555: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.555: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.555: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.565: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.565: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.565: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.625: INFO/player.c(16998): player_decode_video Decoded video frame: 0.480000, time_base: 12

    So what is the meaning of timestamp for stream and what should i change to make it playing streams (rtmp/hls - its can be opened now but it wait for frame time which is far in the future) ?

    UPDATE :

       int64_t pts = av_frame_get_best_effort_timestamp(frame);
    if (pts == AV_NOPTS_VALUE) {
       pts = 0;
    }
    int64_t time = av_rescale_q(pts, stream->time_base, AV_TIME_BASE_Q);
    LOGI(10,
           "player_decode_video Decoded video frame: %f, time_base: %" SCNd64,
           time/1000000.0, pts);
    player_wait_for_frame(player, time, stream_no);

    it extracts time which is far in future :

    player_wait_for_frame[0 = Video] = (568.233000) - (0.000977)

    Is it correct ?

  • lavc : use a separate field for exporting audio encoder padding

    23 août 2014, par Anton Khirnov
    lavc : use a separate field for exporting audio encoder padding
    

    Currently, the amount of padding inserted at the beginning by some audio
    encoders, is exported through AVCodecContext.delay. However
    - the term ’delay’ is heavily overloaded and can have multiple different
    meanings even in the case of audio encoding.
    - this field has entirely different meanings, depending on whether the
    codec context is used for encoding or decoding (and has yet another
    different meaning for video), preventing generic handling of the codec
    context.

    Therefore, add a new field — AVCodecContext.initial_padding. It could
    conceivably be used for decoding as well at a later point.

    • [DBH] doc/APIchanges
    • [DBH] libavcodec/aacenc.c
    • [DBH] libavcodec/ac3enc.c
    • [DBH] libavcodec/audio_frame_queue.c
    • [DBH] libavcodec/avcodec.h
    • [DBH] libavcodec/g722enc.c
    • [DBH] libavcodec/libfaac.c
    • [DBH] libavcodec/libfdk-aacenc.c
    • [DBH] libavcodec/libmp3lame.c
    • [DBH] libavcodec/libopencore-amr.c
    • [DBH] libavcodec/libopusenc.c
    • [DBH] libavcodec/libspeexenc.c
    • [DBH] libavcodec/libtwolame.c
    • [DBH] libavcodec/libvo-aacenc.c
    • [DBH] libavcodec/libvo-amrwbenc.c
    • [DBH] libavcodec/libvorbis.c
    • [DBH] libavcodec/mpegaudioenc.c
    • [DBH] libavcodec/nellymoserenc.c
    • [DBH] libavcodec/ra144enc.c
    • [DBH] libavcodec/utils.c
    • [DBH] libavcodec/version.h
    • [DBH] libavcodec/wmaenc.c
  • Java shelling out to FFMPEG not running nor giving error

    4 janvier, par Todd

    I'm writing a Podcast downloader where I want to be able to download one or more podcasts then run them through FFMPEG.

    


    It does run when I run the program in Windows.
    
It does not run when I run the program in Linux - Meaning FFMPEG may or may not have been called. I have no way of knowing. I get a -1 back from process.waitfor() but no error in my Java logs and no entries at all in the ffmpeg.log file. And there is no file in the processed file directory that FFMPEG would have created.
    
It does run in Linux if I run the same command that fails in Java from the command line.

    


    FFMPEG has the permissions : rwxr-xr-x , so it doesn't seem as if it'd be a permission error. The Java code looks like :

    


        ProcessBuilder processBuilder = new ProcessBuilder( commands );
    processBuilder.redirectErrorStream( true );
    //  Added the next line to see if I could log an error from ffmpeg
    processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo( new File( "./ffmpeg.log" ) ) );

    Process process = processBuilder.start();
    BufferedReader bufferedOutputReader = new BufferedReader( new InputStreamReader( process.getInputStream() ) );
    do {
        outputString = bufferedOutputReader.readLine();
        if ( outputString != null ) {
            LOGGER.trace( outputString );
        }
    } while ( outputString != null );
    results = process.waitFor();
    LOGGER.debug( "Exit value: " + results );


    


    The commands are :

    


    2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: /bin/ffmpeg 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -y 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -i 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "/home/todd/aggregator/incoming/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3" 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -ac 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: 1 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -af 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "atempo=1.4,volume=1.4" 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "/home/todd/aggregator/processed/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"


    


    And the manually constructed and run command line that DOES work is :

    


    /bin/ffmpeg -y -i "/home/todd/aggregator/incoming/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3" -ac 1 -af "atempo=1.4,volume=1.4" "/home/todd/aggregator/processed/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"


    


    The ffmpeg.log file is empty, so I'm doubting whether FFMPEG is ever being reached.

    


    What am I doing wrong ?

    


    EDIT :
I changed the commands to be

    


    "/bin/ffmpeg 2> foo.txt" 


    


    and the execution code to :

    


        ProcessBuilder processBuilder = new ProcessBuilder( commands );
//        processBuilder.redirectErrorStream( true );
    //  Added the next line to see if I could log an error from ffmpeg
//        processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo( new File( "./ffmpeg.log" ) ) );
        Process process = processBuilder.start();
        results = process.waitFor();


    


    Running that command from the command line displays a list of MMPEG commands that can be run within foo.txt. Upon running from within the Java app, the foo.txt file is empty, so it doesn't appear that FFMPEG ever gets reached. But, I'm clueless why not.

    


    EDIT 2 :
I converted the /bin/ffmpeg path to uppercase to see if that would return an error and it did.

    


    ERROR org.mrpc.utilities.ShellUtils - Cannot run program "/BIN/FFMPEG": error=2, No such file or directory


    


    This seems to confirm that the Java Process object can locate ffmpeg successfully when it is properly cased (i.e. my original code) as I don't see an error message when the case is incorrect. Still not sure why nothing happens when it is called.

    


    EDIT 3 :
I punted on this a year ago, but recently had to revisit. This time I found the answer. It is because I included double quotes around some of the command parameters. That caused the files to not be found. This link states that the Process class handles embedded spaces without any intervention required by you : ProcessBuilder adds extra quotes to command line