
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (75)
-
Menus personnalisés
14 novembre 2010, parMediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
Menus créés à l’initialisation du site
Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...) -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP 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 (9864)
-
ffmpeg - I want to concat multiple videos (front / rear) with overlay and one second delay
12 mai 2024, par Andrej FlorjančičI try to write bash script to concat front and rear video files with delay 1 second at start and overlay rear over front.


I wrote the following bash script :


# Define the output file
output_file="${VIDEO}/final_output_${choice}.mp4"

# Collect and sort the video files
front_files=( $(ls *_F.MP4 | sort) )
rear_files=( $(ls *_R.MP4 | sort) )

# Create a file to hold ffmpeg input commands and filter scripts
input_list="input_files.txt"
filter_script="filter_complex.txt"
inputs=""

# Clear the input list and filter script files
echo "" > "$input_list"
echo "" > "$filter_script"

# Number of files
num_files=${#front_files[@]}

# Iterate through the sorted files to build the filter script
for i in "${!front_files[@]}"; do
 echo "file '${front_files[$i]}'" >> "$input_list"
 echo "file '${rear_files[$i]}'" >> "$input_list"
 
 echo "[$((2*i)):v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_$i]; [$((2*i)):a]atrim=start=1,asetpts=PTS-STARTPTS[a_$i];" >> "$filter_script"
 echo "[$((2*i+1)):v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_$i];" >> "$filter_script" # Rear video only
 echo "[f_$i][r_$i]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_$i];" >> "$filter_script"

 input+="[mix_$i][a_$i]"
done

# Concatenate all combined labels
echo "${input}concat=n=${#front_files[@]}:v=1:a=1[v][a]" >> "$filter_script"

# Run FFmpeg with filter script
ffmpeg -f concat -safe 0 -i "$input_list" \
 -filter_complex_script "$filter_script" \
 -map "[v]" -map "[a]" \
 -y "$output_file"



This script generates two files input_list.txt :


file '20200826_084407_F.MP4'
file '20200826_084407_R.MP4'
file '20200826_084708_F.MP4'
file '20200826_084708_R.MP4'
file '20200826_084910_F.MP4'
file '20200826_084910_R.MP4'



filter_script.txt :


[0:v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_0]; [0:a]atrim=start=1,asetpts=PTS-STARTPTS[a_0];
[1:v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_0];
[f_0][r_0]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_0];
[2:v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_1]; [2:a]atrim=start=1,asetpts=PTS-STARTPTS[a_1];
[3:v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_1];
[f_1][r_1]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_1];
[4:v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_2]; [4:a]atrim=start=1,asetpts=PTS-STARTPTS[a_2];
[5:v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_2];
[f_2][r_2]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_2];
[mix_0][a_0][mix_1][a_1][mix_2][a_2]concat=n=3:v=1:a=1[v][a]



I'w got error :


Input #0, concat, from 'input_files.txt':
 Duration: N/A, start: 0.000000, bitrate: 11973 kb/s
 Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 11877 kb/s, 30 fps, 30 tbr, 60k tbn, 60 tbc
 Metadata:
 creation_time : 2020-08-26T08:47:07.000000Z
 handler_name : VideoHandler
 vendor_id : [0][0][0][0]
 encoder : h264
 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 32000 Hz, mono, fltp, 96 kb/s
 Metadata:
 creation_time : 2020-08-26T08:47:07.000000Z
 handler_name : SoundHandler
 vendor_id : [0][0][0][0]
Invalid file index 1 in filtergraph description
[0:v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_0]; [0:a]atrim=start=1,asetpts=PTS-STARTPTS[a_0];
[1:v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_0];
[f_0][r_0]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_0];
[2:v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_1]; [2:a]atrim=start=1,asetpts=PTS-STARTPTS[a_1];
[3:v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_1];
[f_1][r_1]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_1];
[4:v]trim=start=1,scale=1920:1080,setpts=PTS-STARTPTS[f_2]; [4:a]atrim=start=1,asetpts=PTS-STARTPTS[a_2];
[5:v]trim=start=1,scale=640:360,setpts=PTS-STARTPTS[r_2];
[f_2][r_2]overlay=x=(main_w-overlay_w-10):y=(main_h-overlay_h-10)[mix_2];
[mix_0][a_0][mix_1][a_1][mix_2][a_2]concat=n=3:v=1:a=1[v][a]



What am I doing wrong ?


-
Is there a way to horizontal flip video captured from flutter front camera
5 mai 2024, par JoyJoyBasically, I'm trying to flip video horizontally after capturing it from flutter front camera. So I start recording, stop recording, flip the video and pass it to another page. I'm fairly new and would appreciate any assistance as my code isn't working


I've tried doing so using the new ffmpeg_kit flutter


Future<void> flipVideo(String inputPath, String outputPath) async{
final ffmpegCommand = "-i $inputPath -vf hflip $outputPath";
final session = FFmpegKit.executeAsync(ffmpegCommand);
await session.then((session) async {
 final returnCode = await session.getReturnCode();
 if (ReturnCode.isSuccess(returnCode)) {
 print('Video flipping successful');
 } else {
 print('Video flipping failed: ${session.getAllLogs()}');
 }
});}

void stopVideoRecording() async {
XFile videopath = await cameraController.stopVideoRecording();

try {
 final Directory appDocDir = await 
 getApplicationDocumentsDirectory();
 final String outputDirectory = appDocDir.path;
 final String timeStamp = DateTime.now().millisecondsSinceEpoch.toString();
 final String outputPath = '$outputDirectory/flipped_video_$timeStamp.mp4';

 await flipVideo(videopath.path, outputPath);

 // Once completed,
 Navigator.push(
 context,
 MaterialPageRoute(
 builder: (builder) => VideoViewPage(
 path: File(outputPath),
 fromFrontCamera: iscamerafront,
 flash: flash,
 )));
 print('Video flipping completed');
} catch (e) {
 print('Error flipping video: $e');
}
</void>


}


-
Resampling function produces audio with noise
29 avril 2024, par kitty uwuI have function for resampling one channel of audio (as a
float
array) :

int resample_and_save(float *audio_input, int input_sample_rate, int output_sample_rate, int input_num_of_samples, const char *output_file) {
 AVChannelLayout ch_layout = AV_CHANNEL_LAYOUT_MONO;
 SwrContext *swr_ctx = swr_alloc();
 uint8_t* resampled_data = NULL;
 float *audio_output = NULL;
 int ret = 0;

 if (!swr_ctx) {
 fprintf(stderr, "Could not allocate resampler context\n");
 return -1;
 }

 av_opt_set_chlayout(swr_ctx, "in_chlayout", &ch_layout, 0);
 av_opt_set_int(swr_ctx, "in_sample_rate", input_sample_rate, 0);
 av_opt_set_sample_fmt(swr_ctx, "in_sample_fmt", AV_SAMPLE_FMT_FLT, 0);

 av_opt_set_chlayout(swr_ctx, "out_chlayout", &ch_layout, 0);
 av_opt_set_int(swr_ctx, "out_sample_rate", output_sample_rate, 0);
 av_opt_set_sample_fmt(swr_ctx, "out_sample_fmt", AV_SAMPLE_FMT_FLT, 0);

 if ((ret = swr_init(swr_ctx)) < 0) {
 ret = -1;
 goto cleanup;
 }

 int output_samples_count = av_rescale_rnd(swr_get_delay(swr_ctx, input_sample_rate) + input_num_of_samples, output_sample_rate, input_sample_rate, AV_ROUND_UP);
 ret = av_samples_alloc(&resampled_data, NULL, 1, output_samples_count, AV_SAMPLE_FMT_FLT, 0);
 if (ret < 0) {
 ret = -1;
 goto cleanup;
 }

 const uint8_t *in_samples[1] = { (const uint8_t *)audio_input };
 int frame_count = swr_convert(swr_ctx, &resampled_data, output_samples_count, in_samples, input_num_of_samples);
 if (frame_count < 0) {
 fprintf(stderr, "Error while resampling\n");
 ret = -1;
 goto cleanup;
 }

 int frame_count_last = swr_convert(swr_ctx, &resampled_data, output_samples_count, 0, 0);
 frame_count += frame_count_last;
 audio_output = (float *)malloc(frame_count * sizeof(float));
 if (!audio_output) {
 fprintf(stderr, "Could not allocate memory for output\n");
 ret = -1;
 goto cleanup;
 }

 memcpy(audio_output, &resampled_data[0], frame_count * sizeof(float));
 ret = write_wav(output_file, audio_output, frame_count, output_sample_rate);

cleanup:
 return ret;
}




When I play the audio (even one-channel audio), there is a lot of noise on it, like there are missing samples. How can I fix it ?