Tag: ffmpeg

Node.js将Mp3stream式传输到http而不必保存文件

我正在尝试将stream式audio从youtube链接直接传输到http和node.js. 我的代码看起来像这样,我使用Express 4.0。 var express = require('express'); var router = express.Router(); var ytdl = require('ytdl'); var ffmpeg = require('fluent-ffmpeg'); var fs = require('fs'); router.get('/', function(req, res) { var url = 'https://www.youtube.com/watch?v=GgcHlZsOgQo'; var video = ytdl(url) res.set({ "Content-Type": "audio/mpeg" }) new ffmpeg({source: video}) .toFormat('mp3') .writeToStream(res, function(data, err) { if (err) console.log(err) }) }); module.exports = router; […]

FFMPEG在image2pipe模式下等待图像

我正在创build一个Node JS应用程序,它需要一个m-jpeg图像stream,并在运行中构build一个MPEG-1stream。 目前我正在利用fluent-ffmpeg。 蒸汽意欲是连续和长寿的。 图像以恒定的帧率自由stream动。 不幸的是,使用image2pipe和input-vcodec mjpeg ,似乎ffmpeg需要等待,直到所有的图像准备好,然后再开始处理。 当图像到达时,是否有任何方法可以立即将ffmpegpipe道插入并排出? 这是我目前的节点JS代码: var proc = new ffmpeg({ source: 'http://localhost:8082/', logger: winston, timeout: 0 }) .fromFormat('image2pipe') .addInputOption('-vcodec', 'mjpeg') .toFormat('mpeg1video') .withVideoBitrate('800k') .withFps(24) .writeToStream(outStream); 而ffmpeg调用它会产生: ffmpeg -f image2pipe -vcodec mjpeg -i – -f mpeg1video -b:v 800k -r 24 -y http://127.0.0.1:8082/

将videostream转换为audio时(w / FFMPEG&Node.js)设置内容长度

所以我正在构build一个程序,要求我拍摄一个video并将其转换为audio。 我目前正在通过node.js将audio直接传输到浏览器,但是我遇到了一个主要问题:我不知道如何找出我的audio有多less个字节。 结果,当我没有得到正确的内容长度时,浏览器一直在抛出net::ERR_CONTENT_LENGTH_MISMATCH 。 我尝试了几种策略,都失败了: 手动计算大小(秒*比特率(kbps)*(1024/8))。 这产生了一个近似的答案,因为我只知道长度到最近的几秒钟。 即使我比较接近,我仍然得到相同的MISMATCH错误。 将streampipe道传送到缓冲区,获取缓冲区的长度,并将缓冲区传送到浏览器 这可以工作,但是加载每首歌曲可能需要15-20秒。 这是非常慢,并在服务器上承受相当大的负载

创build一个洪stream的部分的缩略图

我试图在nodejs中使用torrent-stream库创build一个小应用程序来创buildvideo的缩略图,而不必实际下载整个文件。 我正在考虑只下载10个部分,其中我将提取一个图像,但是随后编码开始发挥作用:没有I-frame我不能从stream中提取图像,并且我无法知道在哪里我的框架是。 那么有关如何做到这一点的任何想法? 基本上我希望能创build10个小文件,然后我可以打开ffmpeg为了保存缩略图(这会给我10个缩略图,这是我想要的)。 我只是不知道如何处理stream。

使用ffmpeg / ffprobe创build使用php的波形json

我的服务器上有很多ogg&opus文件,需要根据需要生成json波形数值数组(如下所示)。 最近我发现了基于节点的波形 – util ,它使用ffmpeg / ffprobe来渲染一个JSON波形,并且完美地工作。 我决定如果有一个节点进程不断运行是我的问题的最佳解决scheme。 由于ffmpeg似乎能够处理任何我可以扔在它,我想坚持一个ffmpeg解决scheme。 我有三个问题: 1)是否有一个PHP的等价物? 我发现了一对夫妇生成的PNG图像,但没有一个生成JSON波形数值数组 2)有基于节点的解决scheme,而不是基于PHP的解决scheme(假设有一个基于PHP的解决scheme)的任何显着的优势? 3)有没有一种方法使用CLI ffmpeg / ffprobe来生成一个json波形? 我看到了所有-show_选项(-show_data,-show_streams,-show_frames),但没有看起来像它产生了我在找什么。 json波形需要采用以下格式: [0.0002,0.001,0.15,0.14,0.356 ….] 谢谢你们。

stream节点fluent-ffmpegstreammp4video

我正在尝试创buildvideostream服务器和客户端节点fluent-ffmpeg , express和ejs 。 而且有一段时间没有解决这个问题。 我想要做的是从一定时间开始播放video。 下面的代码使用Safari浏览器在Windows上,但与其他人做了几秒钟的循环或说 不支持video格式 服务器代码(run.js) : app.get('/video', function(req, res) { //define file path,time to seek the beegining and set ffmpeg binary var pathToMovie = '../videos/test.mp4'; var seektime = 100; proc.setFfmpegPath(__dirname + "/ffmpeg/ffmpeg"); //encoding the video source var proc = new ffmpeg({source: pathToMovie}) .seekInput(seektime) .withVideoBitrate(1024) .withVideoCodec('libx264') .withAspect('16:9') .withFps(24) .withAudioBitrate('128k') .withAudioCodec('libfaac') .toFormat('mp4'); //pipe […]

如何使用Meteor,CollectionFS和FFMPEG创buildvideo缩略图

我使用meteor与CollectionFS来存储video。 我需要一个转换来创build我的video缩略图。 Videos = new FS.Collection("videos", { stores: [ new FS.Store.FileSystem("thumbs", { transformWrite: function(fileObj, readStream, writeStream) { // What goes here? } }), new FS.Store.FileSystem("videos"), ], }); 我已经研究出如何使用ffmpeg来做到这一点: ffmpeg -i video.mp4 -vf "thumbnail,scale=640:360" -frames:v 1 thumb.png 但我不知道如何做到这一点与我给的readStream和输出writeStream。 下面是使用GraphicsMagick对图像进行处理的一个例子: Images = new FS.Collection("images", { stores: [ new FS.Store.FileSystem("thumbs", { transformWrite: function(fileObj, readStream, writeStream) { // Transform […]

Ffmpeg无法访问aws labmda上的文件

我正在使用ffmpeg在AWS Lambda上创buildvideo缩略图。 我在/ tmp目录中下载了这个文件,但是ffmpeg无法访问它并给出错误 [错误:元数据不包含持续时间,中止截图创build] 当我使用ffmpeg检查媒体信息时,它将输出结果 { ffmpegversion: 0, title: '', artist: '', album: '', track: '', date: '', durationraw: '', durationsec: 0, synched: false, major_brand: undefined, video: { container: '', bitrate: 0, codec: '', resolution: { w: 0, h: 0 }, resolutionSquare: { w: 0, h: NaN }, rotate: 0, fps: 0, stream: 0, […]

浏览器MediaRecorder API – video控制不工作/标头设置不正确?

我试图在浏览器中录制一个摄像头video,并保存在节点服务器上。 MediaRecorder API的方法 // CLIENT // Init MediaRecorder with camera stream recorder = new MediaRecorder(…) // Serialize data and send it to backend recorder.ondataavailable = (event) => { const reader = new FileReader(); reader.readAsArrayBuffer(event.data); reader.onloadend = function (event) { socket.emit('message', reader.result); }; } // BACKEND // Receive data and append it to the file client.on('message', […]

如何使用getSignedUrl()将Node.js fluent-ffmpeg屏幕截图的目标文件夹设置为您的AWS S3存储桶?

我正在编写一个程序,在我的Amazon S3存储桶中为一组.mp4video生成.png缩略图(在同一个文件夹中具有相同的名称)。 在这个例子中,我将为bucket中的/folder/file.mp4创build一个/folder/file.png。 我设法使用s3对象和getSignedUrl来设置源URL,如下所示: var srcurl = s3.getSignedUrl('getObject', { Bucket: 'bucket-name', Key: '/folder/file.mp4' }); 和 new ffmpeg({ source: srcurl }) .screenshots({ count: 1, filename: '%f'.substr(0, '%f'.indexOf('.')) + '.png', /* To shorten the long string that's returned */ folder: desturl, size: MAX_WIDTH + 'x' + MAX_HEIGHT }); 目标url必须与来源相同的文件夹。 所以我把它设置如下: var desturl = s3.getSignedUrl('putObject', { Bucket: 'bucket-name', […]