
Recherche avancée
Médias (3)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
Autres articles (70)
-
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)
Sur d’autres sites (8148)
-
Index Out Of Bounds Exception when merging frames
25 avril 2016, par ElucidatorI’m writing software to convert 6 cubemap videos to 1 equirectangular video. Basically, it extracts frames from the 6 cubemap videos with ffmpeg, uses Nona to stitch them into a single frame, and converts the frames back into video.
I’m getting an IndexOutOfBounds exception when I try to run this. Can you give me any pointers on where my error could be or how to fix it ?
framecount = Directory.GetFiles(@System.IO.Path.GetDirectoryName(Application.ExecutablePath)).Count(path => Regex.IsMatch(path, @"front\d*[.]jpg"));
for (int i = 1; i < framecount; i++)
{
MergeFrames(i.ToString().PadLeft(5, '0'), i.ToString());
}
public void MergeFrames(string framenum, string exportname){
this.Text = "Merging frame: " + Int32.Parse(framenum) + "/" + framecount;
progressBar1.Value = ((Int32.Parse(framenum) / framecount) * 100);
var lines = File.ReadAllLines(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "script.pto");
lines[13] = "i f0 y0 p-90 r0 v90 n\"" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "down" + framenum + ".jpg\"";
lines[14] = "i f0 y0 p0 r0 v90 n\"" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "front" + framenum + ".jpg\"";
lines[15] = "i f0 y90 p0 r0 v90 n\"" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "right" + framenum + ".jpg\"";
lines[16] = "i f0 y180 p0 r0 v90 n\"" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "back" + framenum + ".jpg\"";
lines[17] = "i y-90 p0 r0 v90 n\"" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "left" + framenum + ".jpg\"";
lines[18] = "i f0 y0 p90 r0 v90 n\"" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "top" + framenum + ".jpg\"";
File.WriteAllLines(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "script.pto", lines);
String command = "script.pto -o " + exportname + ".png -v";
ProcessStartInfo cmdsi = new ProcessStartInfo("nona.exe");
cmdsi.Arguments = command;
Process cmd = Process.Start(cmdsi);
cmd.WaitForExit();
File.Delete(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "down" + framenum + ".jpg");
File.Delete(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "front" + framenum + ".jpg");
File.Delete(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "right" + framenum + ".jpg");
File.Delete(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "back" + framenum + ".jpg");
File.Delete(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "left" + framenum + ".jpg");
File.Delete(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + "top" + framenum + ".jpg");
} -
How to setup a video chunker or FFMPEG to bypass Cloudflare ?
20 avril 2021, par RustyGatesIn full transparency, I am a noob so please forgive my lack of appropriate lingo as I am just barely starting to learn the languages of web development. Hope you don't have to try and decipher too much of what I'm trying to say.


So in an attempt to put this as simply as possible.


I have a PHP Script CMS that I have been doing some extensive custom work to. As mentioned, I am still learning for the most part and while my front end skills are getting very well polished, I'm still completely lose mostly when it comes to back end endeavors. And for reference, the CMS I am using is Wowonder from Codecanyon. It's essentially just a social media cms, like Facebook.


I have this installed on my own dedicated server, have WHM/Cpanel, all that good stuff. I also have my website/domain setup through Cloudflare properly. This is where the issue arises. Cloudflare limits uploads to 100 megabytes. Some of the users on my website will be uploading videos and media much bigger than 100 megabytes. (Up to 10 gigabytes in some cases). I have researched the issue long and hard and it would seem to me the obvious was to resolve the problem would be to use a video chunker (and/or something like FFMPEG ? But not sure if FFMPEG Is capable of it. Am just assuming).


I understand the basic, general idea of what chunkers do and have found some seemingly good options. Will post a couple below just as an example but not necessarily options I was considering.


[https://github.com/blueimp/jQuery-File-Upload][1]


[https://github.com/c0decracker/video-splitter][2]


[https://github.com/appijumbo/video-chunk][3]


So again, I understand the basic idea, it would chunk up the video while uploading (somewhere beneath the 100 megabyte maximum) to bypass Cloudflare's limit, and then stitch the video back together so it's in it's in it's complete form again. However, with a website that has many users uploading, I have not the slightest idea what the best solution is, or if this is the best solution at all, and if it is, how to implement it properly.


I have also installed FFMPEG on my server and did so successfully but not sure how to implement that properly either now how to tell it that it should automatically encode any videos uploaded to the website by any users and so on, nor sure if it's possible to do chunking with it although it seemingly is ?


Any advice is on the topic is much appreciated and I would be much obliged. Thanks in advance.


-
Why doesn't the ffmpeg output display the stream in the browser ? [closed]
10 mai 2024, par TebyyWhy is it that when I create a livestream in Python using ffmpeg, and then I open the browser and visit the page, the page keeps loading continuously, and in PyCharm logs, I see binary data ? There are no errors displayed, and the code seems correct to me. I even tried saving to a file for testing purposes, and when I play the video, everything works fine. Does anyone know what might be wrong here ?


Code :


def generate_frames():
 cap = cv2.VideoCapture(os.path.normpath(app_root_dir().joinpath("data/temp", "video-979257305707693982.mp4")))
 while cap.isOpened():
 ret, frame = cap.read()
 if not ret:
 break

 yield frame


@app.route('/video_feed')
def video_feed():
 ffmpeg_command = [
 'ffmpeg', '-f', 'rawvideo', '-pix_fmt', 'bgr24',
 '-s:v', '1920x1080', '-r', '60',
 '-i', '-', '-vf', 'setpts=2.5*PTS', # Video Speed
 '-c:v', 'libvpx-vp9', '-g', '60', '-keyint_min', '60',
 '-b:v', '6M', '-minrate', '4M', '-maxrate', '12M', '-bufsize', '8M',
 '-crf', '0', '-deadline', 'realtime', '-tune', 'psnr', '-quality', 'good',
 '-tile-columns', '6', '-threads', '8', '-lag-in-frames', '16',
 '-f', 'webm', '-'
 ]
 ffmpeg_process = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=-1)
 frames_generator = generate_frames()
 for frame in frames_generator:
 ffmpeg_process.stdin.write(frame)
 ffmpeg_process.stdin.flush()

 ffmpeg_process.stdin.close()
 ffmpeg_process.wait()

 def generate_video_stream(process):
 startTime = time.time()
 buffer = []
 sentBurst = False
 for chunk in iter(lambda: process.stderr.read(4096), b''):
 buffer.append(chunk)

 # Minimum buffer time, 3 seconds
 if sentBurst is False and time.time() > startTime + 3 and len(buffer) > 0:
 sentBurst = True
 for i in range(0, len(buffer) - 2):
 print("Send initial burst #", i)
 yield buffer.pop(0)

 elif time.time() > startTime + 3 and len(buffer) > 0:
 yield buffer.pop(0)

 process.poll()
 if isinstance(process.returncode, int):
 if process.returncode > 0:
 print('FFmpeg Error', process.returncode)

 break

 return Response(stream_with_context(generate_video_stream(ffmpeg_process)), mimetype='video/webm', content_type="video/webm; codecs=vp9", headers=Headers([("Connection", "close")]))