
Recherche avancée
Médias (1)
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
Autres articles (28)
-
List of compatible distributions
26 avril 2011, parThe table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...) -
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 is the first MediaSPIP stable release.
Its official release date is June 21, 2013 and is announced here.
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Pas question de marché, de cloud etc...
10 avril 2011Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
sur le web 2.0 et dans les entreprises qui en vivent.
Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)
Sur d’autres sites (5017)
-
Video/Audio transcoding settings ffmpeg
28 juin 2019, par redI’ve configured a Lambda layer with FFMPEG to transcode video and audio, to do the transcoding I do the following :
- I upload the file with a presigned post to s3
- s3 have a trigger to automatically call a lambda function on audio/video upload
- the lambda function spawn a child process for every file
- the child process transcode the video and save the transcoded file in /tmp
- then I upload the file renamed back to s3, delete the previous version and the /tmp folder
Now the audio transcoding is really fast but the video is quite slow, and I know that video transcoding always need more time than audio transcoding, but maybe there is some setting that con help me to speed up a bit, here the settings :
spawn(ffmpegPath, ['-i', 'https://s3.eu-central-1.amazonaws.com/' + srcBucket + '/' + srcKey, '-codec:v', 'libx264', '-profile:v', 'main', '-preset', 'slow', '-b:v', '400k', '-maxrate', '400k', '-bufsize', '800k', '-vf', `scale=-2:${quality}`, '-threads', '0', '-b:a', '128k', '/tmp/'+dstKey]);
There is some settings that can help me to speed up transcoding without loose in quality ? or a use different child_process like exec or other maybe can help... This code run in a lambda function with 3008mb of RAM
Thank you !
-
How to programmatically start/stop FFMPEG stream transcoding
10 décembre 2019, par Paul WielandI have an ip webcam which provides an MJPEG stream. I can successfully transcode and save that stream with ffmpeg under OSX. The following gives me pretty much what I want :
ffmpeg -f mjpeg -i "http://user:pass@10.0.1.200/nphMotionJpeg?Resolution=640x480&Quality=Standard" -b:v 1500k -vcodec libx264 /tmp/test.mp4
That will start an FFMPEG session and begin saving the live stream to my test.mp4 file. pressing q will quit ffmpeg and save the file.
I would like to programmatically start & stop the recording using a PHP or Bash shell script. I have tried the following :
<?php
$pid = pcntl_fork();
if($pid == -1){
die("could not fork");
}elseif($pid){
// we are the parent...
print $pid.' started recording. waiting 10 seconds...';
sleep(10); // Wait 10 seconds
print_r(shell_exec("kill ".$pid)); // Kill the child recording process
echo 'done';
exit();
}else{
// we are the child process. call ffmpeg.
exec('../lib/ffmpeg -f mjpeg -i "http://user:pass@10.0.1.200/nphMotionJpeg?Resolution=640x480&Quality=Standard" -b:v 1500k -vcodec libx264 /tmp/test.mp4');
}But there are two problems :
- The ffmpeg process does not end/die (probably because its forked again)
- When I manually kill the ffmpeg process, the video file is not readable
-
Error : spawn process ffmpeg ChildProcessError
10 juin 2019, par KarnonI wanted to make a program like OBS simply.
My ideal code behavior is to create a child process in Node.js and execute FFMPEG commands to send a webcam stream to yourtube live RTMP server. However, the actual behavior is caused by an error in the child-process-promise module used in node.js.
I’ve checked several questions, but I don’t have enough experience to understand them, and I hope there’s a clear solution.
I guess it was because I couldn’t find the command address of FFMPEG in the Node environment. Or is calling from the socket environment a problem ?
I checked that the FFMPEG command works in a Windows prompt environment.
※ Note : FFMPEG environment variables are registered.
Environment :
Window10
,node.js
,ffmpeg
The code took advantage of a simple WebSocket example.
When I first investigated, I thought that the only way to do this was to use "fluent-effmpeg."
I tried "fluent-ffmpeg" but I couldn’t get my laptop webcam up and running in Windows environments as a parameter for the "fluent-ffmppeg" command.
I’ve also thought about using WebRTC, but I think it’s not for personal use because it’s a P2P connection. (I also saw how to connect a peer connection to a WebRTC server like Janus, but I didn’t have enough references to understand it.)
Below is the code of the problem.
const SocketIO = require("socket.io");
const ffmpeg = require("fluent-ffmpeg");
const spawn = require("child-process-promise").spawn;
module.exports = server => {
const io = SocketIO(server, { path: "/socket.io" });
io.on("connection", socket => {
const req = socket.request;
const ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
console.log("새로운 클라이언트 접속!", ip, socket.id, req.ip);
socket.on("disconnect", () => {
console.log("클라이언트 접속해제", ip, socket.id);
clearInterval(socket.interval);
});
socket.on("error", error => {
console.error(error);
});
socket.on("reply", data => {
console.log(data);
ffmpeg_command();
});
});
function ffmpeg_command() {
let arg = [
"-f",
"lavfi",
"-i",
"anullsrc=r=16000:cl=mono",
"-f",
"dshow",
"-ac",
"2",
"-i",
"video='HP Truevision HD'",
"-s",
"1280x720",
"-r",
"10",
"-vcodec",
"libx264",
"-pix_fmt",
"yuv420p",
"-preset",
"ultrafast",
"-r",
"25",
"-g",
"20",
"-b:v",
"2500k",
"-codec:a",
"libmp3lame",
"-ar",
"44100",
"-threads",
"6",
"-b:a",
"11025",
"-bufsize",
"512k",
"-f",
"flv",
"rtmp://a.rtmp.youtube.com/live2/8dfu-69k0-dxyw-896q"
];
spawn("ffmpeg", arg).catch(e => {
console.log(e);
});
}
};Here’s the error : The expected result is that your webcam is working and YouTube live streaming is successful.
{ ChildProcessError: `ffmpeg -f lavfi -i anullsrc=r=16000:cl=mono -f dshow -ac 2 -i video='HP Truevision HD' -s 1280x720 -r 10 -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -r 25 -g 20 -b:v 2500k -codec:a libmp3lame -ar 44100 -threads 6 -b:a 11025 -bufsize 512k -f flv rtmp://a.rtmp.youtube.com/live2/8dfu-69k0-dxyw-896q` failed with code 1
at ChildProcess.<anonymous> (C:\Users\Tricky\Desktop\Work\ESC\ESC_temp\node_modules\child-process-promise\lib\index.js:132:23)
at ChildProcess.emit (events.js:182:13)
at ChildProcess.cp.emit (C:\Users\Tricky\Desktop\Work\ESC\ESC_temp\node_modules\child-process-promise\node_modules\cross-spawn\lib\enoent.js:40:29)
at maybeClose (internal/child_process.js:962:16)
at Socket.stream.socket.on (internal/child_process.js:381:11)
at Socket.emit (events.js:182:13)
at Pipe._handle.close (net.js:606:12)
name: 'ChildProcessError',
code: 1,
childProcess:
ChildProcess {
_events: { error: [Function], close: [Function] },
_eventsCount: 2,
_maxListeners: undefined,
_closesNeeded: 3,
_closesGot: 3,
connected: false,
signalCode: null,
exitCode: 1,
killed: false,
spawnfile: 'ffmpeg',
_handle: null,
spawnargs:
[ 'ffmpeg',
'-f',
'lavfi',
'-i',
'anullsrc=r=16000:cl=mono',
'-f',
'dshow',
'-ac',
'2',
'-i',
'video=\'HP Truevision HD\'',
'-s',
'1280x720',
'-r',
'10',
'-vcodec',
'libx264',
'-pix_fmt',
'yuv420p',
'-preset',
'ultrafast',
'-r',
'25',
'-g',
'20',
'-b:v',
'2500k',
'-codec:a',
'libmp3lame',
'-ar',
'44100',
'-threads',
'6',
'-b:a',
'11025',
'-bufsize',
'512k',
'-f',
'flv',
'rtmp://a.rtmp.youtube.com/live2/8dfu-69k0-dxyw-896q' ],
pid: 18928,
stdin:
Socket {
connecting: false,
_hadError: false,
_handle: null,
_parent: null,
_host: null,
_readableState: [ReadableState],
readable: false,
_events: [Object],
_eventsCount: 1,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: null,
_server: null,
[Symbol(asyncId)]: 132,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0 },
stdout:
Socket {
connecting: false,
_hadError: false,
_handle: null,
_parent: null,
_host: null,
_readableState: [ReadableState],
readable: false,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: null,
_server: null,
write: [Function: writeAfterFIN],
[Symbol(asyncId)]: 133,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0 },
stderr:
Socket {
connecting: false,
_hadError: false,
_handle: null,
_parent: null,
_host: null,
_readableState: [ReadableState],
readable: false,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: null,
_server: null,
write: [Function: writeAfterFIN],
[Symbol(asyncId)]: 134,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBytesRead)]: 1615,
[Symbol(kBytesWritten)]: 0 },
stdio: [ [Socket], [Socket], [Socket] ],
emit: [Function] },
stdout: undefined,
stderr: undefined }
</anonymous>