小编Bru*_*ira的帖子

Android:同时录制和流媒体

这不是一个真正的问题,因为它是我尝试解决我所面临的最具挑战性功能之一的所有尝试.

我使用libstreaming库将实时视频流式传输到Wowza Server,我需要在SD卡内同时录制它.为了从社区中收集新的想法,我将在下面展示我的所有尝试.

将libstreaming流中的字节复制到mp4文件

发展

我们在libstreaming库中创建了一个拦截,将所有发送的字节复制到mp4文件中.Libstreaming通过LocalSocket将字节发送到Wowza服务器.它使用MediaRecorder访问摄像头和设备的麦克风,并将输出文件设置为LocalSocket的输入流.我们要做的是围绕从InputStream扩展的输入流创建一个包装器,并在其中创建一个File输出流.因此,每当libstreaming通过LocaSocket的输入流执行读取时,我们都会将所有数据复制到输出流,尝试创建有效的MP4文件.

障碍

当我们尝试读取文件时,它已损坏.我们意识到MP4文件中缺少元信息.特别是moov原子.我们试图延迟关闭流媒体,以便有时间发送这个标题(这仍然是一个猜测)但它没有用.为了测试这些数据的一致性,我们使用付费软件尝试恢复视频,包括标题.它变得可玩了,但它主要是绿屏.所以这成了一个不值得信赖的解决方案.我们还尝试使用"untrunc",一个免费的开源命令行程序,它甚至无法启动恢复,因为没有moov原子.

使用ffmpeg编译到android来访问相机

发展

FFMPEG有一个带有java接口的gradle插件,可以在Android应用程序中使用它.我们以为我们可以通过命令行访问摄像机(可能在"/ dev/video0"中)并将其发送到媒体服务器.

障碍

我们在尝试访问相机时收到错误"Permission Denied".解决方法是使设备具有访问权限,但它会使手机失去保修范围,并且可能会破坏它们.

使用ffmpeg编译到android结合MediaRecorder

发展

我们尝试通过MediaRecorder使FFMPEG流成为手机内部录制的mp4文件

障碍

FFMPEG无法流式传输尚未完成录制的MP4文件.

使用libfing编译到android的ffmpeg

发展

Libstreaming使用LocalServerSocket作为应用程序和服务器之间的连接,因此我们认为可以使用与LocalServerSocket本地地址连接的ffmpeg将流直接复制到SD卡内的本地文件.在流式传输开始之后,我们还运行了ffmpeg命令以开始将数据记录到文件中.使用ffmpeg,我们相信它会以正确的方式创建一个MP4文件,这意味着包含了moov原子头.

障碍

创建的"地址"不能通过命令行读取,作为手机内的本地地址.所以副本是不可能的.

使用OpenCV

发展

OpenCV是一个开源的跨平台库,为计算机视觉实验和应用程序提供构建块.它提供用于捕获,处理和呈现图像数据的高级接口.它有自己的API与设备摄像头连接,所以我们开始研究它,看它是否具有同时流和记录的必要功能.

障碍

我们发现库并没有真正定义为这样做,而是更像图像数学操作.我们甚至得到了使用libstreaming的建议(我们已经这样做了).

使用Kickflip SDK

发展

Kickflip是一种媒体流服务,为Android和IOS开发提供自己的SDK.它还使用HLS而不是RTMP,这是一种较新的协议.

障碍

他们的SDK要求我们创建一个带有摄像头视图的Activity,它占据设备的整个屏幕,打破了我们应用的可用性.

使用Adobe Air

发展

我们开始咨询Play商店中已经提供的应用程序的其他开发人员,这些应用程序已经流入服务器.

障碍

与这些开发人员取得联系后,他们再次保证使用这项技术无法同时录制和流式传输.更重要的是,我们必须使用Adobe Air从头开始重做整个应用程序.

UPDATE

的WebRTC

发展

我们在这个伟大的项目之后开始使用WebRTC .我们在NODEJS服务器中包含了信令服务器,并开始通过套接字进行标准握手.我们仍在通过webrtc在本地录制和流媒体之间切换.

障碍

Webrtc不适用于所有网络配置.除此之外,相机获取是所有本机代码,这使得尝试复制字节或拦截它变得更加困难.

android opencv ffmpeg stream webrtc

9
推荐指数
1
解决办法
2076
查看次数

错误:没有"framework:browserify"的提供者!(解决:框架:browserify)

我有一个Angularjs项目,我正在使用业力来运行测试.我遇到了一些问题,得到了这个错误:

ReferenceError: Can't find variable: require
at http://localhost:9876/base/src/test/bower_components/angular-animate/index.js?b8fe1c0a06b723a75c7e596fd8a86d91965f681c:1
Run Code Online (Sandbox Code Playgroud)

在一些论坛上,我被告知使用karma browserify,但我现在收到此错误:

    28 07 2015 22:41:15.573:WARN [preprocess]: Can not load "browserify", it is not registered!
      Perhaps you are missing some plugin?
    /Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:9
          throw error('No provider for "' + name + '"!');
                ^
    Error: No provider for "framework:browserify"! (Resolving: framework:browserify)
        at error (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:22:68)
        at Object.parent.get (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:9:13)
        at get (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:54:19)
        at /Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:128:20
        at Array.forEach (native)
        at Server._start (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:127:21)
        at invoke (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:75:15)
        at Server.start (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:92:18)
        at Function.Server.start (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:101:10)
        at Object.<anonymous> (/Applications/WebStorm.app/Contents/plugins/js-karma/js_reporter/karma-intellij/lib/intellijServer.js:10:8)
        at Module._compile (module.js:460:26)
        at …
Run Code Online (Sandbox Code Playgroud)

javascript jasmine angularjs browserify karma-runner

6
推荐指数
2
解决办法
4454
查看次数

Ionic + Jasmine + Tslint - 类型上不存在属性“和”

大家。我正在这个样板文件上构建一个 Ionic 应用程序。现在,我正在为特定页面构建测试,我正在使用 jasmine 来模拟提供程序并设置方法的预期行为。这就是beforeEach()方法的样子:

    beforeEach(() => {
          mockLoadingController = jasmine.createSpyObj('ModalController', ['create', 'present', 'dismiss']);
          mockLoadingController.create.and.returnValue(mockLoadingController);

          mockModalController =  jasmine.createSpyObj('LoadingController', ['create', 'present',
            'onDidDismiss', 'dismiss']);
          mockModalController.create.and.returnValue(mockModalController);

          mockGeolocation =  jasmine.createSpyObj('Geolocation', ['getCurrentPosition']);

          mockGeolocation.getCurrentPosition.and.callFake(( ) => {
            return {then: ( ) => { }};
          });
          mockEvents = jasmine.createSpyObj('Events', ['publish', 'subscribe']);
          TestBed.configureTestingModule({
            schemas: [CUSTOM_ELEMENTS_SCHEMA],
            providers: [
              { provide: NavController, useValue: mockNavController },
              { provide: LoadingController, useValue: mockLoadingController },
              { provide: ModalController, useValue: mockModalController },
              { provide: Geolocation, useValue: mockGeolocation },
              { provide: Events, …
Run Code Online (Sandbox Code Playgroud)

jasmine typescript ionic-framework tslint

5
推荐指数
2
解决办法
3274
查看次数

Capistrano/Rails 3.2.14/Sprockets - 未在生产中完成部署

我正在迁移几年前创建的Rails应用程序,并且很长时间没有将它部署到新服务器上.当时,我使用capistrano没有任何问题,现在,当我运行cap deploy时,我得到以下步骤失败:

  * executing "ls -1 /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest* | wc -l"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 727ms
  * executing "ls /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest*"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 783ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/deploy/mywebsite.com/releases/20150812101128; true"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 944ms
failed: "rvm_path=/home/deploy/.rvm /home/deploy/.rvm/bin/rvm-shell 'ruby-2.2.2' -c 'ls /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest*'" on 45.79.142.32
Run Code Online (Sandbox Code Playgroud)

我在几个地方读到有关sprockets更改清单文件名或类型的信息(从.sprockets-manifest到.manifest或其他),但我不知道如何以不是黑客的方式解决它.我不确定这是否是由于使用旧的Rails版本或其他东西.这是我使用的版本:

  • Ruby 2.2.2
  • Rails 3.2.14
  • Capistrano 2.15.6(带Rvm/capistrano)
  • 链轮2.2.1

capistrano ruby-on-rails ruby-on-rails-3 sprockets rvm-capistrano

3
推荐指数
1
解决办法
323
查看次数