Articles of ffmpeg

在没有Content-Length的情况下进行stream式传输

我正在使用Node.js,Express(和连接)和fluent-ffmpeg。 我们希望通过http传输存储在Amazon S3上的audio文件。 除了我们希望添加一个特性,即通过ffmpeg实时转换stream之外,我们所有的工作都正在进行。 这是行之有效的,问题是有些浏览器在实际获取文件之前提前检查。 包含Range头部的传入请求,我们用S3的所有信息回复206,有一个基本问题:我们需要事先知道文件的内容长度。 我们不知道,因为它正在经历ffmpeg。 一种解决scheme可能是在存储文件(在一个特殊的头文件中)时直接在S3上写出结果的内容长度,但这意味着我们必须经历上传之后让队列进行编码的痛苦,以便知道将来的大小要求。 这也意味着,如果我们改变压缩机或预设,我们必须经历这一切,所以这不是一个可行的解决scheme。 我们也注意到Chrome和Safari请求audio标签src的方式存在很大差异,但这可能是另一个话题的讨论。 事实是,如果没有一个合适的内容长度标题,响应一切似乎中断或浏览器进入一个无限循环或愉快地重新启动stream。 想法?

NodeJS – 如何pipe相同的videostream到多个客户端?

我们有一种情况试图为videostream服务。 由于HTML5video标签不支持udp组播,因此我们试图重新使用已经转换的ffmpegstream并将其发送给多个响应。 但是这不起作用。 第一个响应得到了正确的stream,但第二个响应没有。 似乎这个stream不能通过另一个响应pipe道,也不能被克隆。 有没有人做过? 有任何想法吗? 提前致谢! 代码如下: var request = require('request'); var http = require('http'); var child_process = require("child_process"); var n = 1; var stdouts = {}; http.createServer(function (req, resp) { console.log("***** url ["+req.url+"], call "+n); if (req.url != "/favicon.ico" && req.url != "/") { var params = req.url.substring(1).split("/"); switch (params[0]) { case […]

使用FFMPEG实时stream式传输到networkingaudioAPI

我正在尝试使用node.js + ffmpeg将audiostream式传输到仅使用WebaudioAPI连接的浏览器。 不使用元素,因为它添加了自己的缓冲区8到10秒,我想获得最大的高延迟(最大大约1到2秒)。 audio播放成功,但audio非常波涛汹涌。 这里是我的node.js(服务器端)文件: var ws = require('websocket.io'), server = ws.listen(3000); var child_process = require("child_process"); var i = 0; server.on('connection', function (socket) { console.log('New client connected'); var ffmpeg = child_process.spawn("ffmpeg",[ "-re","-i", "A.mp3","-f", "f32le", "pipe:1" // Output to STDOUT ]); ffmpeg.stdout.on('data', function(data) { var buff = new Buffer(data); socket.send(buff.toString('base64')); }); }); 这里是我的HTML: var audioBuffer […]

使用nodejs stdoutpipe道输出ffmpeg

我无法通过标准输出pipe道输出ffmpeg。 以下是我编码到目前为止的代码块。 var http = require('http') , fs = require('fs') var child_process = require("child_process") http.createServer(function (req, res) { console.log("Request:", dump_req(req) , "\n") // path of the var path = 'test-mp4.mp4' //test-mp4-long.mp4 , stat = fs.statSync(path) , total = stat.size var range = req.headers.range , parts = range.replace(/bytes=/, "").split("-") , partialstart = parts[0] , partialend = […]

IBM Watson语音到Node.js Web应用程序上的文本audio转换

问题的关键是IBM Watson Speech to Text只允许FLAC,WAV和OGG文件格式上传并与API一起使用。 我的解决scheme是,如果用户上传一个MP3,在发送文件到Watson之前,数据转换将发生。 本质上,用户上传一个mp3,然后使用ffmpeg或sox将audio转换为OGG,然后将audio上传到Watson。 我不确定的是:为了允许audio转换发生,我必须在Node.js Watson代码中修改哪些内容? 下面链接是我正在通过的沃森回购。 我相信这个文件必须被修改,就是我已经链接到的fileupload.js文件,但是修改的地方是我不确定的。 我已经通过SO和developerWorks,IBM SO来了解这个问题的答案,但是我还没有看到这是我在这里发布的原因。 如果有必要,我会很乐意澄清我的问题。 沃森演讲到文本回复

在AWS Zip中捆绑Node.js依赖

我使用Node.js创build一个lambda函数,而我正在寻找将依赖关系捆绑到我的zip中以用于AWS中的Lambda函数。 特别是我使用ffmpeg库,我已经得到它在本地使用npm运行 。 有没有办法,我可以绑定这个依赖关系与我上传的.zip文件,所以我不必在AWS中configuration依赖关系?

如何获取node-fluent-ffmpeg上的stderr

现在saveToFilecallback参数已被弃用: FfmpegCommand.prototype.saveToFile = function(targetfile, callback) { if (callback) { this.options.logger.warn('saveToFile callback is deprecated, use \'end\' and \'error\' events instead'); 我已经改变了我的代码: new ffmpeg({ source: source }) .toFormat('ogg') .saveToFile(path.normalize(targetFile), function(stdout, stderr) { console.log('stdout', stdout); console.log('stderr', stderr); }); 对此: new ffmpeg({ source: source }) .toFormat('ogg') .on('end', function() { console.log('file has been converted succesfully'); }) .on('error', function(err) { console.log('an […]

发生错误:产生ENOENT,node.js&FFmpeg

我有一个噩梦的时间试图解决这个问题。 我昨天问了一个关于这个问题的问题,但是到目前为止,长话短说,我不能为我的生活弄清楚这一点。 我想要做的就是在一个node.js应用程序中使用FFmpeg将一个.avi文件转码为一个.flv文件,这个工作只是使用FFmpeg的命令行而不是在应用程序中,代码如下: var ffmpeg = require('fluent-ffmpeg'); //make sure you set the correct path to your video file var proc = new ffmpeg({ source: 'C:/Users/Jay/Documents/movie/drop.avi', nolog: true }); //Set the path to where FFmpeg is installed proc.setFfmpegPath("C:\\Users\\Jay\\Documents\\FFMPEG\\bin"); proc //set the size //.withSize('50%') <– error appears after this line // set fps //.withFps(24) // set output […]

使用NodeJS中的mp4容器stream式转换电影,电影播放速度非常快

我已经使用stream-transcoder模块来转换文件使其成为一个stream。 所以文件不存储,它是在飞行中。 app.get("/video", function(req,res){ res.writeHead(200, {'Content-Type': 'video/mp4'}); var src = "movie.avi"; var Transcoder = require('stream-transcoder'); var stream = fs.createReadStream(src); new Transcoder(stream) .maxSize(1280, 720) .videoCodec('h264') .videoBitrate(800 * 1000) .fps(25) .sampleRate(44100) .channels(2) .audioBitrate(128 * 1000) .format('mp4') .on('finish', function() { console.log("finished"); }) .stream().pipe(res); }); 它工作的很好,速度很快,但速度太快,audio播放速度相同,但video不考虑帧速率,不pipe从ffmpeg收到什么,都很快地显示出来。 此外,它不显示总时间,我相信这是问题。 我需要以某种方式指定长度,帧率,但我找不到足够的信息。 我以为从ffmpeg收到的stream应该包含这个。 而我无法findHTTP中的相应标题。 以下是这个stream代码转换器模块用于MP4的标志: [ '-i', '-', '-vf', 'scale=min(trunc(1280/hsub)*hsub\\,trunc(a*720/hsub)*hsub):min(trunc(720/vsub)*vsub\\,trunc(1280/a/vsub)*vsub)', '-vcodec', 'h264', '-b:v', […]

After Effects作为后端电影引擎?

我现在正在开发一个项目,可以让我根据用户input生成电影。 用户将上传一些样本(照片,电影)到networking应用程序,networking服务器应该根据该input和一些预定义的电影作品生成电影。 我知道有很多的ffmpeg库可以让我连接电影,照片编程(例如https://github.com/schaermu/node-fluent-ffmpeg为node.js),但我想知道是否有可能使用Aftereffects为此目的,因为我有一些在该软件的知识。 我想象一下,在Aftereffects中应该有一组脚本可以导入用户上传的数据,激发电影渲染器并将输出保存到给定位置。 你认为这是可以使用后遗症吗? 或者,也许有人有类似的问题,解决了不同的? 干杯!