
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (87)
-
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...) -
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.
Sur d’autres sites (11727)
-
Inconsistent crop and overflay ffmpeg result with drawImage canvas
21 juin 2022, par yuno sagai try to encode the video block frame to specific pattern order, then in front-end it decode back to normal. I test it in back-end by decode back with same function, it back to normal. but in front-end with canvas the order of block not in right position. if you look into front-end function. it have same pattern. i try to check output from
for
generate, it equal tofor
in backend overlay builder command.

whats wrong with this ?

ffmpeg config


const { spawn } = require('child_process');

function hflip(width) {
 const sizeBlock = 16;
 let filterCommands = '';
 const length = Math.floor(width / sizeBlock);

 for (let i=0; i < length; i++) { 
 filterCommands += `[0]crop=${sizeBlock}:480:${(i*sizeBlock)}:0[c${i}];`;
 }
 
 for (let i=0; i < length; i++) {
 if (i == 0) filterCommands += '[0]';
 if (i != 0) filterCommands += `[o${i}]`;
 
 filterCommands += `[c${i}]overlay=x=${(width - sizeBlock)-(i*sizeBlock)}:y=0`;
 
 if (i != (length - 1)) filterCommands += `[o${i+1}];`;
 }

 return filterCommands;
}

const crops = spawn('ffmpeg', [
 '-i',
 'C:/Software Development/project/blackpink.mp4',
 '-filter_complex',
 hflip(854),
 '-c:a',
 'copy',
 '-c:v',
 'libx264',
 '-crf',
 '30',
 '-preset',
 'ultrafast',
 '-pix_fmt',
 'yuv420p',
 'C:/Software Development/project/hflip.mp4',
 '-y'
], {
 cwd: 'C:/Software Development/ffmpeg'
})



front-end






 
 
 <button>play</button>
 <code class="echappe-js"><script>&#xA; const canvas = document.createElement(&#x27;canvas&#x27;);&#xA; document.body.appendChild(canvas)&#xA; const context = canvas.getContext(&#x27;2d&#x27;);&#xA; const video = document.createElement(&#x27;video&#x27;);&#xA; video.src = &#x27;https://drive.google.com/uc?export=download&amp;id=1Z0aFg_N3kP0SUO_xOFB0UBjTRH6_mSmb&amp;confirm=t&#x27;&#xA;&#xA;&#xA; function hflip(video) {&#xA; const widthBlock = 16;&#xA; const heightBlock = 480;&#xA; const length = Math.floor(video.videoWidth / widthBlock);&#xA;&#xA; for (let i=0; i < length; i&#x2B;&#x2B;) {&#xA; console.log({&#xA; cX: (i*widthBlock),&#xA; oX: (video.videoWidth - widthBlock) - (i*widthBlock)&#xA; });&#xA;&#xA; context.drawImage(video, (i*widthBlock), 0, widthBlock, heightBlock, (video.videoWidth - widthBlock) - (i*widthBlock), 0, widthBlock, heightBlock)&#xA; }&#xA; }&#xA;&#xA; video.onloadedmetadata = () => {&#xA; context.canvas.width = video.videoWidth;&#xA; context.canvas.height = video.videoHeight;&#xA; }&#xA;&#xA; video.onplay = () => {&#xA; const updateCanvas = () => {&#xA; hflip(video); &#xA;&#xA; video.requestVideoFrameCallback(updateCanvas);&#xA; }&#xA;&#xA; updateCanvas();&#xA; }&#xA;&#xA; function play() { video.play() }&#xA; </script>

 







-
Socket code Python code at the end influences code in the beginning
21 décembre 2019, par Samy SmartSo basically i am trying to do the following things : Client sends project file, Server receives Project file, Server generates Video file, Server sends video File, Client receives Video File. Everything works up until sending the Video back. The Thing is when i include my code for sending the Video, not even the Things that worked before work anymore.
The commented code in the code is the code that should send the Video backClient :
import socket
s = socket.socket()
ip = socket.gethostname()
file = "testae.aep"
s.connect((ip, 1234))
f = open(file, "rb")
txt = f.read(1024)
while txt:
s.send(txt)
print(f"Sending... {txt}")
txt = f.read(1024)
f.close()
#f2 = open("final_output.mp4", "wb")
#txt2 = s.recv(1024)
#while txt2:
# f2.write(txt2)
# txt2 = s.recv(1024)
#f2.close()
print("received final output")
s.close()Server :
import os
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1234))
counter = 0
s.listen(5)
aerpath = "C:/aerender.lnk"
ffmpegpath = '"C:/Program Files/ffmpeg/bin/ffmpeg.exe"'
while True:
c, addr = s.accept()
print("Client Connected")
print(addr)
f = open(f"ae_render_file{counter}.aep", "wb")
txt = c.recv(1024)
while txt:
f.write(txt)
print(f"Receiving... {txt}")
txt = c.recv(1024)
print("Out of WHILE")
f.close()
print("received file")
os.system(aerpath + " -project " + f"C:/Users/weilu/PycharmProjects/localAERF/ae_render_file{counter}.aep "
+ '-comp "Comp 1" ' + f"-output C:/Users/weilu/PycharmProjects/localAERF/output/output{counter}")
os.system(ffmpegpath + " -i " + f"output/output{counter}.avi -f mp4 -vcodec libx264 -preset slow -profile:v main "
f"-pix_fmt yuv420p -acodec aac -hide_banner output/outputr{counter}.mp4")
#f2 = open(f"output/outputr{counter}.mp4","rb")
#txt2 = f2.read(1024)
#while txt2:
# c.send(txt2)
# print("Sending...")
# txt2 = f.read(1024)
#f2.close()
c.close()
counter += 1 -
Ffmpeg encoding a video with time_base Not equal to framerate does not work hardware accelerated Video Player
10 janvier 2020, par Gilgamesh22I have a time_base of 90000 with a frame rate of 30. I can generate a h264 video and have it work in VLC but this video does not work in a hardware accelerated web chrome player using Intel HD Graphics 530. If I change the time_base to 30 It works fine.
Note : I am changing the frame->pts appropriately to match the time_base.
Note : Video does not have audio stream//header.h
AVCodecContext *cctx;
AVStream* stream;Here is the non working example code
//source.cpp
stream->time_base = { 1, 90000 };
stream->r_frame_rate = { fps, 1 };
stream->avg_frame_rate = { fps, 1 };
cctx->codec_id = codecId;
cctx->time_base = { 1 , 90000 };
cctx->framerate = { fps, 1 };
// ......
// add frame code later on timestamp are in millisecond
frame->pts = (timestamp - startTimeStamp)* 90;Here is the working example code
//source.cpp
stream->time_base = { 1, fps};
stream->r_frame_rate = { fps, 1 };
stream->avg_frame_rate = { fps, 1 };
cctx->codec_id = codecId;
cctx->time_base = { 1 , fps};
cctx->framerate = { fps, 1 };
// ......
// add frame code timestamp are in millisecond
frame->pts = (timestamp - startTimeStamp)/(1000/fps);Any ideas on why the second example works and the first does not in the video player.