
Recherche avancée
Médias (1)
-
Géodiversité
9 septembre 2011, par ,
Mis à jour : Août 2018
Langue : français
Type : Texte
Autres articles (63)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...) -
Creating farms of unique websites
13 avril 2011, parMediaSPIP 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 (10184)
-
What is the best way to split videos into equally sized parts using ffmpeg ? [closed]
18 juin 2024, par GBPUI 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.


-
Use SDL2 play yuv file but actually no display [closed]
14 juin 2024, par guan xiI 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.


-
washed out colors when converting h264 into vp9 using ffmpeg [closed]
31 juillet 2024, par apes-together-strongI'm trying to convert an h264 video to vp9/opus webm.
Every attempt so far has had washed out colors.
Is there a fix for this issue or is it just the way h264->vp9 conversion is ?


ffprobe of the source file :


Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test1.mp4':
 Metadata:
 major_brand : mp42
 minor_version : 0
 compatible_brands: isommp42
 creation_time : 2024-07-30T17:03:10.000000Z
 com.android.version: 10
 Duration: 00:01:04.07, start: 0.000000, bitrate: 20198 kb/s
 Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/smpte170m, progressive), 1920x1080, 20001 kb/s, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 90k tbn (default)
 Metadata:
 creation_time : 2024-07-30T17:03:10.000000Z
 handler_name : VideoHandle
 vendor_id : [0][0][0][0]
 Side data:
 displaymatrix: rotation of -90.00 degrees
 Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 96 kb/s (default)
 Metadata:
 creation_time : 2024-07-30T17:03:10.000000Z
 handler_name : SoundHandle
 vendor_id : [0][0][0][0]