Articles of ffmpeg

投射mp2tstream到Chromecast

我正在开发一个项目,我从一个node.js应用程序中的外部mp2tstream接收数据,我试图把它转换成chromecast设备使用castv2-client包设置contentType属性为“video / mp2t”,但它不工作。 如果我使用ffmpeg将stream转换为mp4文件,则可以投射video,但由于在每个接收到的video块上都必须转换,所以会造成很多结尾。 有什么办法,我可以直接施放mp2tvideo,因为我收到它?

使用ffmpeg,javascript和nodejs实况audio

我对这件事很陌生。 请不要挂我的语法差。 我正试图创build一个概念certificate应用程序,我将在以后扩展。 它执行以下操作:我们有一个html页面,要求获得使用麦克风的权限。 我们捕获麦克风input,并通过websocket发送到节点js应用程序。 JS(客户端): var bufferSize = 4096; var socket = new WebSocket(URL); var myPCMProcessingNode = context.createScriptProcessor(bufferSize, 1, 1); myPCMProcessingNode.onaudioprocess = function(e) { var input = e.inputBuffer.getChannelData(0); socket.send(convertFloat32ToInt16(input)); } function convertFloat32ToInt16(buffer) { l = buffer.length; buf = new Int16Array(l); while (l–) { buf[l] = Math.min(1, buffer[l])*0x7FFF; } return buf.buffer; } navigator.mediaDevices.getUserMedia({audio:true, video:false}) .then(function(stream){ […]

如何捕获来自节点JS spawn ffmpeg命令的日志消息

我正在试图findaudio录音的无声部分。 这个命令正是我想要在我的本地机器上。 ffmpeg -i http://twf-audio.s3.amazonaws.com/uploads/DBC50460-9A5C-4174-9885-07337A582D58_1377839443598_tell.m4a -af silencedetect = n = -40dB:d = 0.2 -f null – 它将一堆消息发送到命令行,包括最后三个是我需要的数据行。 (供参考: ffmpeg silencedetect文档 ) [silencedetect @ 0x7feea040cf20] silence_start:0.0321995 [silencedetect @ 0x7feea040cf20] silence_end:0.975238 | silence_duration:0.943039 [silencedetect @ 0x7feea040cf20] silence_start:1.47184 我无法弄清楚如何得到这个信息。 这是正在运行的nodejs代码。 唯一触发的事件是“退出”。 我认为“pipe道:1”发送输出到标准输出,但是什么也没有做。 var ffmpeg = spawn('ffmpeg', ['-i',filename,'-af','silencedetect=n=-40dB:d=0.2', '-f', 'null','-y', 'pipe:1' ]); ffmpeg.on('message', function(data) { console.log('ffmpeg2 PARENT got message:', […]

FFmpeg从video转换为audio丢失的持续时间

我试图通过他们的直接videourl(使用ytdl-core检索)加载YouTubevideo。 我使用request库加载它们。 然后我把结果输出到一个stream,用作ffmpeg的input(通过fluent-ffmpeg )。 代码看起来像这样: var getAudioStream = function(req, res) { var requestUrl = 'http://youtube.com/watch?v=' + req.params.videoId; var audioStream = new PassThrough(); var videoUrl; ytdl.getInfo(requestUrl, { downloadURL: true }, function(err, info) { res.setHeader('Content-Type', 'audio/x-wav'); res.setHeader('Accept-Ranges', 'bytes'); videoUrl = info.formats ? info.formats[0].url : ''; request(videoUrl).pipe(audioStream); ffmpeg() .input(audioStream) .outputOptions('-map_metadata 0') .format('wav') .pipe(res); }); }; 这实际上工作得很好,前端成功接收WAV格式的audio并且可以播放。 但是,audio缺less关于其大小或持续时间(以及所有其他元数据)的任何信息。 这也使得它不可见。 […]

如何在Node / Meteor服务器上安装FFMPEG?

我正在做一个meteor项目,我需要支持ffmpeg来转换audio文件。 我能用meteor语言在我的本地系统中做到这一点。 当我把代码推到服务器上时,我面临着一个问题 "/bin/sh: 1: ffmpeg: not found". 我没有在服务器上安装ffmpeg。 我不知道如何将它安装在meteor服务器上。 如果有人知道的话,让我知道,这对我非常有用。 我感谢您的帮助。 谢谢。

使用nodejs ffmpegstream摄像头

我试图从本地摄像头生成一个rtspstream,我一直在使用fluent-ffmpeg插件nodeJs,这是我的代码: var ffmpeg = require('fluent-ffmpeg'); var proc = ffmpeg('/dev/video1') //.format('h264') .inputOptions([ '-f v4l2', '-framerate 25', '-video_size 640×480' ]) .outputOptions([ '-f rtsp', '-rtsp_transport tcp', 'rtsp://localhost:7002/live.sdp' ]) //.output('rtsp://localhost:7002/live.sdp') .on('end',function(msg){ console.log("finish ffmpeg command " + msg); }) .on('err',function(err){ console.log("error found " + err); }); 在localhost:7002的另一端我有一个ffplay主机,这个ffmpeg命令完美地工作: ffmpeg -f v4l2 -framerate 25 -video_size 640×480 -i / dev / video1 -f […]

ffmpeg:使用NodeJS从stdin渲染webm

我有一个问题试图转储一些飞行中创build的帧到ffmpeg和NodeJS为了创build一个webmvideo。 脚本试图做这些事情: 在初始化时新build一个ffmpeg进程 渲染一个canvas 一旦更新了canvas中的数据,就从中抓取JPEG数据。 将JPEG数据传送到ffmpeg标准input。 ffmpeg负责将其附加到webmvideo文件中。 这永远不会停止,而且ffmpeg永远不会停止 它应该是一个不断增长的video直播给所有连接的客户端,但我得到的结果只是一个单一的框架webm。 这是ffmpeg的叉子 var args = '-f image2pipe -r 15 -vcodec mjpeg -s 160×144 -i – -f webm -r 15 test.webm'.split(' '); var encoder = spawn('ffmpeg', args); encoder.stderr.pipe(process.stdout); 这是canvas更新和pipe道 theCanvas.on('draw', function () { var readStream = self.canvas.jpegStream(); readStream.pipe(self.encoder.stdin); }); ffmpeg输出 ffmpeg version 1.2.6-7:1.2.6-1~trusty1 Copyright (c) 2000-2014 the FFmpeg […]

在node.js / express中缓冲一个stream到res的stream

我有一个命令,我正在通过ffmpeg进行videostream传输,基本上是将响应内容传递给express中的res 。 例如: var args = ['-re','-i','/video.mkv','-loglevel','quiet','-r',24,'-threads',7,'-b:v','512k','-b:a','96k','-c:v','libx264','-c:a','libfdk_aac','-ar',22050,'-f','flv','pipe:1'] , command = spawn('ffmpeg', args); command.stdout.pipe(res); 我想要做的就是在输出传送到res之前“缓冲”这个数秒。 我试着创build一个new stream.Writeable() ,它采用了stdout ,然后使用setTimeout 3秒,但这似乎并没有工作。 有什么build议么? 谢谢!

如何在节点JS上通过ffmpeg在video中添加标题

我正在开发一个项目,我必须通过FFmpeg在video上添加标题。 我已经成功地在video上添加了一张图片。 任何人都可以帮我添加文字(标题)的video? 这里是我的代码添加图片,请build议所需的修改: try { var process = new ffmpeg('public/'+req.body.video); process.then(function (video) { console.log('The video is ready to be processed'); var watermarkPath = 'public/images/logo.png', newFilepath = 'public/videos/watermarked/'+name, settings = { position : "SC" // Position: NE NC NW SE SC SW C CE CW , margin_nord : null // Margin nord , margin_sud : […]

在Google Compute Engine上自动安装FFMPEG(Debian Wheezy 7.8)

我有一个Google云计算引擎项目,并希望在所有实例上自动安装FFMPEG。 我使用node.js模块https://github.com/fluent-ffmpeg/node-fluent-ffmpeg为上传到服务器的video添加水印并生成缩略图。 在本地安装了ffmpeg的机器上工作得很好。 但是,如何安装/自动安装在谷歌云项目中的所有虚拟机实例ffmpeg?