
Recherche avancée
Médias (1)
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (33)
-
Librairies et logiciels spécifiques aux médias
10 décembre 2010, parPour un fonctionnement correct et optimal, plusieurs choses sont à prendre en considération.
Il est important, après avoir installé apache2, mysql et php5, d’installer d’autres logiciels nécessaires dont les installations sont décrites dans les liens afférants. Un ensemble de librairies multimedias (x264, libtheora, libvpx) utilisées pour l’encodage et le décodage des vidéos et sons afin de supporter le plus grand nombre de fichiers possibles. Cf. : ce tutoriel ; FFMpeg avec le maximum de décodeurs et (...) -
L’agrémenter visuellement
10 avril 2011MediaSPIP est basé sur un système de thèmes et de squelettes. Les squelettes définissent le placement des informations dans la page, définissant un usage spécifique de la plateforme, et les thèmes l’habillage graphique général.
Chacun peut proposer un nouveau thème graphique ou un squelette et le mettre à disposition de la communauté. -
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...)
Sur d’autres sites (5907)
-
FFmpeg side by side video (widescreen) and play each video one by one
6 mai 2020, par Knidenew to ffmpeg, I've already did this to combine 3 or more videos that I have into 1 video :



ffmpeg -i left.mp4 -i center.mp4 -i right.mp4 -filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" -c:v libx264 -tune film -crf 16 -b:a 256k output.mp4




Now what I am having trouble with is the videos have different play times (in seconds) what I want to achieve is have them all side by side (working with the code above) then have left.mp4 play first (with it's own audio) once done, center.mp4 plays (has own audio), and when done too, right.mp4 plays (has own audio) as well and the video is over.



Can someone enlighten me on how to achieve this ? Thank you !


-
avcodec/av1_metadata : filter parameter sets in packet side data
22 avril 2020, par James Almeravcodec/av1_metadata : filter parameter sets in packet side data
Extradata included in packet side data is meant to replace the codec context
extradata. So when muxing for example to MP4 without this change and if
extradata is present in a packet side data, the result will be that the
parameter sets present in keyframes will be filtered, but the parameter sets
ultimately included in the av1C box will not.This is especially important for AV1 as both currently supported encoders don't
export the Sequence Header in the codec context extradata, but as packet side
data instead.Signed-off-by : James Almer <jamrial@gmail.com>
-
Convert file from mkv to mp4 without saving it server-side using fluent-ffmpeg in nodejs
25 avril 2020, par SchererWhat I am trying to do is create a node application that receives a mkv file, converts it to mp4, hardburning the subtitles, and sends it back so the user can download it. In the command line this works perfectly



ffmpeg -i input.mkv -threads 1 -vf subtitles=input.mkv -acodec copy output.mp4



Then, I tried to translate this into a node route using fluent-ffmpeg



var ffmpeg = require('fluent-ffmpeg');

routes.post('/process', (req, res) => {
 //file sent
 const file = req.files.file
 const path = __dirname + '/public/data/'

 //saves file in server
 file.mv(path + file.name, err => {
 if (err) return res.sendStatus(500).send(err)
 console.log('upload successful')
 })

 //convert the file to mp4 with the hardburned subtitle
 ffmpeg(path + file.name).toFormat('mp4')
 .addOutputOption(["-threads 1"])
 .addOutputOption(["-acodec copy"])
 .addOutputOption(['-vf subtitles=' + path + file.name])
 .on('end', () => {
 console.log('done')
 res.sendStatus(200)
 })
 .on('error', console.log)
 .saveToFile(path + 'output.mp4') //saves file in server
})




This is the HTML I am testing






 
 
 


 <form method="'post'" action="/process" enctype="multipart/form-data">
 <input type="'file'" />
 <input type="'submit'" value="'send'" />
 </form>






Unfortunately, this didn't work and the code returned the following error message



Error: ffmpeg exited with code 1: Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!

 at ChildProcess.<anonymous> (C:\Users\fsvic\Desktop\ffmpeg_teste_node\node_modules\fluent-ffmpeg\lib\processor.js:182:22)
 at ChildProcess.emit (events.js:182:13)
 at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) '' 'ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers\n built with gcc 9.1.1 (GCC) 20190807\n configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt\n libavutil 56. 31.100 / 56. 31.100\n libavcodec 58. 54.100 / 58. 54.100\n libavformat 58. 29.100 / 58. 29.100\n libavdevice 58. 8.100 / 58. 8.100\n libavfilter 7. 57.100 / 7. 57.100\n libswscale 5. 5.100 / 5. 5.100\n libswresample 3. 5.100 / 3. 5.100\n libpostproc 55. 5.100 / 55. 5.100\nInput #0, matroska,webm, from \'C:\\Users\\fsvic\\Desktop\\ffmpeg_teste_node/public/data/star_trails.mkv\':\n Metadata:\n COMPATIBLE_BRANDS: mp42mp41\n MAJOR_BRAND : mp42\n MINOR_VERSION : 0\n ENCODER : Lavf57.66.105\n Duration: 00:00:21.25, start: 0.000000, bitrate: 1893 kb/s\n Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)\n Metadata:\n HANDLER_NAME : ?Mainconcept Video Media Handler\n ENCODER : Lavc57.83.101 libx264\n DURATION : 00:00:21.163000000\n Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)\n Metadata:\n HANDLER_NAME : #Mainconcept MP4 Sound Media Handler\n ENCODER : Lavc57.83.101 libvorbis\n DURATION : 00:00:21.251000000\nStream mapping:\n Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))\n Stream #0:1 -> #0:1 (copy)\nPress [q] to stop, [?] for help\n[subtitles @ 000001cc091dbb80] Unable to parse option value "UsersfsvicDesktopffmpeg_teste_node/public/data/star_trails.mkv" as image size\n Last message repeated 1 times\n[subtitles @ 000001cc091dbb80] Error setting option original_size to value UsersfsvicDesktopffmpeg_teste_node/public/data/star_trails.mkv.\n[Parsed_subtitles_0 @ 000001cc0910a8c0] Error applying options to the filter.\n[AVFilterGraph @ 000001cc0912ba80] Error initializing filter \'subtitles\' with args \'C:UsersfsvicDesktopffmpeg_teste_node/public/data/star_trails.mkv\'\nError reinitializing filters!\nFailed to inject frame into filter network: Invalid argument\nError while processing the decoded data for stream #0:0\nConversion failed!\n'
</anonymous>



Besides that, I cannot save anything in the server side due to memory limitations, so I need a way to use the FFmpeg commands without an actual file in the folder. I discovered that the pipe feature might do the job, but I have no idea on how I could implement it in the current code.