Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将视频文件(不是来自ip摄像机的视频)从服务器广播到网页_C#_Angular_Typescript - Fatal编程技术网

C# 将视频文件(不是来自ip摄像机的视频)从服务器广播到网页

C# 将视频文件(不是来自ip摄像机的视频)从服务器广播到网页,c#,angular,typescript,C#,Angular,Typescript,服务器上的文件夹中有MP4格式的下载/录制视频文件。我需要远程连接到服务器并在客户端页面上播放文件 >On client. ts: export class VideoLayoutPartComponent implements OnInit { @Input() part: LayoutPart; videoSource: SafeUrl; constructor(private httpService: HttpService, private configuratio

服务器上的文件夹中有MP4格式的下载/录制视频文件。我需要远程连接到服务器并在客户端页面上播放文件

>On client. ts:

export class VideoLayoutPartComponent implements OnInit {
  @Input() part: LayoutPart;
  videoSource: SafeUrl;

  constructor(private httpService: HttpService, private configurationService: ConfigurationService) { }

  ngOnInit(): void {
    this.configurationService.configurationUpdated.subscribe(() => this.configurationUpdated());
  }

  private configurationUpdated() {
    return this.httpService.get('configuration/getVideo?videoUID='+ this.part.properties['referenceUID']).subscribe(videoData => {
      this.videoSource = videoData;
    });
  }

>On client. html:

<video width="320" height="240" controls="controls" preload="auto">
    <source src="{{videoSource}}}" type="video/mp4">
</video>

>On server

Configuration.cs:

    [HttpGet]
    public BitArray GetVideo(Guid? videoUid)
    {
        return VideoFactory.GetVideo(videoUid);
    }

VideoFactory.cs:

public static BitArray GetVideo(Guid? videoUID)
{
    if (videoUID.HasValue && videoUID != Guid.Empty)
    {
      foreach (var fileInfo in contentFolder.GetFiles())
      {
    if (Path.GetFileNameWithoutExtension(fileInfo.FullName) == videoUID.ToString())
      {
         byte[] bytes = File.ReadAllBytes(fileInfo.FullName);
         return new BitArray(bytes);
          }
       }
     }
}
客户端上的
>。ts:
导出类VideoLayoutPartComponent实现OnInit{
@Input()部分:LayoutPart;
视频来源:SafeUrl;
构造函数(私有httpService:httpService,私有configurationService:configurationService){}
ngOnInit():void{
this.configurationService.configurationUpdated.subscribe(()=>this.configurationUpdated());
}
私有配置更新(){
返回此.httpService.get('configuration/getVideo?videoUID='+this.part.properties['referenceUID'])。订阅(videoData=>{
this.videoSource=视频数据;
});
}
>在client.html上:
>在服务器上
Configuration.cs:
[HttpGet]
公共位数组GetVideo(Guid?videoUid)
{
返回VideoFactory.GetVideo(videoUid);
}
VideoFactory.cs:
公共静态位数组GetVideo(Guid?videoUID)
{
if(videoUID.HasValue&&videoUID!=Guid.Empty)
{
foreach(contentFolder.GetFiles()中的var fileInfo)
{
if(Path.GetFileNameWithoutExtension(fileInfo.FullName)==videoUID.ToString())
{
byte[]bytes=File.ReadAllBytes(fileInfo.FullName);
返回新的位数组(字节);
}
}
}
}

参考UID来自客户端,服务器找到视频,在字节数组中成功处理并发送回。但是客户端没有感知到字节,浏览器冻结。请帮助我了解如何由客户端接受数组并播放视频。

我解决了以下问题:

在client.html上:

<div class="main">
    <video playsinline controlsList="nodownload" controls autoplay [src]="videoSource">
        videoSource error
    </video>
</div>

尝试将http请求设置为
responseType:'blob'
export class VideoLayoutPartComponent implements OnInit {
  @Input() part: LayoutPart;
  videoSource: SafeUrl;

  constructor(private sanitizer: DomSanitizer, private httpService: HttpService, private configurationService: ConfigurationService) { }

  ngOnInit(): void {
    this.configurationService.configurationUpdated.subscribe(() => this.configurationUpdated());
  }

  private configurationUpdated() {
    return this.httpService.get<string>('configuration/getVideo?videoUID=' + this.part.properties['referenceUID']).subscribe(result => {
      this.videoSource = this.sanitizer.bypassSecurityTrustResourceUrl('data:video/mp4;base64,' + result);
    });
  }
}
        [HttpGet]
        public ActionResult GetVideo(Guid? videoUid)
        {
            return Json(VideoFactory.GetVideo(videoUid));
        }
    public class VideoFactory
    {
        public static string GetVideo(Guid? videoUID)
        {
            var contentFolder = new DirectoryInfo(AppDataFolderHelper.GetFolder("Server/Config/Resources"));
            if (videoUID.HasValue && videoUID != Guid.Empty)
            {
                foreach (var fileInfo in contentFolder.GetFiles())
                {
                    if (Path.GetFileNameWithoutExtension(fileInfo.FullName) == videoUID.ToString())
                        return Convert.ToBase64String(File.ReadAllBytes(fileInfo.FullName));
                }
            }
            return null;
        }
    }