
Recherche avancée
Autres articles (111)
-
L’utiliser, en parler, le critiquer
10 avril 2011La première attitude à adopter est d’en parler, soit directement avec les personnes impliquées dans son développement, soit autour de vous pour convaincre de nouvelles personnes à l’utiliser.
Plus la communauté sera nombreuse et plus les évolutions seront rapides ...
Une liste de discussion est disponible pour tout échange entre utilisateurs. -
Les statuts des instances de mutualisation
13 mars 2010, parPour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...) -
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 (7260)
-
ffmpeg extract frame and get timestamp based on creation time for each extracted frame in exif or txt
4 août 2021, par ScalingI try to extract frames from a underwater survey video using ffmpeg. the extracted frames should be merged with a gps position based on a timestamp later in the process. the code i use to extract the frames is :



ffmpeg -i GOPR0173.MP4 -qscale:v 2 -r 1 frames/%4d.jpg
.


I need a solution to get the real timestamp of the frame based on the survey datetime, so that the timestamp of the frame equals the real time when the video was created. Ideally the timestamp is saved in the images exif or if this is not possible in a seperate textfile and the timestamp is used as name of the files like 2020_01_01_HH_MM_SS.jpg.



My idea is to use the creation_time of the video add the timestamp of the frame to this and store the result in the exif of the extracted frame or if this is not possible in a txt file.



Im new to ffmpeg and really lost and would appreciate any help to solve this task !
If anyone could provide me the necessary code, that would be awesome !



C:\Unterwasserfotos>ffmpeg -i GOPR0173.MP4 -vstats -qscale:v 2 -r 0.1 frames/%4d.jpg
ffmpeg version git-2020-01-21-fc6fde2 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 9.2.1 (GCC) 20200122
 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls
 --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enabl
e-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-
libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwol
ame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enab
le-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-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enabl
e-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
 libavutil 56. 38.100 / 56. 38.100
 libavcodec 58. 66.100 / 58. 66.100
 libavformat 58. 35.104 / 58. 35.104
 libavdevice 58. 9.103 / 58. 9.103
 libavfilter 7. 71.100 / 7. 71.100
 libswscale 5. 6.100 / 5. 6.100
 libswresample 3. 6.100 / 3. 6.100
 libpostproc 55. 6.100 / 55. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GOPR0173.MP4':
 Metadata:
 major_brand : mp41
 minor_version : 538120216
 compatible_brands: mp41
 creation_time : 2020-01-21T12:33:10.000000Z
 firmware : HD4.02.05.00.00
 Duration: 00:02:21.85, start: 0.000000, bitrate: 30152 kb/s
 Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR
 1:1 DAR 16:9], 30000 kb/s, 50 fps, 50 tbr, 90k tbn, 100 tbc (default)
 Metadata:
 creation_time : 2020-01-21T12:33:10.000000Z
 handler_name : GoPro AVC
 encoder : GoPro AVC encoder
 timecode : 12:33:11:16
 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (defa
ult)
 Metadata:
 creation_time : 2020-01-21T12:33:10.000000Z
 handler_name : GoPro AAC
 timecode : 12:33:11:16
 Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
 Metadata:
 creation_time : 2020-01-21T12:33:10.000000Z
 handler_name : GoPro TCD
 timecode : 12:33:11:16
 Stream #0:3(eng): Data: none (fdsc / 0x63736466), 12 kb/s (default)
 Metadata:
 creation_time : 2020-01-21T12:33:10.000000Z
 handler_name : GoPro SOS
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'frames/%4d.jpg':
 Metadata:
 major_brand : mp41
 minor_version : 538120216
 compatible_brands: mp41
 firmware : HD4.02.05.00.00
 encoder : Lavf58.35.104
 Stream #0:0(eng): Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s,
 0.10 fps, 0.10 tbn, 0.10 tbc (default)
 Metadata:
 creation_time : 2020-01-21T12:33:10.000000Z
 handler_name : GoPro AVC
 timecode : 12:33:11:16
 encoder : Lavc58.66.100 mjpeg
 Side data:
 cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame= 16 fps=0.3 q=2.0 Lsize=N/A time=00:02:40.00 bitrate=N/A dup=0 drop=7076 speed=3.26x
video:1938kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown´´´










-
ffmpeg - problem in copying the stream with timed metadata during a split command
15 novembre 2020, par Swarna AnanthanI am facing a problem while copying mp4 along with the data stream in a split command.


ffmpeg -i 'testinput.mp4' -map 0 -copy_unknown -ss 12.800000 -t 14.549 -c copy testoutput.mp4



I am getting the below error.


Duration: 00:04:45.25, start: 0.000000, bitrate: 120 kb/s
    Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 116 kb/s (default)
    Metadata:
      creation_time   : 2020-05-26T20:58:03.000000Z
      handler_name    : WowzaStreamingEngine
    Stream #0:1(eng): Data: none (amf0 / 0x30666D61), 1 kb/s (default)
    Metadata:
      creation_time   : 2020-05-26T20:58:03.000000Z
      handler_name    : WowzaStreamingEngine

File 'testoutput.mp4' already exists. Overwrite? [y/N] y

[mp4 @ 0x7fe8b0808800] Could not find tag for codec none in stream #1, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
  
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Last message repeated 1 time



Stream#1 is datastream in my case.


-
xabe.ffmpeg not working in azure app service
28 décembre 2020, par Sripathi RajaI have a .net core application which generates video thumbnails for uploaded videos. I am using xabe.ffmpeg for this . The code runs fine in the local system and Iam able to generate the thumbnails . I have containerized this application and pushed it to azure app service . But when the code is deployed on azure app service its throws an error . I have placed the ffmpeg.exe ,ffprobe.exe , ffplay.exe inside a folder ffmpeg in wwwroot folder .
the app service logs give this error


the first line is the path : /app/wwwroot/ffmpeg


2020-12-25T14:34:01.347103909Z /app/wwwroot/ffmpeg
2020-12-25T14:34:01.443016709Z [41m[30mfail[39m[22m[49m : Microsoft.AspNetCore.Server.Kestrel[13]
2020-12-25T14:34:01.443066009Z Connection id "0HM58S8AE014U", Request id "0HM58S8AE014U:00000002" : An unhandled exception was thrown by the application.
2020-12-25T14:34:01.456821709Z System.ComponentModel.Win32Exception (2) : No such file or directory
2020-12-25T14:34:01.462537109Z at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
2020-12-25T14:34:01.462555709Z at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
2020-12-25T14:34:01.462560609Z at System.Diagnostics.Process.Start()
2020-12-25T14:34:01.463739309Z at Xabe.FFmpeg.FFmpeg.RunProcess(String args, String processPath, Nullable
1 priority, Boolean standardInput, Boolean standardOutput, Boolean standardError) 2020-12-25T14:34:01.463755809Z at Xabe.FFmpeg.FFprobeWrapper.<>c__DisplayClass9_0.<runprocess>b__0() 2020-12-25T14:34:01.463761809Z at System.Threading.Tasks.Task</runprocess>
1.InnerInvoke()
2020-12-25T14:34:01.463766309Z at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
2020-12-25T14:34:01.463781109Z at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
2020-12-25T14:34:01.463786509Z --- End of stack trace from previous location where exception was thrown ---
2020-12-25T14:34:01.463790909Z at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
2020-12-25T14:34:01.463795509Z at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
2020-12-25T14:34:01.463800009Z --- End of stack trace from previous location where exception was thrown ---
2020-12-25T14:34:01.463813709Z at Xabe.FFmpeg.FFprobeWrapper.RunProcess(String args, CancellationToken cancellationToken)
2020-12-25T14:34:01.463818109Z at Xabe.FFmpeg.FFprobeWrapper.GetStreams(String videoPath, CancellationToken cancellationToken)
2020-12-25T14:34:01.463821909Z at Xabe.FFmpeg.FFprobeWrapper.SetProperties(MediaInfo mediaInfo, CancellationToken cancellationToken)
2020-12-25T14:34:01.463825509Z at Xabe.FFmpeg.MediaInfo.Get(String filePath, CancellationToken cancellationToken)
2020-12-25T14:34:01.463829109Z at Xabe.FFmpeg.MediaInfo.Get(String filePath)
2020-12-25T14:34:01.463832609Z at Xabe.FFmpeg.FFmpeg.GetMediaInfo(String fileName)
2020-12-25T14:34:01.467009509Z at root2webAPI.Controllers.AzureStorageControllers.BlobExplorerController.GetVideoThumbnailAsync(IFormFile file, Int32 frameTarget) in /src/root2webAPI/Controllers/AzureStorageControllers/BlobExplorerController.cs:line 271
2020-12-25T14:34:01.467023809Z at root2webAPI.Controllers.AzureStorageControllers.BlobExplorerController.UploadMediaBlob(IFormFile file, String parentId) in /src/root2webAPI/Controllers/AzureStorageControllers/BlobExplorerController.cs:line 96
2020-12-25T14:34:01.467028709Z at lambda_method(Closure , Object )
2020-12-25T14:34:01.467032109Z at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
2020-12-25T14:34:01.467035909Z at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
2020-12-25T14:34:01.467039409Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
2020-12-25T14:34:01.467043209Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2020-12-25T14:34:01.467055709Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
2020-12-25T14:34:01.467060609Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
2020-12-25T14:34:01.467067409Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2020-12-25T14:34:01.467071609Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2020-12-25T14:34:01.467075209Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
2020-12-25T14:34:01.467078709Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
2020-12-25T14:34:01.467089009Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2020-12-25T14:34:01.467093409Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
2020-12-25T14:34:01.467096909Z at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
2020-12-25T14:34:01.467100509Z at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
2020-12-25T14:34:01.467103809Z at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext]

here is my relevant .net application code


private async Task<mediametadata> GetVideoThumbnailAsync(IFormFile file,int frameTarget)
 {
 var fileName = file.FileName;
 var filePath = Path.Combine(_rootPath, "videos", fileName);
 var fileExtension = Path.GetExtension(filePath);
 
 // the xabe wrapper works with only mp4 extension to create thumbnail , if the file is any other format first convert it to
 //the mp4 format and then goahead with creating the thumbnail. 
 var thumbnailImageName = fileName.Replace(fileExtension, ".jpg");
 var thumbnailImagePath = Path.Combine(_rootPath, "thumbnails", thumbnailImageName);
 
 using (Stream fileStream = new FileStream(filePath, FileMode.Create)) {
 
 await file.CopyToAsync(fileStream);
 }
 Console.WriteLine(Path.Combine(_rootPath,"ffmpeg"));
 FFmpeg.SetExecutablesPath(Path.Combine(_rootPath,"ffmpeg"));
 IMediaInfo mediaInfo = await FFmpeg.GetMediaInfo(filePath);
 var videoDuration = mediaInfo.VideoStreams.First().Duration;
 IConversion conversion = await FFmpeg.Conversions.FromSnippet.Snapshot(filePath, thumbnailImagePath , TimeSpan.FromSeconds(frameTarget));
 IConversionResult result = await conversion.Start();
 MediaMetadata media = new MediaMetadata();
 media.DurationSeconds=Convert.ToInt32(videoDuration.TotalMilliseconds);
 // media.DurationSeconds=10;
 media.ThumbnailImagePath= thumbnailImagePath;
 return media;
 
 }
</mediametadata>


could you help me out with this ..many thanks