标签: streaming

强制 AVPlayer 只播放音频/视频 HLS 流的音轨

在我的应用程序中,用户可以通过 AVPlayerItem 的 preferredPeakBitRate 属性在 HLS 流的多个带宽上限之间进行选择,但我想添加一个质量级别,其中仅通过网络加载流的音轨以节省带宽。

是否可以为视频流不相关或用户不需要的流实现纯音频流,而无需查看实际m3u8文件并自己查找音轨?

streaming http-live-streaming ios avplayer swift

5
推荐指数
0
解决办法
1034
查看次数

同时在Android上流式传输和录制视频

我正在寻找一个库,该库提供从 android 设备(5.1+)流式传输视频并同时录制的功能。

我尝试了 MediaRecorder - 这是在 android 上录制视频的常用方法 - 但使用它我无法通过 webrtc 或 rtsp 流式传输它,因为相机很忙。

目前我正在使用libstreaming。只需稍作修改,应用程序就可以同时记录和流式传输 rtsp。但是这个库在 MTK 和 SPRG 芯片组中缺乏对硬件编解码器的支持。

我想知道您是否可以推荐一个解决方案或另一个库。目前,lib 仅适用于带有 qcom 芯片组的 nexus 4。

video streaming android video-capture video-streaming

5
推荐指数
1
解决办法
3722
查看次数

如何将文件从 AWS S3 流式传输到 Zip 中

我正在使用PHP Flysystem包从我的AWS S3存储桶流式传输内容。特别是,我正在使用$filesystem->readStream.

我的问题

当我流式传输文件时,它以myzip.zip 结尾并且大小是正确的,但是当解压缩它时,它变成了myzip.zip.cpgz。这是我的原型:

header('Pragma: no-cache');
header('Content-Description: File Download');
header('Content-disposition: attachment; filename="myZip.zip"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
$s3 = Storage::disk('s3'); // Laravel Syntax
echo $s3->readStream('directory/file.jpg');
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

副题

当我流式传输这样的文件时,是否:

  1. 完全下载到我服务器的 RAM 中,然后传输到客户端,或者
  2. 它是否会以块的形式保存在缓冲区中,然后传输到客户端?

基本上,如果我有数十 GB 的数据被流式传输,我的服务器是否会负担沉重?

php streaming zip amazon-s3 amazon-web-services

5
推荐指数
1
解决办法
2264
查看次数

为我们的流媒体事件构建实时规则引擎的最佳方法

我们正处于构建物联网云平台项目的初期。有一些众所周知的部分可以实现完整的物联网平台解决方案。其中之一是实时规则处理/引擎系统,它需要了解流事件与最终用户以可读格式(SQL 或 Drools if/when/then 等)动态定义的任何规则相匹配。

我很困惑,因为互联网上有很多产品、项目(Storm、Spark、Flink、Drools、Espertech 等),所以考虑到我们有 3 人的开发团队(初级、中高级、高级),什么是最好的选择?

  • 选择 Apache Flink 等流媒体项目之一并学习好?
  • 选择一个完整的解决方案(AWS、Azure 等)

streaming rule-engine complex-event-processing iot flink-cep

5
推荐指数
1
解决办法
5615
查看次数

REST 流 JSON 输出

我们有需要发回 JSON 输出的 JAX RS 实现。但是响应大小是巨大的。并且客户端同步期望相同。因此我尝试使用 StreamingOutput ......但客户端并没有真正以块的形式获取数据。以下是示例片段:

服务器端

streamingOutput = new StreamingOutput() {

    @Override
    public void write(OutputStream out) throws IOException, WebApplicationException {
        JsonGenerator jsonGenerator = mapper.getFactory().createGenerator(out);
        jsonGenerator.writeStartArray();
        for(int i=0; i < 10; i++) {
            jsonGenerator.writeStartObject();

            jsonGenerator.writeStringField("Response_State", "Response State - " + i);
            jsonGenerator.writeStringField("Response_Report", "Response Report - " + i);
            jsonGenerator.writeStringField("Error_details", "Error Details - " + i);

            jsonGenerator.writeEndObject();;
            jsonGenerator.flush();

            try {
                Thread.currentThread().sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        jsonGenerator.writeEndArray();

        jsonGenerator.close();

    }
};

return Response.status(200).entity(streamingOutput).build();
Run Code Online (Sandbox Code Playgroud)

客户

HttpClient client = …
Run Code Online (Sandbox Code Playgroud)

java streaming json jax-rs output

5
推荐指数
1
解决办法
6515
查看次数

响应没有“内容长度”标头时的 AVURLAsset

我的 iOS 应用程序使用 AVPlayer 从我的服务器播放流音频并将其存储在设备上。我实现了 AVAssetResourceLoaderDelegate,所以我可以拦截流。我改变了我的方案(从http一个假方案,这样 AVAssetResourceLoaderDelegate 方法被调用:

func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool

我跟着这个教程:

http://blog.jaredsinclair.com/post/149892449150/implementing-avassetresourceloaderdelegate-a

在那里,我将原始方案放回原处,并创建一个会话以从服务器提取音频。当我的服务器为Content-Length流式音频文件提供(以字节为单位的音频文件大小)标头时,一切正常。

但有时我会在无法提前提供长度的情况下流式传输音频文件(比如直播播客流)。在这种情况下,AVURLAsset 将长度设置为-1并失败:

"Error Domain=AVFoundationErrorDomain Code=-11849 \"Operation Stopped\" UserInfo={NSUnderlyingError=0x61800004abc0 {Error Domain=NSOSStatusErrorDomain Code=-12873 \"(null)\"}, NSLocalizedFailureReason=This media may be damaged., NSLocalizedDescription=Operation Stopped}"

我无法绕过这个错误。我试图采取一种骇人听闻的方式,提供 fake Content-Length: 999999999,但在这种情况下,一旦下载了整个音频流,我的会话就会失败:

Loaded so far: 10349852 out of 99999999 The request timed out. //Audio file got downloaded, its size is 10349852 //AVPlayer tries to get the next chunk and then fails with …

audio streaming ios avplayer avurlasset

5
推荐指数
1
解决办法
1615
查看次数

Koa.js 和流媒体。你如何处理错误?

有人使用 koa.js 和流吗?

考虑这个例子

const fs = require('fs');
const Koa = require('koa');

const app = new Koa();

app.use(async (ctx) => {
  ctx.body = fs.createReadStream('really-large-file');
});

app.listen(4000);
Run Code Online (Sandbox Code Playgroud)

如果用户中止请求我得到

  Error: read ECONNRESET
      at _errnoException (util.js:1024:11)
      at TCP.onread (net.js:618:25)
Run Code Online (Sandbox Code Playgroud)

或者

  Error: write EPIPE
      at _errnoException (util.js:1024:11)
      at WriteWrap.afterWrite [as oncomplete] (net.js:870:14)
Run Code Online (Sandbox Code Playgroud)

处理此类错误的正确方法是什么?

PS请求中止后我没有错误

const fs = require('fs');
const express = require('express');

const app = express();

app.get('/', (req, res) => {
  fs.createReadStream('really-large-file').pipe(res);
});

app.listen(4000);
Run Code Online (Sandbox Code Playgroud)

我试过的PPS

app.use(async (ctx) => {
  fs.createReadStream('really-large-file').pipe(ctx.res);
  ctx.respond = …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling streaming koa koa2

5
推荐指数
1
解决办法
1251
查看次数

RabbitMQ 或 Kafka 是否适合实时仪表板应用程序?

我们面临着一个关键的决定,我们需要为实时遥测处理和监控系统选择正确的工具。

该系统有两个主要目的:

  1. 在仪表板 UI 应用程序中显示实时遥测数据(高刷新率)
  2. 处理来自多个来源的大量数据

我们有两个顾虑:

  • 在我们的用例中,与我们目前所发现的相比,大多数数据消费者将是 Web 客户端 -> RabbitMQKafka都主要用于基于云的平台,其中大多数数据消费者是服务而不是客户端。

  • 通常来自 Kafka 或 RabbitMQ 的数据消费者是负载均衡的,并且不会为每个客户端复制消息。

.

  1. Kafka 或 RabbitMQ 是否适合为每个客户端复制数据的环境?
  2. 这种工具是否适合在为每个客户端复制消息的同时处理大量客户端?
  3. 这种工作有更好的工具吗?

谢谢 :)

streaming rabbitmq apache-kafka

5
推荐指数
1
解决办法
3582
查看次数

“有状态”和“无状态”系统有什么区别?

Apache Spark吹嘘其运营商(节点)是“无状态的”。这允许 Spark 的架构使用更简单的协议来处理诸如恢复、负载平衡和处理落后者之类的事情。

另一方面,Apache Flink将其运算符描述为“有状态的”,并声称有状态对于机器学习等应用程序是必要的。然而,Spark 程序能够在不维护“状态”的情况下传递信息并在 RDD 中维护应用程序数据。

这里发生了什么?Spark 不是真正的无状态系统吗?或者 Flink 断言状态性对于机器学习和类似应用程序至关重要?还是这里有一些额外的细微差别?

我觉得我并没有真正理解“有状态”和“无状态”系统之间的区别,如果能解释一下,我将不胜感激。

streaming state apache-spark spark-streaming apache-flink

5
推荐指数
1
解决办法
3011
查看次数

通过@Bean 提供的 RestTemplateBuilder 流式上传缓冲完整文件

我正在构建一个用于上传大文件(数 GB)的反向代理,因此想要使用不缓冲整个文件的流模型。大缓冲区会引入延迟,更重要的是,它们可能会导致内存不足错误。

我的客户端类包含

@Autowired private RestTemplate restTemplate;

@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {

    int REST_TEMPLATE_MODE = 1; // 1=streams, 2=streams, 3=buffers

    return 
        REST_TEMPLATE_MODE == 1 ? new RestTemplate() :
        REST_TEMPLATE_MODE == 2 ? (new RestTemplateBuilder()).build() :
        REST_TEMPLATE_MODE == 3 ? restTemplateBuilder.build() : null;
}
Run Code Online (Sandbox Code Playgroud)

public void upload_via_streaming(InputStream inputStream, String originalname) {

    SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
    requestFactory.setBufferRequestBody(false);
    restTemplate.setRequestFactory(requestFactory);

    InputStreamResource inputStreamResource = new InputStreamResource(inputStream) {
        @Override public String getFilename() { return originalname; }
        @Override public long contentLength() { return -1; …
Run Code Online (Sandbox Code Playgroud)

streaming spring reverse-proxy resttemplate spring-boot

5
推荐指数
1
解决办法
1866
查看次数