Articles of html5 video

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'\ […]

nodejs到<video>使用WebRTCstream式传输

我目前使用nodejs和expressionstreamvideo标签简单地等待app.getvideo标签的src地址,然后使用res.writeHead和res.write提供的数据。 我希望能够使用WebRTC做类似的事情,但延迟更低。 但是,如何做到这一点,并没有真正find好的信息资源,我有点困惑。 任何人都可以推荐任何好的例子,nodejs软件包等…可能有帮助吗? 我希望做一些事情: // Nodejs Server rtcServer.on('connection', function(connection) { var videoSource = getVideoDataSource(); videoSource.on('data', function(data) { connection.write(data); }); }); rtcServer.listen(8000); – // HTML Client <video src="???:8000"/>

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标签上播放 […]

videostream通过Websocket到<video>标签

我使用Node.js通过Websocket实时webmvideostream到一个网页,将在一个标签中播放它。 以下是来自服务器和客户端的代码: 服务器: var io = require('./libs/socket.io').listen(8080, {log:false}); var fs = require('fs'); io.sockets.on('connection', function (socket) { console.log('sono entrato in connection'); var readStream = fs.createReadStream("video.webm"); socket.on('VIDEO_STREAM_REQ', function (req) { console.log(req); readStream.addListener('data', function(data) { socket.emit('VS',data); }); }); }); 客户: <html> <body> <video id="v" autoplay> </video> <script src='https://localhost/socket.io/socket.io.js'></script> <script> window.URL = window.URL || window.webkitURL; window.MediaSource = window.MediaSource || […]

如何在nodejs中获取video的快照?

我正在尝试编写一个nodejs服务器,它需要一个时间input(可能是urlpath的一部分),然后在这个时间索引提供一个静止的video帧作为JPEG图片。 我可以用简单的Javascript轻松地做到这一点,但我不能在nodejs中做到这一点。 我知道我可能需要使用像canvas一样的canvas插件来做快照。 任何想法欢迎。 以下是我现在用Javascript做的事情: myjavascript.js function capture(video, scaleFactor) { if(scaleFactor == null){ scaleFactor = 1; } var w = video.videoWidth * scaleFactor; var h = video.videoHeight * scaleFactor; stdout("<br/> w: "+ w+ "<br/> h: "+ h); var canvas = document.createElement('canvas'); canvas.width = w; canvas.height = h; var ctx = canvas.getContext('2d'); ctx.drawImage(video, 0, 0, w, […]