
Recherche avancée
Autres articles (63)
-
Les vidéos
21 avril 2011, parComme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...) -
(Dés)Activation de fonctionnalités (plugins)
18 février 2011, parPour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...) -
Activation de l’inscription des visiteurs
12 avril 2011, parIl est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...)
Sur d’autres sites (10592)
-
FFMPEG is not working in app service post deployment
1er mars 2024, par Tushar GuptaI using the Xabe.FFmpeg package to generate clips from a video. The code is basically converting a video to multiple clips and it's working fine in my local but whenever I am uploading the code to app service the code is not working.


Stack : .net
App Service OS : Windows


Error :


2024-02-13 08:57:34.092 +00:00 [Error] Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer : Connection ID "16573246629528734243", Request ID "40000a24-0000-e600-b63f-84710c7967bb" : An unhandled exception was thrown by the application.System.ComponentModel.Win32Exception (193) : An error occurred trying to start process 'C :\home\site\wwwroot\Controllers\ffmpeg\bin\ffmpeg.exe' with working directory 'C :\home\site\wwwroot'. The specified executable is not a valid application for this OS platform.at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)at System.Diagnostics.Process.Start()at Xabe.FFmpeg.FFmpeg.RunProcess(String args, String processPath, Nullable
1 priority, Boolean standardInput, Boolean standardOutput, Boolean standardError)at Xabe.FFmpeg.FFmpegWrapper.<>c__DisplayClass14_0.<runprocess>b__0()at System.Threading.Tasks.Task</runprocess>
1.InnerInvoke()at System.Threading.Tasks.Task.<>c.<.cctor>b__281_0(Object obj)at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)--- End of stack trace from previous location ---at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)--- End of stack trace from previous location ---at Xabe.FFmpeg.Conversion.Start(String parameters, CancellationToken cancellationToken)at ExtractResponseAPI.Controllers.HomeController.PrepareVideoClips(CloudBlockBlob sourceVideoBlob, TimeSpan startTime, TimeSpan endTime) in C :\Users\tushar.h.gupta\source\repos\ExtractResponseAPI\Controllers\HomeController.cs:line 164at ExtractResponseAPI.Controllers.HomeController.GetIntervalsAsync(String query) in C :\Users\tushar.h.gupta\source\repos\ExtractResponseAPI\Controllers\HomeController.cs:line 60at ExtractResponseAPI.Controllers.HomeController.Get(String query) in C :\Users\tushar.h.gupta\source\repos\ExtractResponseAPI\Controllers\HomeController.cs:line 24at lambda_method4(Closure, Object)at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<invokenextactionfilterasync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<invokeinnerfilterasync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<invokefilterpipelineasync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<invokeasync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<invokeasync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT</invokeasync></invokeasync></invokefilterpipelineasync></invokeinnerfilterasync></invokenextactionfilterasync>
1.ProcessRequestAsync()

Code :


private async Task> PrepareVideoClips(CloudBlockBlob sourceVideoBlob, TimeSpan startTime, TimeSpan endTime)
{
 string tempDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

 // Create a temporary directory to store clips locally
 Directory.CreateDirectory(tempDirectory);

 // Download the source video
 string sourceVideoPath = Path.Combine(tempDirectory, "sourceVideo.mp4");
 await sourceVideoBlob.DownloadToFileAsync(sourceVideoPath, FileMode.Create);
 FFmpeg.SetExecutablesPath("Controllers\\ffmpeg\\bin\\");
 // Use FFmpegCore to trim the video
 string outputVideoPath = Path.Combine(tempDirectory, "output.mp4");

 await FFmpeg.Conversions.New()
 .AddParameter($"-ss {startTime.TotalSeconds}") // Start time
 .AddParameter($"-i {sourceVideoPath}")
 .AddParameter($"-to {(endTime - startTime).TotalSeconds}") // Duration
 .SetOutput(outputVideoPath)
 .Start();

 // Return a list of file paths for the clips
 return new List<string> { outputVideoPath };
}
</string>


I tried deploying the app service using different OS but still facing the same issue, I also tried using different packages but the result is same.


-
PyQt6 6.7.0 - How to fix error : No QtMultimedia backends found
4 février, par Belleroph0NProblem on Windows 10 and Windows 11 using Anaconda.


Here is the full error message for PyQt6=6.7.0 :


No QtMultimedia backends found. Only QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink, and QAudioSource are available.
Failed to initialize QMediaPlayer "Not available"
Failed to create QVideoSink "Not available"



Installed PyQt6 using a requirements file :


PyQt6
PyQt6-WebEngine
requests
pyserial
pynput



Here are a couple things I tried :


- 

- Reroll version back to PyQt6=6.6.1. This results in an error as well : ImportError : DLL load failed while importing QtGui : The specified procedure could not be found.
- I thought that missing ffmpeg might be the issue so I installed it, but the issue persists.
- Tried the setup on Ubuntu (WSL2) and the issue disappears, but there is just a black screen and nothing gets displayed in the widget. (EDIT : Got this up and running, the problem was with differences in file paths in linux vs windows.)








I am new to PyQt so any pointers will be helpful !


Edit : Here is generic code (taken from here) that gives the same error :


from PyQt6.QtGui import QIcon, QFont
from PyQt6.QtCore import QDir, Qt, QUrl, QSize
from PyQt6.QtMultimedia import QMediaPlayer
from PyQt6.QtMultimediaWidgets import QVideoWidget
from PyQt6.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel, QStyleFactory,
 QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget, QStatusBar)


class VideoPlayer(QWidget):

 def __init__(self, parent=None):
 super(VideoPlayer, self).__init__(parent)

 self.mediaPlayer = QMediaPlayer()

 btnSize = QSize(16, 16)
 videoWidget = QVideoWidget()

 openButton = QPushButton("Open Video") 
 openButton.setToolTip("Open Video File")
 openButton.setStatusTip("Open Video File")
 openButton.setFixedHeight(24)
 openButton.setIconSize(btnSize)
 openButton.setFont(QFont("Noto Sans", 8))
 openButton.setIcon(QIcon.fromTheme("document-open", QIcon("D:/_Qt/img/open.png")))
 openButton.clicked.connect(self.abrir)

 self.playButton = QPushButton()
 self.playButton.setEnabled(False)
 self.playButton.setFixedHeight(24)
 self.playButton.setIconSize(btnSize)
 self.playButton.setIcon(self.style().standardIcon(QStyle.StandardPixmap.SP_MediaPlay))
 self.playButton.clicked.connect(self.play)

 self.positionSlider = QSlider(Qt.Orientation.Horizontal)
 self.positionSlider.setRange(0, 0)
 self.positionSlider.sliderMoved.connect(self.setPosition)

 self.statusBar = QStatusBar()
 self.statusBar.setFont(QFont("Noto Sans", 7))
 self.statusBar.setFixedHeight(14)

 controlLayout = QHBoxLayout()
 controlLayout.setContentsMargins(0, 0, 0, 0)
 controlLayout.addWidget(openButton)
 controlLayout.addWidget(self.playButton)
 controlLayout.addWidget(self.positionSlider)

 layout = QVBoxLayout()
 layout.addWidget(videoWidget)
 layout.addLayout(controlLayout)
 layout.addWidget(self.statusBar)

 self.setLayout(layout)

 #help(self.mediaPlayer)
 self.mediaPlayer.setVideoOutput(videoWidget)
 self.mediaPlayer.playbackStateChanged.connect(self.mediaStateChanged)
 self.mediaPlayer.positionChanged.connect(self.positionChanged)
 self.mediaPlayer.durationChanged.connect(self.durationChanged)
 self.mediaPlayer.errorChanged.connect(self.handleError)
 self.statusBar.showMessage("Ready")

 def abrir(self):
 fileName, _ = QFileDialog.getOpenFileName(self, "Select Media",
 ".", "Video Files (*.mp4 *.flv *.ts *.mts *.avi)")

 if fileName != '':
 self.mediaPlayer.setSource(QUrl.fromLocalFile(fileName))
 self.playButton.setEnabled(True)
 self.statusBar.showMessage(fileName)
 self.play()

 def play(self):
 if self.mediaPlayer.playbackState() == QMediaPlayer.PlaybackState.PlayingState:
 self.mediaPlayer.pause()
 else:
 self.mediaPlayer.play()

 def mediaStateChanged(self, state):
 if self.mediaPlayer.playbackState() == QMediaPlayer.PlaybackState.PlayingState:
 self.playButton.setIcon(
 self.style().standardIcon(QStyle.StandardPixmap.SP_MediaPause))
 else:
 self.playButton.setIcon(
 self.style().standardIcon(QStyle.StandardPixmap.SP_MediaPlay))

 def positionChanged(self, position):
 self.positionSlider.setValue(position)

 def durationChanged(self, duration):
 self.positionSlider.setRange(0, duration)

 def setPosition(self, position):
 self.mediaPlayer.setPosition(position)

 def handleError(self):
 self.playButton.setEnabled(False)
 self.statusBar.showMessage("Error: " + self.mediaPlayer.errorString())

if __name__ == '__main__':
 import sys
 app = QApplication(sys.argv)
 player = VideoPlayer()
 player.setWindowTitle("Player")
 player.resize(900, 600)
 player.show()
 sys.exit(app.exec())



The videos I want to play are in the same folder as this .py file.
The conda env (python 3.9.2) I am working on has the following packages :


certifi 2024.6.2
charset-normalizer 3.3.2
idna 3.7
pip 24.0
pynput 1.7.6
PyQt6 6.7.0
PyQt6-Qt6 6.7.1
PyQt6-sip 13.6.0
PyQt6-WebEngine 6.7.0
PyQt6-WebEngine-Qt6 6.7.1
PyQt6-WebEngineSubwheel-Qt6 6.7.1
pyserial 3.5
requests 2.31.0
setuptools 69.5.1
six 1.16.0
urllib3 2.2.1
wheel 0.43.0



PS : MacOS seems to have the same issue.


-
Index error with moviepy when running on aws
29 avril 2024, par Hardik PatelI am getting this error :
"MoviePy error : failed to read the duration of file %s.\n"
OSError : MoviePy error : failed to read the duration of file https://delivery.gettyimages.com/downloads/1490392845?k=20&e=AnE-X_nyTRBG5QvUm1OnnCZEOURkdWAdDeQJTmDW8Eo41FL7u_ROCopEha5N-Kwh-fxBr44QIe5s2vzAUchlcVs91TwSlJTMOKWYSTraamKCPRcJv19CqNZRB_FgLaW_.


The funny thing is that for the same line of code :


video_duration = VideoFileClip(getty_url).duration



when running on my mac, it is running fine. However when running from an aws server I am getting this error :


[2024-04-29 05:55:42,126: ERROR/ForkPoolWorker-1] Task scripttovideoapp.create_video[18288b91-d304-400a-97a9-285fac776f85] raised unexpected: OSError('MoviePy error: failed to read the duration of file https://delivery.gettyimages.com/downloads/1490392845?k=20&e=AnE-X_nyTRBG5QvUm1OnnCZEOURkdWAdDeQJTmDW8Eo41FL7u_ROCopEha5N-Kwh-fxBr44QIe5s2vzAUchlcVs91TwSlJTMOKWYSTraamKCPRcJv19CqNZRB_FgLaW_.\nHere are the file infos returned by ffmpeg:\n\nffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers\n built with gcc 8 (Debian 8.3.0-6)\n configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg\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\n')
Traceback (most recent call last):
 File "/home/ec2-user/.local/lib/python3.9/site-packages/moviepy/video/io/ffmpeg_reader.py", line 285, in ffmpeg_parse_infos
 line = [l for l in lines if keyword in l][index]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "/home/ec2-user/.local/lib/python3.9/site-packages/celery/app/trace.py", line 477, in trace_task
 R = retval = fun(*args, **kwargs)
 File "/home/ec2-user/.local/lib/python3.9/site-packages/celery/app/trace.py", line 760, in __protected_call__
 return self.run(*args, **kwargs)
 File "/home/ec2-user/videoproj/scripttovideoapp.py", line 454, in create_video
 all_urls, video_details = process_script(script, paths, company_a, company_b, api_key)
 File "/home/ec2-user/videoproj/scripttovideoapp.py", line 232, in process_script
 video_duration = VideoFileClip(file).duration # This needs to be replaced with a proper duration if available
 File "/home/ec2-user/.local/lib/python3.9/site-packages/moviepy/video/io/VideoFileClip.py", line 88, in __init__
 self.reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt,
 File "/home/ec2-user/.local/lib/python3.9/site-packages/moviepy/video/io/ffmpeg_reader.py", line 35, in __init__
 infos = ffmpeg_parse_infos(filename, print_infos, check_duration,
 File "/home/ec2-user/.local/lib/python3.9/site-packages/moviepy/video/io/ffmpeg_reader.py", line 289, in ffmpeg_parse_infos
 raise IOError(("MoviePy error: failed to read the duration of file %s.\n"
OSError: MoviePy error: failed to read the duration of file https://delivery.gettyimages.com/downloads/1490392845?k=20&e=AnE-X_nyTRBG5QvUm1OnnCZEOURkdWAdDeQJTmDW8Eo41FL7u_ROCopEha5N-Kwh-fxBr44QIe5s2vzAUchlcVs91TwSlJTMOKWYSTraamKCPRcJv19CqNZRB_FgLaW_.
Here are the file infos returned by ffmpeg:

ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
 built with gcc 8 (Debian 8.3.0-6)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
 libavutil 56. 31.100 / 56. 31.100
 libavcodec 58. 54.100 / 58. 54.100
 libavformat 58. 29.100 / 58. 29.100
 libavdevice 58. 8.100 / 58. 8.100
 libavfilter 7. 57.100 / 7. 57.100
 libswscale 5. 5.100 / 5. 5.100
 libswresample 3. 5.100 / 3. 5.100
 libpostproc 55. 5.100 / 55. 5.100




I checked the version of my package on both mac and aws, the packages are the same. Went through different stackover flow solutions but non of them totally aligns with my issue.