
Recherche avancée
Médias (1)
-
The pirate bay depuis la Belgique
1er avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
Autres articles (91)
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
-
Supporting all media types
13 avril 2011, parUnlike 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 (...)
-
Dépôt de média et thèmes par FTP
31 mai 2013, parL’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)
Sur d’autres sites (7063)
-
FFmpeg meaningful video thumbnails
18 avril 2015, par MaverickI know this question has been discussed already here. However, it did not solve the problem completely. I trying to retrieve meaning thumbnails from video and while executing the following command.
ffmpeg -ss 3 -i input.avi -vf "select=gt(scene\,0.4)" -frames:v 5 -vsync vfr -vf "fps=fps=1/600" out%02d.jpg
As a result, I am only able to get 1 image out of this video. I am not sure, what is going wrong over here.
Also, it would be great, if someone kindly give a quick explanation of this command parameters and filters. The command originally comes from here
FFMPEG console output :
ffmpeg version 2.6 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libvpx --enable-librtmp --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libass --enable-ffplay --enable-libspeex --enable-libschroedinger --enable-libfdk-aac --enable-libopus --enable-frei0r --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.1_1/include/openjpeg-1.5 ' --enable-nonfree --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, avi, from 'tagesschau.avi':
Metadata:
encoder : Lavf56.25.101
Duration: 00:00:20.03, start: 0.000000, bitrate: 4357 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (xvid / 0x64697678), yuv420p, 720x540 [SAR 1:1 DAR 4:3], 4190 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 44100 Hz, stereo, fltp, 160 kb/s
[swscaler @ 0x7fcb2a00f600] deprecated pixel format used, make sure you did set range correctly
[mjpeg @ 0x7fcb2a803c00] bitrate tolerance 4000000 too small for bitrate 200000, overriding
Output #0, image2, to 'out%02d.jpg':
Metadata:
encoder : Lavf56.25.101
Stream #0:0: Video: mjpeg, yuvj420p(pc), 720x540 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 0k fps, 0k tbn, 0k tbc
Metadata:
encoder : Lavc56.26.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=6.9 Lsize=N/A time=00:10:00.00 bitrate=N/A
video:44kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown -
How do I remux/transcode a progressive file in ffmpeg ?
3 décembre 2014, par Levi RobertsHere’s what I’m trying to do.
My primary objective is to remux or transcode a currently downloading media file for AppleTV and iOS compatible streaming.
I am doing this by looking at the media file and only transcoding when necessary, otherwise it will only alter the container the video/audio lives in. This will reduce overhead for files that are already compatible. The specific compatible output I am looking for is AppleTV3 and iOS.
I have a file that is progressive, meaning that it is downloading using another download manager or another app without the help of
nodejs
. This file may or may not have themoov
information available in the beginning of the file. It just so happens, that I believe my test file does.I have some code that is partially working and it would make sense to be able to get this code fully working. That said, I’m not dismissing alternative ways to do this.
My primary problem (I think) has to do with the
moov
header location or that it’s being set incorrectly. I’m hoping the fix is as simple as correcting my poorffmpeg
knowledge with command line parameters.I am piping the file to and from
ffmpeg
viaGrowingFile
andfs.createWriteStream
respectively.My code for doing so is :
var fs = require('fs');
var child = require('child_process');
var GrowingFile = require('growing-file');
var input_file = GrowingFile.open('./tmp/input.mp4');
var output_file = fs.createWriteStream('./tmp/output.m4v');
// I've tried various args and ffmpeg params here without success.
var args = ['-re', '-i', 'pipe:0', '-g', '52', '-ab', '64k', '-vcodec', 'libx264', '-vb', '448k', '-f', 'mp4', '-movflags', 'frag_keyframe+faststart', 'pipe:1'];
var trans_proc = child.spawn('ffmpeg', args, null);
input_file.pipe(trans_proc.stdin);
trans_proc.stdout.pipe(output_file);I am also temporarily trying to make these files work as intended via
ffmpeg
command line alone, without success. That command is :ffmpeg -i original.mp4 -vcodec copy -r 24 output.m4v
Snippet of
original.mp4
viamediainfo
:General
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42
File size : 9.87 MiB
Duration : 43mn 14s
Overall bit rate mode : Variable
Overall bit rate : 31.9 Kbp
Video
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L2.1
Codec ID : avc1
Duration : 43mn 14s
Width : 480 pixels
Height : 268 pixels
Color space : YUV
Scan type : Progressive
Stream size : 67.5 MiB
Audio
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 43mn 14s
Bit rate mode : Variable
Bit rate : 96.0 KbpsWhat’s happening is that
output.m4v
has an incorrect duration of only the part of the file that’s already downloaded. The video reaches the end or a refresh happens to make the duration longer. This process repeats until theoriginal
file is done downloading. What I want is to be able to emulate/clone the duration of the input file to the output file . -
ffmpeg : programmatically use libavcodec and encode and decode raw bitmap, all in just few milliseconds and small compressed size on Raspberry Pi 4
15 mars 2023, par Jerry SwitalskiWe need to compress the size of the 1024x2048 image we produce, to size of about jpeg (200-500kb) from raw 32bits RGBA (8Mb) on Raspberry Pi 4. All in c/c++ program.


The compression needs to be just in few milliseconds, otherwise it is pointless to us.


We decided to try supported encoding using ffmpeg dev library and c/c++ code.


The problem we are facing is that when we edited example of the encoding, provided by ffmpeg developers, the times we are dealing are unacceptable.


Here you can see the edited code where the frames are created :


for (i = 0; i < 25; i++)
{
#ifdef MEASURE_TIME
 auto start_time = std::chrono::high_resolution_clock::now();
 std::cout << "START Encoding frame...\n";
#endif
 fflush(stdout);

 ret = av_frame_make_writable(frame);
 if (ret < 0)
 exit(1);

 //I try here, to convert our 32 bits RGBA image to YUV pixel format:

 for (y = 0; y < c->height; y++)
 {
 for (x = 0; x < c->width; x++)
 {
 int imageIndexY = y * frame->linesize[0] + x;

 uint32_t rgbPixel = ((uint32_t*)OutputDataImage)[imageIndexY];

 double Y, U, V;
 uint8_t R = rgbPixel << 24;
 uint8_t G = rgbPixel << 16;
 uint8_t B = rgbPixel << 8;

 YUVfromRGB(Y, U, V, (double)R, (double)G, (double)B);
 frame->data[0][imageIndexY] = (uint8_t)Y;

 if (y % 2 == 0 && x % 2 == 0)
 {
 int imageIndexU = (y / 2) * frame->linesize[1] + (x / 2);
 int imageIndexV = (y / 2) * frame->linesize[2] + (x / 2);

 frame->data[1][imageIndexU] = (uint8_t)U;
 frame->data[2][imageIndexV] = (uint8_t)Y;
 }
 }
 }

 frame->pts = i;

 /* encode the image */
 encode(c, frame, pkt, f);

#ifdef MEASURE_TIME
 auto end_time = std::chrono::high_resolution_clock::now();
 auto time = end_time - start_time;
 std::cout << "FINISHED Encoding frame in: " << time / std::chrono::milliseconds(1) << "ms.\n";

#endif
 }



Here are some important parts of the previous parts of that function :


codec_name = "mpeg4";

codec = avcodec_find_encoder_by_name(codec_name);

c = avcodec_alloc_context3(codec);
 
c->bit_rate = 1000000; 
c->width = IMAGE_WIDTH;
c->height = IMAGE_HEIGHT;
c->gop_size = 1;
c->max_b_frames = 1;
c->pix_fmt = AV_PIX_FMT_YUV420P; 



IMAGE_WIDTH and IMAGE_HEIGHT are 1024 and 2048 corresponding.


The result I have ran on Raspberry Pi 4 look like this :


START Encoding frame...
Send frame 0
FINISHED Encoding frame in: 40ms.
START Encoding frame...
Send frame 1
Write packet 0 (size=11329)
FINISHED Encoding frame in: 60ms.
START Encoding frame...
Send frame 2
Write packet 1 (size=11329)
FINISHED Encoding frame in: 58ms.



Since I am completely green in encoding and using codecs, my question will be how to do it the best way and correct way, meaning the way which would reduce timing to few ms, and I am not sure the codec was chosen the best for the job, or the pixel format.


The rest of the meaningful code you can see here (the encode() function you can find in the ffmpeg developer example I gave link to above) :


void RGBfromYUV(double& R, double& G, double& B, double Y, double U, double V)
{
 Y -= 16;
 U -= 128;
 V -= 128;
 R = 1.164 * Y + 1.596 * V;
 G = 1.164 * Y - 0.392 * U - 0.813 * V;
 B = 1.164 * Y + 2.017 * U;
}