Articles of ffmpeg

NodeJS – pipe道多个FFMPEG进程

我试图编程一个转换器,可以采取任何video源,并将其转换为MP3。 mp3应该保存在我的硬盘上,或者保存在一个缓冲区中,通过电报发送。 目前为止效果不错,我唯一面临的问题是一次只能拍一个video,而我不知道为什么。 // IMPORTS var fs = require('fs'); var https = require('https'); var child_process = require('child_process'); // EVENTEMITER (Not used so far) var util = require('util'); var EventEmitter = require('events').EventEmitter; // STREAMHANDLER var StreamHandler = function(url, name){ // VARIABLES self = this; this.url = url; this.name = name; // CREATE FFMPEG PROCESS var spawn […]

无法使用fluent-ffmpeg转换文件

我用npm install fluent-ffmpeg并validation了它在node-modules中的存在。 如果将其包含在服务器中,则不会出现错误var ffmpeg = require('fluent-ffmpeg'); 但是,当我用它来转换目录中的.gif文件到.mp4它会引发错误: Error: Cannot find ffmpeg 我的代码: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); var ffmpeg = require('fluent-ffmpeg'); var proc = new ffmpeg({ source: '/uploads/myfile.gif' }) .usingPreset('podcast') .saveToFile('/uploads/mynewfile.mp4', function(stdout, stderr) { console.log('file has been converted succesfully'); }); 我究竟做错了什么? 我想将.gif转换为.mp4

使用ffmpeg – nodejs区分错误和标准terminal日志

我在节点js中使用ffmpeg 。 标准的terminal输出和错误似乎被发送到标准输出,所以我不知道如何区分错误和成功…这是我的代码: var convertToMp3 = function(filePath) { var ffmpeg = child_process.spawn('ffmpeg',['-i', filePath, '-y', 'output.mp3']); var err = ''; ffmpeg.stderr .on('data', function(c) { err += c; }) .on('end', function() { console.log('stderr:', err); }); var d = ''; ffmpeg.stdout .on('data', function(c){d +=c;}) .on('end', function(){ console.log('stdout', d); }); } 如果转换成功或失败,则标准输出为空,并且标准错误包含如果我在terminal中运行相应的命令

用fluent-ffmpeg添加字幕

我试图把字幕烧成一个video。 这个命令完全可以从命令行运行: ffmpeg -i in.mp4 -vf subtitles=sub.srt:force_style='Fontsize=20' out.mp4 我在服务器端的代码似乎没有太多(虽然创buildtest.mp4) ffmpeg('temp/subtitleVideos/qTWVbM5pkKms_pJbE8OAvH3N.mp4') .outputOptions( '-vf subtitles=temp/subtitleVideos/qTWVbM5pkKms_pJbE8OAvH3N.srt' ) .on('error', function(err) { console.log('Error: ' + err.message); }) .save(path + 'test.mp4'); 我得到以下错误: Error: ffmpeg exited with code 1: Error opening filters!

节点fluent-ffmpegstream输出错误代码1

完全按照文档,我试图使用一个stream来写入video转换文件。 var FFmpeg = require('fluent-ffmpeg'); var fs = require('fs'); var outStream = fs.createWriteStream('C:/Users/Jack/Videos/test.mp4'); new FFmpeg({ source: 'C:/Users/Jack/Videos/video.mp4' }) .withVideoCodec('libx264') .withAudioCodec('libmp3lame') .withSize('320×240') .on('error', function(err) { console.log('An error occurred: ' + err.message); }) .on('end', function() { console.log('Processing finished !'); }) .writeToStream(outStream, { end: true }); 当我使用.saveToFile()时,这个转换完美地工作,但返回 发生错误:ffmpeg用代码1退出 当我运行这个代码。 我在Windows 8.1 64位使用从这里 64位ffmpeg生成。

Node.jsasynchronousvideo转换慢

我写了一个小网站/服务,它可以从一个网站(目前Youtube)下载一个video,并将其转换为一个mp3文件,并将其作为响应发回。 例如,当您请求http:// localhost:8000 / v = http://www.youtube.com/watch?v = HhoewflkQu0时 ,它会下载此video并响应以MP3编码的audio层。 这一切工作得很好,我的问题是,这是非常缓慢的,我不明白为什么。 简化脚本的行为如下: 下载video并将其写入ffmpeg的stdin,然后stdout转到响应。 video(MP4,FLV) – > FFMPEG – > MP3 我用curl找出脚本有多快: $ curl http://localhost:8000/v=http://www.youtube.com/watch?v=HhoewflkQu0 我只得到约5-10K。 那为什么这么慢呢? 我从中下载video的服务器很慢。 转换很慢(因为CPU速度很慢)。 node.js – > FFMPEG之间的数据传输很慢。 我试图下载一个正常的下载pipe理器的video,我得到了约320k,这是我的正常下载速度,所以第一点不是瓶颈。 到了第二点和第三点,我试图写一个本地文件到标准input,我得到了大约60万,所以不是这样。 那么为什么我的脚本太慢了,我能做些什么来使其更快? https://gist.github.com/1304637 提前致谢。

捕获缩略图Whilte下载Youtubevideo

我想在特定时间线上捕捉Youtubevideo的缩略图。 (例如3.2秒)我用ytdl和fluent-ffmpeg和node.js来实现它。 下载完成后可以捕获缩略图。 var fs = require('fs'); var ytdl = require('ytdl'); var ffmpeg = require('fluent-ffmpeg'); var videostream = fs.createWriteStream('video.flv'); var myytdl = ytdl('http://www.youtube.com/watch?v=A02s8omM_hI'); myytdl.pipe(videostream); videostream.on('close',function() { console.log('Downloading complete…'); var proc = new ffmpeg({ source: 'video.flv', nolog: true }) .withSize('150×100') .takeScreenshots(1, '/home/test', function(err) { console.log(err || 'Screenshots were saved'); }); }); 但是,我无法实现在下载时捕获缩略图。 我想要做的基本想法如下。 从X秒开始下载Youtubevideo。 (工程) 将其pipe理为可读/可写(双工)内存stream(需要通知) […]

将RTSPstream转换为MP4

我有一个支持RTSP的IP摄像头,我需要使用HTML5将这个stream显示给多个客户端。 由于HTML Video标签不支持RTSP,因此我打电话给ffmpeg将其编码为一个WEBMstream,但是结果非常不好,并且使原始stream失真。 我使用的命令如下: ffmpeg -i my_RSTP_URL -vcodec libvpx -f webm – 为了分发stream,我使用了一个Node.js实例,在需要时通过ffpmeg调用rtspstream。 解决scheme如下所示: 相机–Via RSTP – > ffmpeg – 编程到WEBM – > Node.js –Via HTML5video – >客户端 Node.js代码: var request = require('request'); var http = require('http'); var child_process = require("child_process"); var stdouts = {}; http.createServer(function (req, resp) { switch (params[0]) { case "LIVE": resp.writeHead(200, […]

将ffmpeg输出stream到node.js中的flash播放器

我正在使用ffmpeg拍摄一个video源,并在Flash中直播到浏览器。 这里是代码(使用expressjs): app.get('/stream', function(req, res) { var command = spawn('ffmpeg', ['-re','-i','video.avi','-c:v','libx264','-c:a','libfaac','-ar',44100,'-f','flv','-']); res.setHeader("Accept-Ranges", "bytes"); res.setHeader("Content-Type", "video/x-flv"); command.stdout.pipe(res); }); 编辑:这个使用的命令是: ffmpeg -re -i video.avi -c:v libx264 -c:a libfaac -ar 44100 -f flv – 如果我直接在浏览器中加载这个URL,它下载flv文件,我可以在VLC播放器中播放它。 然而,当我在像JWPlayer这样的播放器中使用它时,甚至试图简单地embedded它,它就不会显示或者任何东西。 任何想法,我可能会在这里失踪? 谢谢! 编辑:这是从ffmpeg的输出,在这之后它只是继续编码的字节。 ffmpeg version N-52420-gfc69033 Copyright (c) 2000-2013 the FFmpeg developers built on Apr 25 2013 17:10:30 with llvm-gcc 4.2.1 (LLVM […]

通过Socket.io HTML5video/audio到Nodejs,但扭曲 – FFMPEG

我正在写这个非常简单的“skype克隆”。 我尝试了各种其他语言,python和分层Node.js与meteor,WebRTC,但Node.js + socket.io似乎工作最好,最干净,但我已经达到了路障,我无法得到这一切正常工作。 我有两个问题,1,我想我从HTML5 getUserMedia发送真实的数据,但我可能不会,我不知道如何testing或找出。 我认为使用“video.src = window.URL.createObjectURL(stream);” 使Blobstream成为一个实际的数据stream…但我不知道。 这是我的Broadcast.html这是一个非常简单的getUserMedia抢相机和麦克风…然后我连接到套接字,点击广播button,发射发射'join',并通过'webcamstream'的数据发送。 <video autoplay height="280"></video> <button class="recordbutton" onclick="startBroadcasting();">Broadcast</button> <script language="javascript" type="text/javascript"> var socket = io.connect('http://video.domain.com:3031'); socket.on('connect', function() { $('#conversation').append('Connected <br />'); }); function onVideoFail(e) { console.log('webcam fail!', e); }; function hasGetUserMedia() { return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); } if (hasGetUserMedia()) { alert('It is […]