
Recherche avancée
Médias (91)
-
Valkaama DVD Cover Outside
4 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
Valkaama DVD Label
4 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Image
-
Valkaama DVD Cover Inside
4 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
1,000,000
27 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Demon Seed
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Four of Us are Dying
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (8)
-
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. -
Participer à sa documentation
10 avril 2011La documentation est un des travaux les plus importants et les plus contraignants lors de la réalisation d’un outil technique.
Tout apport extérieur à ce sujet est primordial : la critique de l’existant ; la participation à la rédaction d’articles orientés : utilisateur (administrateur de MediaSPIP ou simplement producteur de contenu) ; développeur ; la création de screencasts d’explication ; la traduction de la documentation dans une nouvelle langue ;
Pour ce faire, vous pouvez vous inscrire sur (...) -
Déploiements possibles
31 janvier 2010, parDeux types de déploiements sont envisageable dépendant de deux aspects : La méthode d’installation envisagée (en standalone ou en ferme) ; Le nombre d’encodages journaliers et la fréquentation envisagés ;
L’encodage de vidéos est un processus lourd consommant énormément de ressources système (CPU et RAM), il est nécessaire de prendre tout cela en considération. Ce système n’est donc possible que sur un ou plusieurs serveurs dédiés.
Version mono serveur
La version mono serveur consiste à n’utiliser qu’une (...)
Sur d’autres sites (2853)
-
While ffmpeg convers via php website doesnt work
29 octobre 2013, par Xenos TrojanowiczSo im using
if ($success_msg)
{
$tmp_parts = explode('.', $file['name']);
$ext = array_pop($tmp_parts);
$ext = strtolower($ext);
if($ext == "avi" && $convert_avi == true)
{
$convert_source = _VIDEOS_DIR_PATH.$new_name;
$conv_name = substr(md5($file['name'].rand(1,888)), 2, 10).".mp4";
$converted_file = _VIDEOS_DIR_PATH.$conv_name;
$ffmpeg_command = 'ffmpeg -i '.$convert_source.'-acodec libfaac -vcodec libx264 -s 1280x720 -ar 44100 -async 44100 -r 29.970 -ac 2 -qscale 5 '.$converted_file;
echo exec($ffmpeg_command);
$sql = "UPDATE pm_temp SET url = '".$conv_name."' WHERE url = '".$new_name."' LIMIT 1";
$result = @mysql_query($sql);
unlink($convert_source);
}
echo $success_msg;
}This code to convert videos from avi to mp4 but i have another big issue when i upload big file let say 170 mb it converts about 25 minutes or so and while it converts website doesnt work for me.
NOW I KNOW WHY WEBSITE DOESNT WORK :
- its only for me becose system doesnt open extra slot to enter to website while it converts
- i know how to solve this problem with cronjob but im afraid that if something goes wrong it will be biggest fail i ever had
so im hopping that u guys will suggest something smart and easy to deal with this issue
-
{OpenAL(+FFmpeg)} How to queue variable size buffer due to ogg format ?
11 février 2014, par user3293833(First of all, I may feel sorry about my poor English as it's not my native language.)
I use FFmpeg to decode some audio file and play it with OpenAL by "stream"(i.e."queue" and "unqueue" function of OpenAL).
When I use my program to play .ogg file, I find that it has a variable nb_samples.(due to ogg has variable bit rate ??) There are 128 B, 512 B and 1024 B of nb_samples. As a results, I must call alDeleteBuffers and alGenBuffers before I use alBufferSamplesSOFT(similar to alBufferData) because it would fail to call alBufferSamplesSOFT without recreate the buffer.
Notes : alBufferSamplesSOFT is provided by OpenAL Soft. You can just see it as alBufferData.Nevertheless, I think it's foolish and inefficient if I do this. Is there is some smart method ? I paste the part of code :
while (av_read_frame(...) == 0){
avcodec_decode_audio4(...);
swr_convert(...); // to convert PCM format from FLTP to FLT
alDeleteBuffers(1, theBuffers[?]);
alGenBuffers(1, theBuffers[?]);
alBufferSamplesSOFT(...); // put those data into OpenAL buffer
}if I don't do this, It would failed to update the OpenAL buffer. Is there any method to create a variable size buffer or a big size buffer ? Or is there any method to change the size of buffer ?
Thanks for you guys.
-
NodeJS : Fail to write byte array input from webcam to ffmpeg spawn process
23 mai 2024, par Thanesh PrabaghanI'm using NodeJS server to display an HTML page which has webcam option. Once user visited to my NodeJS server, it will serve html page. User can allow webcam option and see webcam view on the page.


In the backend, I send webcam stream (byte array) using
socket.io
. I receive byte array successfully in backend with the help ofsocket.io
. BUT MY PROBLEM IS, I can't pipe this byte array to theffmpeg
spawn process. I don't know how to properly pipe this data to theffmpeg
. Once it done, all my problem will be solved.

On the other side, I have
node-media-server
as RTMP server to publish this stream to VLC player and other devices. Kindly help me to complete this task. I will attach all my code to this question. Kindly run this in your environment and answer the question.

MY HTML PAGE




 
 
 

 

 <code class="echappe-js"><script src="https://cdn.socket.io/4.7.5/socket.io.min.js" &#xA; integrity="integrity_code" &#xA; crossorigin="anonymous"></script>

 
 

 

<script>&#xA; const socket = io(&#x27;http://localhost:8080/&#x27;);&#xA; var video = document.getElementById("video");&#xA;&#xA; if (navigator.mediaDevices.getUserMedia) {&#xA; navigator.mediaDevices.getUserMedia({ video: true, audio:true })&#xA; .then(function (stream) {&#xA; const recorder = new MediaRecorder(stream);&#xA;&#xA; recorder.ondataavailable = event => {&#xA; socket.emit(&#x27;VideoStream&#x27;, event.data);&#xA; };&#xA; recorder.start(1000); &#xA; video.srcObject = stream;&#xA; }).catch(function (error) {&#xA; console.log("Something went wrong!");&#xA; });&#xA; } &#xA; </script>

 




FFMPEG IMPLEMENTATION


const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
const path = require('node:path'); 
const { spawn } = require('node:child_process');

let cmd = spawn('ffmpeg.exe', [
 '-c:v', 'copy', '-preset', 'ultrafast', '-tune', 'zerolatency',
 '-c:a', 'aac', '-strict', '-2', '-ar', '44100', '-b:a', '64k',
 '-y',
 '-use_wallclock_as_timestamps', '1',
 '-async', '1',
 '-flush_packets', '1',
 '-rtbufsize', '1000',
 '-bufsize', '1000',
 '-f', 'flv',
 '-i','-',
 'rtmp://localhost:1935',
 ]);

app.use(express.static(path.join(__dirname, 'public')));

app.get('/', (req, res) => {
 res.sendFile(path.join(__dirname + 'index.html'));
});

io.on('connection', (socket) => {
 socket.on("VideoStream", (data) => {
 cmd.stdin.write(data);
 });
});

server.listen(8080, () => {
 console.log('listening on *:8080');
});

```
**NODE MEDIA SERVER IMPLEMENTATION**

```
const NodeMediaServer = require('node-media-server');

const config = {
 rtmp: {
 port: 1935,
 chunk_size: 60000,
 gop_cache: true,
 ping: 30,
 ping_timeout: 60
 },
 http: {
 port: 8000,
 allow_origin: '*'
 }
};

var nms = new NodeMediaServer(config)
nms.run();
```