
Recherche avancée
Autres articles (37)
-
D’autres logiciels intéressants
12 avril 2011, parOn ne revendique pas d’être les seuls à faire ce que l’on fait ... et on ne revendique surtout pas d’être les meilleurs non plus ... Ce que l’on fait, on essaie juste de le faire bien, et de mieux en mieux...
La liste suivante correspond à des logiciels qui tendent peu ou prou à faire comme MediaSPIP ou que MediaSPIP tente peu ou prou à faire pareil, peu importe ...
On ne les connais pas, on ne les a pas essayé, mais vous pouvez peut être y jeter un coup d’oeil.
Videopress
Site Internet : (...) -
Les formats acceptés
28 janvier 2010, parLes commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
ffmpeg -codecs ffmpeg -formats
Les format videos acceptés en entrée
Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
Les formats vidéos de sortie possibles
Dans un premier temps on (...) -
Ajouter notes et légendes aux images
7 février 2011, parPour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
Modification lors de l’ajout d’un média
Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)
Sur d’autres sites (6310)
-
How to use YouTube-dl to stream from Bloomberg TV ?
1er janvier 2020, par Mr. Demetrius MichaelAny help would be appreciated !
This isn’t getting the correct stream from Bloomberg LiveTV, and I’m unsure why and how to fix.
$ youtube-dl https://www.bloomberg.com/live
Here’s a snippet of the errors that I get from that link :
[mp4 @ 0x7ffd13860c00] Invalid DTS: 9009 PTS: 3003 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 12012 PTS: 9009 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 21021 PTS: 15015 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 24024 PTS: 21021 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 33033 PTS: 27027 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 36036 PTS: 33033 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 45045 PTS: 39039 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 48048 PTS: 45045 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 57057 PTS: 51051 in output stream 0:0, replacing by guess
[mp4 @ 0x7ffd13860c00] Invalid DTS: 60060 PTS: 57057 in output stream 0:0, replacing by guess
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=963063, dts=969069, size=12512
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=969069, dts=972072, size=12513
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=963063, dts=969069, size=12512
[mp4 @ 0x7ffd13860c00] Invalid DTS: 69069 PTS: 63063 in output stream 0:0, replacing by guess
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=969069, dts=972072, size=12513
[mp4 @ 0x7ffd13860c00] Invalid DTS: 72072 PTS: 69069 in output stream 0:0, replacing by guess
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=975075, dts=981081, size=12512
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=981081, dts=984084, size=12513
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=975075, dts=981081, size=12512
[mp4 @ 0x7ffd13860c00] Invalid DTS: 81081 PTS: 75075 in output stream 0:0, replacing by guess
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=981081, dts=984084, size=12513
[mp4 @ 0x7ffd13860c00] Invalid DTS: 84084 PTS: 81081 in output stream 0:0, replacing by guess
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=987087, dts=993093, size=12512
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=993093, dts=996096, size=12513
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=987087, dts=993093, size=12512
[mp4 @ 0x7ffd13860c00] Invalid DTS: 93093 PTS: 87087 in output stream 0:0, replacing by guess
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=993093, dts=996096, size=12513
[mp4 @ 0x7ffd13860c00] Invalid DTS: 96096 PTS: 93093 in output stream 0:0, replacing by guess
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=999099, dts=1005105, size=12512
[mpegts @ 0x7ffd14810000] Invalid timestamps stream=0, pts=1005105, dts=1008108, size=12513
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=999099, dts=1005105, size=12512
[mp4 @ 0x7ffd13860c00] Invalid DTS: 105105 PTS: 99099 in output stream 0:0, replacing by guess
[hls @ 0x7ffd14000400] Invalid timestamps stream=0, pts=1005105, dts=1008108, size=12513Ideally I would be able to get all of their available programming :
https://www.bloomberg.com/live/us
https://www.bloomberg.com/live/us/btv
https://www.bloomberg.com/live/europe
https://www.bloomberg.com/live/asia
https://www.bloomberg.com/live/australia
https://www.bloomberg.com/live/stream
https://www.bloomberg.com/live/emea
https://www.bloomberg.com/live/asia_stream
https://www.bloomberg.com/live/politics -
FFMPeg generated video : Audio has 'glitches' when uploaded to YouTube
7 octobre 2023, par CularBytesI've generated a voice from Azure AI Speech at 48KHz and 96K Bit Rate, generated a video of some stock footages and I'm trying to combine all of that with a background music.
The voice-over is generated per setence, so that I know how long each setence is and to include relevant video footage.


I'm using FFMpeg through the FFMpegCore nuget package.


The problem


After the video is complete with background music, I play it on my computer and it's perfect (no audio glitches, music keeps playing). But when uploaded to youtube it has 'breaks' in the music inbetween sentences (basically everytime a new voice-fragment is starting).


Example : https://www.youtube.com/watch?v=ieNvQ2TNq44


The code


All of the footage is combined with mostly
FFMpeg.Join(string output, string[] videos)
. These video files also contain the voice-overs (per sentance).

After that I try to add the music like this :


string outputTimelineWithMusicPath = _workingDir + $@"\{videoTitle}_withmusic.mp4";
 FFMpegArguments
 .FromFileInput(inputVideoPath)
 .AddFileInput(musicPath)
 .OutputToFile(outputPath, true, options => options
 .CopyChannel()
 .WithAudioCodec(AudioCodec.Aac)
 .WithAudioBitrate(AudioQuality.Good)
 .UsingShortest(true)
 .WithCustomArgument("-filter_complex \"[0:a]aformat=fltp:44100:stereo,apad[0a];[1]aformat=fltp:44100:stereo,volume=0.05[1a];[0a][1a]amerge[a]\" -map 0:v -map \"[a]\" -ac 2"))
 .ProcessSynchronously();



I've tried to mess around with the CustomArgument, but so far no success.


For example, I thought removing
apad
from the argument so no 'blank spots' are added, should perhaps fix the issue. Also tried to useamix
instead ofamerge
.

Last try


I've tried to first make sure both files had the same sample rate, in the hope to fix the issue. So far, no success


string outputVideoVoicePath = _workingDir + $@"\{title}_voiceonly_formatting.mp4";
 string musicReplacePath = _workingDir + $@"\{title}_music_formatted.aac";
 FFMpegArguments
 .FromFileInput(inputVideoPath)
 .OutputToFile(outputVideoVoicePath, true, options => options
 .WithAudioCodec(AudioCodec.Aac)
 .WithAudioBitrate(128)
 .WithAudioSamplingRate(44100)
 )
 .ProcessSynchronously();
 
 FFMpegArguments
 .FromFileInput(music.FilePath)
 .OutputToFile(musicReplacePath, true, options => options
 .WithAudioCodec(AudioCodec.Aac)
 .WithAudioBitrate(256) //also tried 96 (which is original format)
 .WithAudioSamplingRate(44100)
 )
 .ProcessSynchronously();
 
 
 Console.WriteLine("Add music...");
 var videoTitle = Regex.Replace(title, "[^a-zA-Z]+", "");
 string outputTimelineWithMusicPath = _workingDir + $@"\{videoTitle}_withmusic.mp4";
 FFMpegArguments
 .FromFileInput(outputVideoVoicePath)
 .AddFileInput(musicReplacePath)
 .OutputToFile(outputTimelineWithMusicPath, true, options => options
 .CopyChannel()
 .WithAudioCodec(AudioCodec.Aac)
 .WithAudioBitrate(AudioQuality.Good)
 .UsingShortest(true)
 .WithCustomArgument("-filter_complex \"[0:a]aformat=fltp:44100:stereo[0a];[1]aformat=fltp:44100:stereo,volume=0.05[1a];[0a][1a]amix=inputs=2[a]\" -map 0:v -map \"[a]\" -ac 2"))
 .ProcessSynchronously();
 return outputTimelineWithMusicPath;



I'm not much of an expert when it comes to audio/video codecs. I do scale each stock video to 24fps, 1920x1080 and the music has a original bitrate of 256Kbps / 44100 sample rate (so I probably don't even have to convert the audio file).


-
Unable to read video streams on FFMPEG and send it to youTube RTMP server
29 août 2024, par Rahul BundeleI'm trying to send two video stream from browser as array buffer (webcam and screen share video) to server via Web RTC data channels and want ffmpeg to add webcam as overlay on screen share video and send it to youtube RTMP server, the RTC connections are established and server does receives buffer , Im getting error in Ffmpeg..error is at bottom , any tips on to add overlay and send it to youtube RTMP server would be appreciated.


Client.js


`
const webCamStream = await navigator.mediaDevices.getUserMedia( video : true ,audio:true ) ;
const screenStream = await navigator.mediaDevices.getDisplayMedia( video : true ) ;


const webcamRecorder = new MediaRecorder(webCamStream, { mimeType: 'video/webm' });
webcamRecorder.ondataavailable = (event) => {
 if (event.data.size > 0 && webcamDataChannel.readyState === 'open') {
 const reader = new FileReader();
 reader.onload = function () {
 const arrayBuffer = this.result;
 webcamDataChannel.send(arrayBuffer);
 };
 reader.readAsArrayBuffer(event.data);
 }
};
webcamRecorder.start(100); // Adjust the interval as needed

// Send screen share stream data
const screenRecorder = new MediaRecorder(screenStream, { mimeType: 'video/webm' });
screenRecorder.ondataavailable = (event) => {
 if (event.data.size > 0 && screenDataChannel.readyState === 'open') {
 const reader = new FileReader();
 reader.onload = function () {
 const arrayBuffer = this.result;
 screenDataChannel.send(arrayBuffer);
 };
 reader.readAsArrayBuffer(event.data);
 }
};
screenRecorder.start(100); 



`


Server.js


const youtubeRTMP = 'rtmp://a.rtmp.youtube.com/live2/youtube key';

// Create PassThrough streams for webcam and screen
const webcamStream = new PassThrough();
const screenStream = new PassThrough();

// FFmpeg arguments for processing live streams
const ffmpegArgs = [
 '-re',
 '-i', 'pipe:3', // Webcam input via pipe:3
 '-i', 'pipe:4', // Screen share input via pipe:4
 '-filter_complex', // Complex filter for overlay
 '[0:v]scale=320:240[overlay];[1:v][overlay]overlay=10:10[out]',
 '-map', '[out]', // Map the output video stream
 '-c:v', 'libx264', // Use H.264 codec for video
 '-preset', 'ultrafast', // Use ultrafast preset for low latency
 '-crf', '25', // Set CRF for quality/size balance
 '-pix_fmt', 'yuv420p', // Pixel format for compatibility
 '-c:a', 'aac', // Use AAC codec for audio
 '-b:a', '128k', // Set audio bitrate
 '-f', 'flv', // Output format (FLV for RTMP)
 youtubeRTMP // Output to YouTube RTMP server
];

// Spawn the FFmpeg process
const ffmpegProcess = spawn('ffmpeg', ffmpegArgs, {
 stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe']
});

// Pipe the PassThrough streams into FFmpeg
webcamStream.pipe(ffmpegProcess.stdio[3]);
screenStream.pipe(ffmpegProcess.stdio[4]);

ffmpegProcess.on('close', code => {
 console.log(`FFmpeg process exited with code ${code}`);
});

ffmpegProcess.on('error', error => {
 console.error(`FFmpeg error: ${error.message}`);
});

const handleIncomingData = (data, stream) => {
 const buffer = Buffer.from(data);
 stream.write(buffer);
};



the server gets the video buffer via webrtc data channels


pc.ondatachannel = event => {
 const dataChannel = event.channel;
 pc.dc = event.channel;
 pc.dc.onmessage = event => {
 // Spawn the FFmpeg process
 // console.log('Message from client:', event.data);
 const data = event.data;

 if (dataChannel.label === 'webcam') {
 handleIncomingData(data, webcamStream);
 } else if (dataChannel.label === 'screen') {
 handleIncomingData(data, screenStream);
 }
 
 };
 pc.dc.onopen = e=>{
 // recHead.innerText = "Waiting for user to send files"
 console.log("channel opened!")
 }
 };



Im getting this error in ffmpeg


[in#0 @ 0000020e585a1b40] Error opening input: Bad file descriptor
Error opening input file pipe:3.
Error opening input files: Bad file descriptor