标签: video-streaming

在 iOS 上通过 WiFi 和蓝牙传输视频

这个问题非常普遍,因为我是 iOS、视频流和蓝牙方面的新手(这将是一个有趣的项目)。

基本上,我希望能够通过 WiFi 或蓝牙(具体取决于可用的设备)将低分辨率视频从一台 iOS 设备传输到另一台 iOS 设备。Bonjour 用于初始服务发现。(我知道通过蓝牙传输视频流并不理想,但这是该项目的要求之一)

因此,问题是可以使用什么视频流框架/库来最大化 WiFi 流视频和蓝牙流视频之间共享的代码量。

streaming bluetooth video-streaming wifi ios

4
推荐指数
1
解决办法
7377
查看次数

在 iOS 设备上以编程方式限制 HLS 流的比特率

我有一个高清视频,正在流式传输到 iOS 应用程序。我希望允许用户能够限制最大流质量(低、中、高),考虑到以最大比特率流式传输时视频为几 GB。同样,出于明显的数据上限原因,我想自动选择基于蜂窝网络与 WiFi 连接的设置。

我可以通过访问 来获取当前比特率AVPlayerItemAccessLogEvent,但在强制使用较低质量的流时却迷失了方向。

这对于 HLS 来说是可能的吗?谢谢!

video-streaming http-live-streaming ios avplayer

4
推荐指数
1
解决办法
3536
查看次数

通过 HTML5 视频元素进行 Java 多媒体流传输

我试图让我的 Java 后端将视频文件(MP4 等)“流式传输”到浏览器。我担心我必须编写非常复杂的、低级的 NIO 类型代码,例如:

public class VideoController extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
        File f = new File("/opt/videos/video19394.mp4");
        PrintStream ps = resp.getWriter();

        while(still reading f) {
            writeTheVideoBytesToStream(f, ps);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来这一切都是由 HTML5 元素解决的<video/>是吗??)。这样,从客户端,我可以指定:

<video width="500" height="500" url="http://myapp.example.com/videos/19394" />
Run Code Online (Sandbox Code Playgroud)

然后,在服务器端,即使是像 一样简单的内容,我也可以指定 URL 请求(例如)和位于 的服务器上的 MP4 文件web.xml之间的映射。还有http://myapp.example.com/videos/19394/opt/videos/video19394.mp4<video/>元素只是自动处理事情。

我在这里是否正确,或者即使我使用了<video/>,我仍然需要在服务器上实现低级字节/套接字流内容?

html java video servlets video-streaming

4
推荐指数
1
解决办法
1万
查看次数

使用 gstreamer 将本地 mpeg-ts 文件流式传输到 udp

我需要使用 gstreamer 广播 mpeg-ts 视频文件而不对其进行转码。视频编码为:H264 - MPEG-4 AVC(第 10 部分)(h264)

我尝试过使用

gst-launch-1.0 filesrc location=my_video.ts ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=49444
Run Code Online (Sandbox Code Playgroud)

和一起玩

gst-launch-1.0 udpsrc caps=" application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96,ssrc=(uint)2674837201,clock-base=(uint)2959668548,seqnum-base=(uint)14300" port=49444 ! rtph264depay ! decodebin ! autovideosink
Run Code Online (Sandbox Code Playgroud)

但我在接收方的视频已损坏(但它仍然与原始视频有点相似):

在此输入图像描述

并且接收者的控制台中出现了很多警告:

WARNING: from element /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: Could not decode stream.
Additional debug info:
gstrtph264depay.c(1205): gst_rtp_h264_depay_process (): /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:
Undefined packet type
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我猜问题出在elementcaps的参数上udpsrc,因为我刚刚从网络上的一些示例中复制粘贴了它。如果这是问题所在,我怎样才能找到正确的参数值caps

video-streaming gstreamer

4
推荐指数
1
解决办法
1万
查看次数

嵌入式 Vimeo 视频进度跟踪

在我的一个网站上,我使用 vimeo 视频链接来显示视频。现在我需要跟踪视频进度。例如学习者在该特定页面上花费的时间或用户观看视频的百分比。是否可以在 JavaScript 中跟踪这个

vimeo video-streaming

4
推荐指数
1
解决办法
3111
查看次数

Android - ExoPlayer 2 离线播放 DRM (widevine)

我正在尝试为 ExoPlayer 2 实现离线 DRM 支持,但遇到一些问题。

我找到了这段对话。ExoPlayer 1.x 有一些实现,以及如何将该实现与 ExoPlayer 2.x 一起使用的一些步骤。

我对使用OfflineDRMSessionManager哪个工具有疑问DrmSessionManager。在该示例中,DrmSessionManager 是从 ExoPlayer 1.x 导入的。如果我从 ExoPlayer 2 导入它,那么我在编译它时就会遇到问题。我的方法(open()、close()、..)有问题@Override,这些方法不在新的 DrmSessionManager 中,并且有一些新方法:acquireSession()、 ... 。

android drm video-streaming exoplayer exoplayer2.x

4
推荐指数
1
解决办法
7199
查看次数

Golang 和 ffmpeg 实时流输入/输出

我是 Go 新手!

我正在做一个简单的测试,从 ffmpeg 读取输出并写入文件。

我知道我可以用不同的方式做到这一点,只需转换,但这是一个项目的开始,我想稍后操作读取的字节,更改它们,然后将它们发送到输出。输入将是 UDP,输出也将是 UDP,也就是说,我将得到 ffmpeg 输出,我将按照我希望的方式处理字节,然后将这些字节作为输入扔到另一个 ffmpeg 进程中,其输出为 UDP出色地。

通过这个简单的测试,文件的结果无法在 VLC 中运行,我相信我在输出文件中正确写入了字节,但输出文件始终比输入文件少 1MB。

我需要一些帮助来阐明编写我正在做的测试的最佳方法是什么,基于我可以离开这个地方。我不知道这是否完全错误,但我的印象是确实如此。

输入文件是 4K、h264 的视频,我相信输出应该是相同的,因为在这个简单的测试中,我只是读取文件中写入的 cmd 中的内容。

按照代码进行分析:

package main

import (
    "os/exec"
    "os"
)

func verificaErro(e error) {
    if e != nil {
        panic(e)
    }
}

func main() {
    dir, _ := os.Getwd()

    cmdName := "ffmpeg"
    args := []string{
        "-hide_banner",
        "-re",
        "-i",
        dir + "\\teste-4k.mp4",
        "-preset",
        "superfast",
        "-c:v",
        "h264",
        "-crf",
        "0",
        "-c",
        "copy",
        "-f", "rawvideo", "-",
    }
    cmd := exec.Command(cmdName, args...)

    stdout, …
Run Code Online (Sandbox Code Playgroud)

udp ffmpeg go video-streaming

4
推荐指数
1
解决办法
8545
查看次数

使用 HTML5 的 MPEG-DASH 自适应流媒体在 Windows Chrome/Mozilla 中不起作用

我对 MPEG-DASH 自适应流媒体完全陌生。我正在尝试在浏览器中创建一个视频播放器dash.js。我参考了一些有用的MPEG-DASH Adaptive Streaming文档。这些链接是

通过上述文档,我创建了一个示例 HTML 文件。

<!DOCTYPE html>
<html>
<head>
    <title>Adaptive Streaming in HTML5</title>
    <style>
        video {
        width: 640px;
        height: 360px;
        }
    </style>
</head>
<body>
    <div>
        <h1>Adaptive Streaming with HTML5</h1>
        <video id="videoplayer" controls></video>
    <div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>    
    <!-- DASH-AVC/265 reference implementation -->
    <script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script>
    <script>
    <!--setup the video element and attach it to the Dash player-->
            (function(){
                var url = "https://dash.akamaized.net/envivio/EnvivioDash3/manifest.mpd";
                var player = dashjs.MediaPlayer().create();
                player.initialize(document.querySelector("#videoPlayer"), url, true);
            })();
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但运行 …

html javascript azure video-streaming mpeg-dash

4
推荐指数
1
解决办法
6398
查看次数

如何停止将 opencv 帧传输到浏览器

我正在尝试将 opencv 帧流式传输到浏览器。经过研究,我发现了米格尔的教程: https://blog.miguelgrinberg.com/post/video-streaming-with-flask/page/10

让我分解一下我想要实现的目标:在主页上,我尝试使用 opencv 实时流式传输 opencv 帧,在另一个页面上,我需要使用网络摄像头拍照。

问题:使用 Miguel 流式传输到浏览器的方式,启动无限线程,在这种情况下,当我想在另一页上拍照时不会释放相机。切换回主页时,出现以下错误:

视频错误:V4L2:OpenCV 不支持传入图像的像素格式无法
停止流:设备或资源繁忙
视频流已启动
OpenCV(3.4.1) 错误:断言失败 (scn == 3 || scn == 4) cvtColor,文件 /home/eli/cv/opencv-3.4.1/modules/imgproc/src/color.cpp,第 11115
行 调试中间件在已发送响应标头的点捕获流响应中的异常。

这是我的代码:

detect_face_video.py
Run Code Online (Sandbox Code Playgroud)

这是我进行人脸识别的地方

# import the necessary packages
 from imutils.video import VideoStream
 import face_recognition
 import argparse
 import imutils
 import pickle
 import time
 import cv2
 from flask import Flask, render_template, Response
 import sys
 import numpy
 from app.cv_func import draw_box
 import redis
 import datetime
 from app.base_camera import BaseCamera



 import os 


 global red …
Run Code Online (Sandbox Code Playgroud)

python opencv face-recognition video-streaming

4
推荐指数
1
解决办法
2306
查看次数

iOS屏幕共享(使用ReplayKit)在swift中使用WebRTC

我已经成功实现了ReplayKit。

SampleHandler.swift

class SampleHandler: RPBroadcastSampleHandler {

   override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {

   }

  override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType:  RPSampleBufferType) {
        switch sampleBufferType {

        case RPSampleBufferType.video:
            break

        case RPSampleBufferType.audioApp:
            break

        case RPSampleBufferType.audioMic:
            break
        @unknown default:
            return
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题 :

  1. 如何使用 WebRTC 接收器显示屏幕共享视频?
  2. 如果我想将屏幕共享视频保存在文档目录文件夹或图库中,我需要做什么?

我正在 swift 中使用适用于移动设备的 WebRTC SDK。我的 WebRTCClient 文件。

    final class WebRTCClient: NSObject {
    
    // The `RTCPeerConnectionFactory` is in charge of creating new RTCPeerConnection instances.
    // A new RTCPeerConnection should be created every new …
Run Code Online (Sandbox Code Playgroud)

video-streaming webrtc swift replaykit

4
推荐指数
1
解决办法
6266
查看次数