Recherche avancée

Médias (3)

Mot : - Tags -/pdf

Autres articles (52)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

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

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

Sur d’autres sites (6412)

  • Use SDL2 play yuv file but actually no display [closed]

    14 juin 2024, par guan xi

    I use ffmpeg to demux and decode the media file, and then use SDL2 to play the raw data, everything is ok. no error no warning, but SDL2 windows does not dispaly video content.
All i know is frame dts is ordered in SDL2 play queue and data is good.

    


    void VideoPlay::play_video() {
  while (is_running_) {
    refresh_loop_wait_event(&event_);

    switch (event_.type) {
      case SDL_KEYDOWN:
        if (event_.key.keysym.sym == SDLK_q) {
          LOG_INFO("Q quit");
          is_running_ = false;
          frame_queue_->abort();
        }
        break;
      case SDL_QUIT:
        LOG_INFO("SDL_QUIT");
        is_running_ = false;
        frame_queue_->abort();
        break;

      default:
        break;
    }
  }
}

void VideoPlay::refresh_loop_wait_event(SDL_Event *event) {
  SDL_PumpEvents();

  while (
      !SDL_PeepEvents(event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)) {
    video_refresh();
    SDL_PumpEvents();
  }
}

void VideoPlay::video_refresh() {
  int ret = 0;
  frame_queue_->pop(frame_);
  if (!frame_) {
    LOG_ERROR("frame_queue_ pop failed.");
    is_running_ = false;
    frame_queue_->abort();
    return;
  }

  rect_.x = 0;
  rect_.y = 0;
  rect_.w = video_width_;
  rect_.h = video_height_;

  ret = SDL_UpdateYUVTexture(
      texture_, &rect_, frame_->data[0], frame_->linesize[0], frame_->data[1],
      frame_->linesize[1], frame_->data[2], frame_->linesize[2]);

  LOG_DEBUG("frame pts: %ld, tot size: %d, Y size: %d, U size: %d, V size: %d",
            frame_->pts, video_width_ * video_height_, frame_->linesize[0],
            frame_->linesize[1], frame_->linesize[2]);
  if (ret != 0) {
    LOG_ERROR("SDL_UpdateYUVTexture failed. %s", SDL_GetError());
    is_running_ = false;
    frame_queue_->abort();
    return;
  }
  ret = SDL_RenderClear(renderer_);
  if (ret != 0) {
    LOG_ERROR("SDL_RenderClear failed. %s", SDL_GetError());
    is_running_ = false;
    frame_queue_->abort();
    return;
  }
  ret = SDL_RenderCopy(renderer_, texture_, nullptr, &rect_);
  if (ret != 0) {
    LOG_ERROR("SDL_RenderCopy failed. %s", SDL_GetError());
    is_running_ = false;
    frame_queue_->abort();
    return;
  }
  SDL_RenderPresent(renderer_);
  SDL_Delay(10);
  av_frame_free(&frame_);
  frame_ = nullptr;
}


    


    log file out put

    


    ~/A_CODES/ffmpeg_official/cmake-build-debug ᐅ cat sdlplay.log
[info]  [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/core/sp_demux.cpp:50  init] audio idx 1 video idx 0
[info]  [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/core/sp_decode.cpp:39  init] codec: h264
[info]  [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/core/sp_decode.cpp:68  init] yuv fmt: yuv420p
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x1100
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x1100
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x200
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x200
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x200
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x200
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x200
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x300
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x300
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x301
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:100  play_video] event 0x200
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 67, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 133, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 200, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 267, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 333, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 400, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 467, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 533, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 600, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 667, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 733, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 800, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 867, tot size: 82944, Y size: 384, U size: 192, V size: 192
[debug] [2024-06-14 15:39:33] [/home/xiguan/A_CODES/ffmpeg_official/SDLPlayer/sdl/video_play.cpp:151  video_refresh] frame pts: 933, tot size: 82944, Y size: 384, U size: 192, V size: 192


    


    I try to handle SDL2 events correctly as ffplay but no use.
I also gdb to search anything error but nothing happen too.

    


  • What is the best way to split videos into equally sized parts using ffmpeg ? [closed]

    18 juin 2024, par GBPU

    I have tried to split an mp4 file into smaller parts of equal time length like this ffmpeg -i ../data/2024-06-02_12-34-51.mp4 -c copy -map 0 -segment_time 00:00:05 -f segment v1_%03d.mp4. However, this produced videos of highly variables size, some 25x larger than others. I assume this was due to inconsistent framerate during recording.

    


    Next, I tried a script that would split based and limit each part to a specific size :

    


    #!/bin/sh
# Short script to split videos by filesize using ffmpeg by LukeLR

if [ $# -ne 3 ]; then
    echo 'Illegal number of parameters. Needs 3 parameters:'
    echo 'Usage:'
    echo './split-video.sh FILE SIZELIMIT "FFMPEG_ARGS'
    echo 
    echo 'Parameters:'
    echo '    - FILE:        Name of the video file to split'
    echo '    - SIZELIMIT:   Maximum file size of each part (in bytes)'
    echo '    - FFMPEG_ARGS: Additional arguments to pass to each ffmpeg-call'
    echo '                   (video format and quality options etc.)'
    exit 1
fi

FILE="../data/$1"
SIZELIMIT="$2"
FFMPEG_ARGS="$3"

# Duration of the source video
DURATION=$(ffprobe -i "$FILE" -show_entries format=duration -v quiet -of default=noprint_wrappers=1:nokey=1|cut -d. -f -2)

# Duration that has been encoded so far
CURDURATION=0

# Filename of the source video (without extension)
BASENAME="${FILE%.*}"

# Extension for the video parts
#EXTENSION="${FILE##*.}"
EXTENSION="mp4"

# Number of the current video part
i=1

# Filename of the next video part
NEXTFILENAME="$BASENAME-$i.$EXTENSION"

echo "Duration of source video: $DURATION"

# Until the duration of all partial videos has reached the duration of the source video
#while [[ $CUR_DURATION -lt $DURATION ]]; do
while [[ $(bc <<< "$CURDURATION < $DURATION") -eq 1 ]]; do
    # Encode next part
    echo ffmpeg -i "$FILE" -ss "$CURDURATION" -fs "$SIZELIMIT" $FFMPEG_ARGS "$NEXTFILENAME"
    ffmpeg -ss "$CURDURATION" -i "$FILE" -fs "$SIZELIMIT" $FFMPEG_ARGS "$NEXTFILENAME"

    # Duration of the new part
    NEWDURATION=$(ffprobe -i "$NEXTFILENAME" -show_entries format=duration -v quiet -of default=noprint_wrappers=1:nokey=1|cut -d. -f -2)

    # Total duration encoded so far
    echo $CURDURATION
    CURDURATION=$(bc <<< "$CURDURATION + $NEWDURATION")
    echo $CURDURATION

    i=$((i + 1))

    echo "Duration of $NEXTFILENAME: $NEWDURATION"
    echo "Part No. $i starts at $CURDURATION"
    echo "Current Duration: $CURDURATION"

    NEXTFILENAME="$BASENAME-$i.$EXTENSION"
done


    


    I call the script like this : bash split-video.sh 2024-06-02_12-34-51.mp4 10000000 "-c copy"
Unfortunately, this has an issue where some of the sub videos are extremely short and have wildly inconsistent numbers of frames in them (some with nearly 400, others with 1), despite being similar sizes. I am guessing this has something to do with inconsistent framerate and keyframes or something ?

    


    I am curious what the best way to split a video into equally sized parts, and ideally with similar numbers of frames, is using ffmpeg.

    


  • ffmpeg : getting larger gif file after optimization [closed]

    28 août 2024, par xaxa

    I'm trying to use ffmpeg to reduce the size of GIF images by lowering fps and color palette size. This is the command I use :

    


    ffmpeg -i initial.gif -filter_complex "[0]fps=${fps},split[m][t];[t]palettegen=max_colors=${max_colors}[p];[m][p]paletteuse" output.gif


    


    however, for some reason I'm getting larger files even if I do something as stupid as fps=1, max_colors=4.

    


    here's the initial file :
enter image description here

    


    here's what I've got after the transformation :
enter image description here

    


    the command was :

    


    ffmpeg -i eglite.gif -filter_complex "[0]fps=1,split[m][t];[t]palettegen=max_colors=4[p];[m][p]paletteuse" output.gif


    


    and the sizes I get are :

    


    -rw-r--r-- 1 work work    15860 Aug 26 11:30 eglite.gif
-rw-r--r-- 1 work work    21395 Aug 28 21:35 output.gif


    


    Here's my ffmpeg version :

    


    ffmpeg version n7.0.2 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.1 (GCC) 20240805
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
libavutil      59.  8.100 / 59.  8.100
libavcodec     61.  3.100 / 61.  3.100
libavformat    61.  1.100 / 61.  1.100
libavdevice    61.  1.100 / 61.  1.100
libavfilter    10.  1.100 / 10.  1.100
libswscale      8.  1.100 /  8.  1.100
libswresample   5.  1.100 /  5.  1.100
libpostproc    58.  1.100 / 58.  1.100