
Recherche avancée
Médias (91)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
-
avec chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
sans chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
config chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
Autres articles (68)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
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" (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (11110)
-
Mixing a FLV audio stream with a WAV background track, and converting to MP3 with SoX and FFmpeg
7 septembre 2012, par tubboI'm building a Flash-based recording application for a contracted web site. It streams the recorded voice (via SWF) to a Red5 server, then uses a combination of FFmpeg and SoX to compile the vocal audio with a lower-in-volume background music track. This all has to happen on-demand, that is, when a user "saves" his or her vocal recording.
Here is an example command I will be running. Names have been changed to protect the innocent. The filenames describe their role in the final file :
sox --combine mix -p --no-show-progress --norm "|ffmpeg -i /usr/share/red5/webapps/audiorecorder/stream/SPOKEN_VOICE.flv -t wav pipe:1" /var/www/ufiles/music/BACKGROUND_MUSIC.wav - | ffmpeg -i pipe:1 /var/www/ufiles/recordings/COMPILED_AUDIO_RECORDING.mp3
When I run this command in the shell, this is what happens :
$ sox --combine mix -p --no-show-progress --norm "|ffmpeg -i audioStream_1321399534128_21.flv -ar 44100 -ac 2 -t wav pipe:1" wrong.wav - | ffmpeg -i pipe:1 ~/www/trauma101.com/compiled.mp3
ffmpeg version N-34884-g7575980, Copyright (c) 2000-2011 the FFmpeg developers
built on Nov 15 2011 14:06:49 with gcc 4.4.5
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-x11grab --enable-libspeex
libavutil 51. 25. 0 / 51. 25. 0
libavcodec 53. 34. 0 / 53. 34. 0
libavformat 53. 20. 0 / 53. 20. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 48. 1 / 2. 48. 1
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
ffmpeg version N-34884-g7575980, Copyright (c) 2000-2011 the FFmpeg developers
built on Nov 15 2011 14:06:49 with gcc 4.4.5
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-x11grab --enable-libspeex
libavutil 51. 25. 0 / 51. 25. 0
libavcodec 53. 34. 0 / 53. 34. 0
libavformat 53. 20. 0 / 53. 20. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 48. 1 / 2. 48. 1
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
[libspeex @ 0x1e36b20] Missing Speex header, assuming defaults.
Input #0, flv, from 'audioStream_1321399534128_21.flv':
Metadata:
novideocodec : 0
server : Red5 Server 1.0.0 RC2 Rev: 4295
creationdate : Tue Nov 15 15:25:41 PST 2011
canSeekToEnd : true
Duration: 00:00:06.77, start: 0.000000, bitrate: 43 kb/s
Stream #0:0: Audio: speex, 16000 Hz, 1 channels, s16
Invalid duration specification for t: wav
sox FAIL formats: can't open input pipe `|ffmpeg -i audioStream_1321399534128_21.flv -ar 44100 -ac 2 -t wav pipe:1': premature EOFI think the issue is stemming from the conversion from FLV to WAV in FFmpeg, and since it's being piped in it causes the whole process to fail. I always get that duration warning, but when FFmpeg outputs to a .wav file and the SoX command is run separately, I can still get a WAV from SoX and convert that to MP3 manually. I'd like to do all this in one line, piping the data between applications.
What do I do ?
-
Creating thumbnails with FFmpeg
3 janvier 2012, par Calin-Andrei BurloiuI am using FFmpeg to extract thumbnails from specific positions of video files.
I found on the web two approaches to do this :
-
With
-ss
(seek) parameter before-i
(input) parameter :ffmpeg -y -ss $SEEK_POINT -i input.ogv -vcodec mjpeg -vframes 1 -an -s 120x90 -f rawvideo output.jpg
-
With
-ss
(seek) parameter after-i
(input) parameter :ffmpeg -y -i input.ogv -vcodec mjpeg -ss $SEEK_POINT -vframes 1 -an -s 120x90 -f rawvideo output.jpg
The first method generates a bad thumbnail with gray spots, but works very fast. The error returned is
[theora @ 0x8097240] vp3: first frame not a keyframe
.The second method always works but show an error which cause the extraction to take a lot of time. This amount of time is not fixed and it depends on the seek point as I noticed. Sometimes it takes a few seconds and other times several minutes to extract a thumbnail. I get the error
Buffering several frames is not supported. Please consume all available frames before adding a new one.
in the following output :Input #0, ogg, from 'input.ogv':
Duration: 00:21:52.76, start: 0.000000, bitrate: 844 kb/s
Stream #0.0: Video: theora, yuv420p, 800x600 [PAR 4:3 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16, 192 kb/s
Metadata:
ENCODER : Lavf52.102.0
Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting format 'yuvj420p'
[buffer @ 0x9250840] w:800 h:600 pixfmt:yuv420p
[scale @ 0x92508a0] w:800 h:600 fmt:yuv420p -> w:120 h:90 fmt:yuvj420p flags:0x4
Output #0, rawvideo, to 'output.jpg':
Metadata:
encoder : Lavf53.2.0
Stream #0.0: Video: mjpeg, yuvj420p, 120x90 [PAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
[buffer @ 0x9250840] Buffering several frames is not supported. Please consume all available frames before adding a new one.
frame= 0 fps= 0 q=0.0 size= 0kB time=10000000000.00 bitrate= 0.0kbit
Last message repeated 15448 times
frame= 1 fps= 0 q=3.4 Lsize= 3kB time=0.04 bitrate= 598.8kbits/s
video:3kB audio:0kB global headers:0kB muxing overhead 0.000000%How can I extract thumbnails without any problems using FFmpeg from a custom position of a video regardless of the input format ?
-
-
How can I use FFMpeg to convert videos saved in gallery to mp4 no matter what extension is chose ?
7 juin 2014, par user3587194Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
intent.setType("video/*");
startActivityForResult(intent, VIDEO_SELECTED_GALLERY);
}
}, expires);
}
});
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" +Environment.getExternalStorageDirectory())));Here is my OnActivityResults this is after the Intent happens when i choose a video from the selected gallery. Im trying to implement in FFMpeg command during the onActivityResult so i can be able to convert all video files to mp4 when choosing a video from the gallery
else if (requestCode == VIDEO_SELECTED_GALLERY) {
if (resultCode == RESULT_OK) {
try {
selectedVideo = intent.getData();
if (selectedVideo != null) {
try {
String[] filePathColumn = {
MediaStore.Video.VideoColumns.DATA,
MediaStore.Video.VideoColumns.SIZE,
MediaStore.Video.VideoColumns.DURATION,
MediaStore.Video.VideoColumns.MIME_TYPE
};
Cursor cursor = getContentResolver().query(selectedVideo, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex0 = cursor.getColumnIndex(filePathColumn[0]);
int columnIndex1 = cursor.getColumnIndex(filePathColumn[1]);
int columnIndex2 = cursor.getColumnIndex(filePathColumn[2]);
int columnIndex3 = cursor.getColumnIndex(filePathColumn[3]);
if (cursor.getString(columnIndex3) != null && cursor.getString(columnIndex3).compareTo("")!=0 && cursor.getString(columnIndex3).contains("wmv")) {
displayErrorAlert("Upload Alert", "You cannot upload .wmv format videos. Sorry, that file format is not supported at this time");
}
else {
float lduration = 0.0f;
String lpath = "";
if(cursor.getString(columnIndex1) != null && cursor.getString(columnIndex1).compareTo("")!=0) {
lsize = Long.parseLong(cursor.getString(columnIndex1));
size_of_file = lsize;
}
if (cursor.getString(columnIndex2) != null && cursor.getString(columnIndex2).compareTo("")!=0) {
lduration = Float.parseFloat(cursor.getString(columnIndex2));
}
if(cursor.getString(columnIndex0) != null && cursor.getString(columnIndex0).compareTo("")!= 0) {
lpath = cursor.getString(columnIndex0);
lduration = lduration / 1000;
if (lduration > 31.00) {
displayErrorAlert("Time Limit", "Duration of video is more than 30 seconds");
}
else {
path = lpath;
getVideoFileSize();
if (lsize > 26214400 && lsize < FILE_SIZE) {
AlertDialog.Builder confirm = new AlertDialog.Builder(this);
confirm.setTitle("Warning: Long Upload Time");
confirm.setMessage("This video is larger than 25MB. Uploading may take more than 5 minutes, depending on your internet speed.");
confirm.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick (DialogInterface dialog, int which) {
if (mConnectionDetector.isConnectedToInternet()) {
// TODO Auto-generated method
new S3PutObjectTask(VideoPlay.this, s3Client, code, path, size_of_file, securityCode).execute();
}
else {
mTosty.showToast(getResources().getString(R.string.internetIssue));
}
}
});
confirm.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick (DialogInterface dialog, int which) {
dialog.dismiss();
}
});
confirm.show().show();
}
else {
if (mConnectionDetector.isConnectedToInternet()) {
new S3PutObjectTask(VideoPlay.this, s3Client, code, path, size_of_file, securityCode).execute();
}
else {
mTosty.showToast(getResources().getString(R.string.internetIssue));
}
}
}
}
else {
if (lsize > FILE_SIZE) {
displayErrorAlert("File Size Too Big", "You can not download greater than 50mb.");
}
else if (lsize > 26214400 && lsize < FILE_SIZE) {
AlertDialog.Builder confirm = new AlertDialog.Builder(this);
confirm.setTitle("Warning: Long Download Time");
confirm.setMessage("This video is larger than 25MB. Downloading may take more than 5 minutes, depending on your internet speed.");
confirm.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
VideoDownloaderTaskForAlbum mTask =new VideoDownloaderTaskForAlbum(VideoPlay.this,VideoPlay.this,lsize,selectedVideo);
mTask.execute(selectedVideo);
dialog.dismiss();
}
});
confirm.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
confirm.show().show();
}
else {
VideoDownloaderTaskForAlbum mTask =new VideoDownloaderTaskForAlbum(VideoPlay.this,VideoPlay.this,lsize,selectedVideo);
mTask.execute(selectedVideo);
}
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}
else {
displayErrorAlert("Wrong File", "Wrong file Path");
}
}
catch (Exception e) {
Log.i("tag", e.getMessage());
}
} else if (resultCode == RESULT_CANCELED) {
mTosty.showToast("Result Canceled");
}
}
}