我无法弄清楚如何在客户端上使用FluorineFx将音频流从客户端发布到服务器.我们希望通过已建立的NetConnection将记录的音频数据从客户端传输到流.FluorineFx中有一个NetStream类,但它没有发布方法.FluorineFx中的NetStream类只有play方法.但据我所知,这会在客户端上播放来自服务器的流.
发布是不是在FluorineFx中实现还是我错过了什么?
有没有可用的开源(首选)或商业图书馆用于动态分段和视频流到iPhone/iPad?
此外,是否有支持此功能的开源/商用服务器(替代Wowza)?
我有相当多的可流传输数据(> 100MB),为了压缩,我想在http服务器上托管一个zipfile.所以这个zipfile包含一个文件.
现在java客户端可以通过http流式传输数据,即使它是打包在zipfile中的吗?
根据维基百科,ZIP不是顺序...
http://en.wikipedia.org/wiki/ZIP_(file_format)#Structure
如果这仍然可能以某种方式,那么如何?
编辑:关于gzip:正如我所说的,我使用自定义的java客户端(不是webbrowser)是java http实现中的gzip吗?
我正在开发一个仅限会员的网站,需要保护其上可用的视频网址,以便它们不会被共享或传递给非成员.
我听说过URL屏蔽,但不知道如何做到这一点.或者还有另一种方式吗?
基本上,视频将保存在远程服务器(vps)上或通过Amazon S3保存,该网站将调用视频并在流媒体播放器,JW播放器或我能找到的任何可以保护视频的播放器中播放视频.
有谁知道如何做到这一点?或者知道能为我做这件事的服务?
谢谢
TT
所以我正在做的是编写WSGI流服务,该服务利用迭代器中包含的Queue来实现多播推送.以下是该服务的简化模型:
# this is managed by another thread
def processor_runner():
generator = SerialMessageGenerator()
for message in generator:
for client in Processor.connections:
client.put(message)
# this is managed by twisted's wsgi implementation
def main(environ, start_response):
queue = Queue()
Processor.connections.append(queue)
status = '200 OK'
response_headers = [
('Content-Type', 'application/json'),
('Transfer-Encoding', 'chunked')
]
start_response(status, response_headers)
return iter(queue.get, None)
Run Code Online (Sandbox Code Playgroud)
并且这与作为WSGI服务器的扭曲效果很好(顺便说一下,串行生成器是由进程间队列连接到处理器的独立进程).我的问题是如何检测客户端何时断开连接并将其从队列中删除?我虽然将队列添加为客户端套接字的元组,即(套接字,队列),然后在执行put之前检查套接字是否仍然连接.但是,我不确切地知道从环境中获取什么.在我将某些东西放在一起之前,是否有任何人有这样做的经验?
更新
这是我最终采用的解决方案:
class IterableQueue(Queue):
def __init__(self):
Queue.__init__(self) # Queue is an old style class
ShellProcessor.connections.append(self)
def __iter__(self):
return iter(self.get, None)
def close(self):
self.put(None)
self.task_done()
ShellProcessor.connections.remove(self)
Run Code Online (Sandbox Code Playgroud) 我是FFmpeg的新手,正在努力解码可以作为uint8_t数组获得的H264数据包.
经过多次调查,我认为它应该能够将数组放入如下所示的AVPacket中
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
Run Code Online (Sandbox Code Playgroud)
并通过avcodec_decode_video2()进行解码.代码的一部分就像
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
Run Code Online (Sandbox Code Playgroud)
我想我正确设置了所有必需的属性,但这个函数只返回-1 :(
我刚发现-1来自
ret = avctx-> codec-> decode(avctx,picture,got_picture_ptr,avpkt);
在avcodec_decode_video2();
实际上,我想知道的是我是否可以通过avcodec_decode_video2()解码H264数据包(没有RTP头).
我在这里先向您的帮助表示感谢.
/////////// 添加
好的,我还在努力寻找解决方案.我现在正在做的是下面的内容
**该RTP流中的H264流由FU-A编码
收到RTP数据包
查看RTP头的第二个字节是否> 0表示它是第一个数据包(可能会被跟踪)
看看下一个RTP数据包的第二个字节是否也> 0,那么这意味着前一个帧是一个完整的NAL,或者如果这个<0,则该数据包应该附加到前一个数据包.
删除数据包的所有RTP头,使其只有FU指示符| FU标题| NAL
尝试用avcodec_decode_video2()播放它
但它只返回-1 .....我是否应该删除FU指示器和标题?
任何建议将非常感谢
提前致谢.
所有当前的FLAC流实现(例如带有Icecast的Edcast)似乎在流式传输时使用Ogg作为FLAC的容器.
我已经完成了一些通过HTTP传输FLAC的测试,它似乎在VLC中运行得很好.FLAC似乎是以这样一种方式构建的,即帧可以独立存在,使其能够抵御流损坏和/或丢帧.鉴于此,我不太明白为什么在Ogg中包装FLAC是必要的.
我们有一些数据库调用可以轻松地传输10万条记录。我们遇到的问题是,每当我们使用这些流之一时,它就会挂住CPU,并似乎阻塞了所有其他进程。
我尝试了几种不同的技巧来减轻这种情况,但是现在有点卡住了。这是我最近一次尝试将流传输到使用它的Transform的尝试process.nextTick。
var stream = require('stream');
var util = require('util');
function StreamThrottler() {
stream.Transform.call(this, { objectMode: true });
}
util.inherits(StreamThrottler, stream.Transform);
StreamThrottler.prototype._transform = function(chunk, encoding, cb) {
process.nextTick(function() {
console.log('chunk');
// note: I'm intentionally not pushing the chunk
// onto the stream for testing
cb();
});
};
StreamThrottler.prototype._flush = function(cb) {
cb();
};
var streamThrottler = new StreamThrottler();
// now the db call
this.largeDatabaseResultStream().pipe(streamThrottler);
Run Code Online (Sandbox Code Playgroud)
我注意到这个 Node.js问题可能相关,也可能不相关。
有人对如何解决这个问题有其他想法吗?
我试图成功加载并播放chrome中的音频文件,但我无法向后播放:
audio = new Audio('http://mathweirdo.com/bingo/audio/buzzer.mp3');
audio.playbackRate = -1;
audio.currentTime = audio.duration; // I have tried ommiting this line
audio.play()
Run Code Online (Sandbox Code Playgroud)
这不会产生声音,只会发生一次timeupdate事件.
我需要在JSON中建模1,000,000多个数据点.我在想两种方法:
a)对象数组:
[{time:123456789,value:1432423},{time:123456790,value:1432424},....]
Run Code Online (Sandbox Code Playgroud)
要么
b)嵌套数组
[[123456789,1432423],[123456790,1432424],....]
Run Code Online (Sandbox Code Playgroud)
天真地比较这两种方法,感觉后者更快,因为它使用更少的字符,但描述性较差.b真的比一个快吗?你会选择哪一个?为什么?
有第三种方法吗?