Tag: ffmpeg

Crossdevice编码静态文件在浏览器中使用FFMPEGstream(分段h264?)

我在NodeJS中构build了一个媒体中心应用程序, (你可以在Github上查看: https : //github.com/jansmolders86/mediacenterjs ) 我正在使用FFMPEG将本地(静态)电影转码为一个stream,然后发送到浏览器。 起初,我使用了Flash在浏览器中工作的h264,但我真的需要它在Android上工作(所以没有Flash),最好在Raspberry Pi上工作。 但是让它在所有设备上播放都让我绝对疯了! 我已经从无数小时阅读文章,教程和堆栈溢出post中得到了所有这些难题,这使我得出结论,我需要产生以下结论: 使用video编解码器H264转码为MP4 移动moovatom'-movflags'来制作MP4stream式传输 将stream分段,Apple也可以播放stream。 但是没有办法。 每次我产生一系列FFMPEG设置,要么不工作,要么在某些设备上工作,而不是在所有设备上工作。 我的一些失败的尝试在哪里: 我的闪光尝试 – > 主要问题(不在IOS中运行): '-y','-ss 0','-b 800k','-vcodec libx264','-acodec mp3'\ '-ab 128','-ar 44100','-bufsize 62000', '-maxrate 620k'\ metaDuration,tDuration,'-f flv 我的HLS尝试 – > 主要问题(不在浏览器中运行): '-r 15','-b:v 128k','-c:v libx264','-x264opts level=41'\ '-threads 4','-s 640×480','-map 0:v','-map 0:a:0','-c:a mp3'\ '-b:a 160000','-ac 2','-f hls','-hls_time 10','-hls_list_size 6'\ […]

在Windows上安装gifify

所以gifify是一个非常好的脚本,通过命令行将video转换成gif: https : //github.com/vvo/gifify 我渴望在Windows 10机器上正常工作。 我对窗口相当陌生,编程也相对较新,但是我能够运行一些东西,但遇到了一个问题。 这是我做的: 安装了node.js + npm 使用npm安装FFmpeg 使用npm安装ImageMagick(我想我做错了,可能只安装了包装)。 下载giflossy。 它需要build立(?) 安装了Visual Studio 2015,试图使用nmake构build它,并得到这个错误: NMAKE : fatal error U1073: don't know how to make 'win32cfg.h' 我使用的命令是: PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin> .\nmake -f "C:\Users\Robert's Workstation\.npm-global\node_modules\giflossy-lossy-1.82.1\src\Makefile.w32" 会真的很感谢一些帮助:D

HLS使用节点JS进行stream式传输

我正在尝试使用node.jsstream式传输HLS内容。 不知何故,它不工作。 如果有人帮助我,这将会非常有帮助。 问题:试图从node.js服务HLS内容(不是直播stream,而是一组.ts文件和.m3u8播放列表 , 换句话说就是VOD内容 ) 文件夹结构 stream_test |— app.js |— node_modules |— streamcontent |— test.m3u8 |— segment0.ts |— segment1.ts . . . |— segment127.ts 我的app.js看起来像这样 var http = require('http'), url = require('url'), path = require('path'), fs = require('fs'); var mimeTypes = { "html": "text/html", "jpeg": "image/jpeg", "jpg": "image/jpeg", "png": "image/png", "js": "text/javascript", "css": […]

我如何将一个预编译的二进制文件与电子打包在一起

我正在尝试包含一个预编译的二进制文件和一个电子应用程序。 我开始使用电子快速启动应用程序,并修改了我的renderer.js文件,以包含将文件放在主体上时触发的代码: spawn = require( 'child_process' ).spawn, ffmpeg = spawn( 'node_modules/.bin/ffmpeg', ['-i',clips[0],'-an','-q:v','1','-vcodec','libx264','-y','-pix_fmt','yuv420p','-vf','setsar=1,scale=trunc(iw/2)*2:trunc(ih/2)*2,crop=in_w:in_h-50:0:50', '/tmp/out21321.mp4']); ffmpeg.stdout.on( 'data', data => { console.log( `stdout: ${data}` ); }); ffmpeg.stderr.on( 'data', data => { console.log( `stderr: ${data}` ); }); 我已将预编译的ffmpeg二进制文件放入node_modules/.bin/ 。 在开发面板中一切都很好,但是当我使用电子包装器来设置应用程序时,触发时会向控制台抛出一个spawn error ENOENT 。 我的确发现了一个非常类似的问题 ,但这个问题似乎没有明确的答案。 电子包装商的npm页面确实表明它们可以捆绑在一起,但我找不到有关如何这样做的文件。

fluent-ffmpeg缩略图创build错误

我尝试创build一个stream利的ffmpegvideo缩略图这里是我的代码 var ffmpeg = require('fluent-ffmpeg'); exports.thumbnail = function(){ var proc = new ffmpeg({ source: 'Video/express2.mp4',nolog: true }) .withSize('150×100') .takeScreenshots({ count: 1, timemarks: [ '00:00:02.000' ] }, 'Video/', function(err, filenames) { console.log(filenames); console.log('screenshots were saved'); }); } 但我不断收到这个错误 "mate data contains no duration, aborting screenshot creation" 任何想法为什么, 顺便说一下,在Windows上,我把ffmpeg文件夹放在c / ffmpeg中,而且我把ffmpeg / bin添加到了我的环境中,我不知道fluent-ffmpeg是否需要知道ffmpeg的path,但是我可以成功用下面的代码创build一个缩略图 exec("C:/ffmpeg/bin/ffmpeg -i Video/" + […]

在Heroku上使用NodeJS进行HTML5audio转换

我有一个HTML5应用程序,允许用户上传和播放他们的audio文件。 服务器是在Heroku上运行的Node。 为了允许跨浏览器的audio播放,我所理解的是,我必须至less保持每个audio文件的两种格式,比如.mp3和.ogg。 所以,我需要在服务器端自动转码文件。 问题是Heroku不运行ffmpeg。 我发现这个项目创build了一个支持ffmpeg的heroku自定义buildpack,但似乎是Rails应用程序: https : //github.com/dzello/ffmpeg-heroku 。 我正在考虑运行外部服务器进行转码,我的nodejs应用程序将文件发送到该服务器,进行转码,然后重新上传我的nodejs服务器上的新文件。 但是我不知道如何build立这样一个服务器,是否已经有了一个可以做这种工作的现成解决scheme呢? 所以,这是我的问题: 1- Is there a solution to run ffmpeg on heroku+nodejs? 2- How can I set up a transcoding server that communicates with my nodejs+heroku server? 谢谢!

Node.js Webm直播stream服务器:与<video>标记的问题

我使用Node.js作为stream服务器来传输FFMPEG发送的实时Webmvideo(从另一个应用程序执行,stream通过HTTP完成),并由使用该标记的Web应用程序接收。 这是我在做什么:FFMPEG使用以下命令stream接收的帧: ffmpeg -r 30 -f rawvideo -pix_fmt bgra -s 640×480 -i \\.\pipe\STREAM_PIPE -r 60 -f segment -s 240×160 -codec:v libvpx -f webm http://my.domain.com/video_stream.webm (stream来自使用Kinect作为源的应用程序,并通过pipe道与FFMPEG通信,发送一个接一个的帧) 当Web应用程序连接时,它立即从服务器接收到这个响应: HTTP/1.1 200 OK X-Powered-By: Express content-type: video/webm cache-control: private connection: close Date: Fri, 06 Dec 2013 14:36:31 GMT 和一个WebM标题(以前存储在服务器上,具有相同的源stream的分辨率和帧速率,并在VLC上进行testing)被立即追加。 然后webapp开始接收由FFMPEGstream传输的数据。 这是Mkvinfo GUI的屏幕截图,显示标题的字段: 但是,即使Chrome控制台的“networking”标签显示存在实际的数据stream(即stream式传输不完全是垃圾,否则连接将被丢弃),播放器也不会显示任何内容。 我们尝试手动将我们的标题添加到Web应用程序收到的转储的video,VLC播放它就好了,但这不是标签发生的情况。 什么会导致这个问题? 我们是否错过了FFMPEG方面的编码,或者我们在头上存储了错误的值(或者它们不够)? PS:我不能依靠外部stream服务器。 PPS:我们尝试了以下实验: 使用存储在服务器中的video标题代替video标题使video可以在vlc和video标签上播放 […]

来自input文件数组的fluent-ffmpeg

我想使用fluent-ffmpeg来创build一个目录的最后n个图像或数据库条目的video。 哪个是正确的语法? 这些是我的尝试: 模仿shell命令 ffmpeg() .addInput('ls *png | tail -n 17') .inputOptions("-pattern_type glob") .output("output.mp4").run() 但不接受shell命令; 空间分离的path ffmpeg() .addInput('a*.png b*.png ') .inputOptions("-pattern_type glob") .output("output.mp4").run() 但不接受空格分隔的文件列表; 图像patharrays ffmpeg() .addInput(array) // ['aa.png', 'a1.png',,,'bbb.png'] .inputOptions("-pattern_type glob") .output("output.mp4").run() 但它不接受数组。 编辑: 此外,从合并多个video使用节点stream利ffmpeg ,我可以添加多个input使用文件数组 var ffmpeg= require('fluent-ffmpeg'); var f=ffmpeg() pngarr.forEach(p => f.input(p)) /// pngarr is my array of png paths 但是运行 f.output("./output.mp4").run() […]

是否有可能从单个stream式字节范围块创build新的mp4文件?

如果我在支持字节范围的服务器上有远程mp4文件,是否可以检索单个字节范围并从该范围数据创build新的/自包含的mp4? 如果我尝试使用fs.createWriteStream(remoteFilename)将返回的字节范围数据直接写入mp4文件,则不会获取需要播放的video元数据(持续时间,维度等)。 当我得到一个字节范围,从0开始,以XX结束时,输出mp4是可播放的,但是会有整个video长度的持续时间元数据,并且当字节范围在剩余时间内完成时将冻结屏幕时间。 还有什么我可以采取一个字节范围,并从该stream对象创build一个独立的.mp4文件? 整个过程就是避免下载整个10分钟的文件,然后才能使用ffmpeg制作5秒的剪辑。 如果我可以计算和下载字节范围,应该有办法将它写入独立的MP4文件。 预先感谢您提供的任何帮助。

如何在node.js中生成video缩略图?

我正在用node.js构build一个应用程序,我成功上传了video,但是我需要为它生成一个video缩略图,目前我使用node exec来执行ffmpeg的系统命令来制作缩略图 exec("C:/ffmpeg/bin/ffmpeg -i Video/" + Name + " -ss 00:01:00.00 -r 1 -an -vframes 1 -f mjpeg Video/" + Name + ".jpg") 这段代码来自http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-resumable-video-uploade-in-node-js/ 上面的代码生成了一个jpg文件,但它不是一个缩略图,但一个video屏幕截图,我不知道是否有任何其他方法来生成video缩略图,或如何执行ffmpeg命令做一个真正thumbanil(resize),我更喜欢PNG文件,请帮助!