0

i wanted to integrate streaming in my own app and website, but i always get the error:

"Cannot play media. No decoders for requested formats: text/html"

("Medien konnte nicht abgespielt werden. Keine Dekoder für angefragte Formate: text/html")

the webside and app is build with spring boot, angular and capacitorJs

Here my Code:

HTML:

 <div class="videogular-container">
  <vg-player>
    <vg-overlay-play></vg-overlay-play>
    <vg-buffering></vg-buffering>
    <vg-scrub-bar>
      <vg-scrub-bar-current-time></vg-scrub-bar-current-time>
      <vg-scrub-bar-buffering-time></vg-scrub-bar-buffering-time>
    </vg-scrub-bar>
    <vg-controls>
      <vg-play-pause></vg-play-pause>
      <vg-playback-button></vg-playback-button>
      <vg-time-display vgProperty="current" vgFormat="mm:ss"></vg-time-display>
      <vg-scrub-bar style="pointer-events: none;"></vg-scrub-bar>
      <vg-time-display vgProperty="total" vgFormat="mm:ss"></vg-time-display>
      <vg-track-selector></vg-track-selector>
      <vg-mute></vg-mute>
      <vg-volume></vg-volume>
      <vg-fullscreen></vg-fullscreen>
    </vg-controls>
    <video [vgMedia]="$any(media)" #media id="singleVideo" preload="auto" crossorigin>
      <source id="video" src="">
    </video>
  </vg-player>
</div>

TS:

 export class StreamComponent {
  id: number;
  type: number;
  loading: boolean = false;

  constructor(private route: ActivatedRoute, private api: ApiService, private router: Router) {
    route.params.subscribe((params) => {
      this.id = params["id"];
    })
    this.type = parseInt(this.id.toString()[0]);
    this.id = parseInt(this.id.toString().substring(1,this.id.toString().length));
    //this.loading = true;
    this.initStreamFile();
  }
  initStreamFile() {
    this.getStreamFile().subscribe(data => {
      const myFile = new File(
        [data],
        "demo.mp4",
        { type: 'video/mp4' }
      );
      const imageUrl = URL.createObjectURL(myFile);
     //Also tryed only const imageUrl = URL.createObjectURL(data); same error

      //this.loading = false;
      const videoElement = <HTMLVideoElement> document.getElementById('video');
      videoElement.src = imageUrl;
    })
  }

  getStreamFile(): Observable<any> {
    if(this.type==1) {
      return this.api.downloadFilm(this.id);
    } else {
      return this.api.downloadSerie(this.id);
    }
  }
}

Backend:

@GetMapping(value = "/download/{id}")
    public ResponseEntity<FileSystemResource> getVideo(@PathVariable(value = "id") String id) {
        File file = new File("media-backend/src/main/resources/file_example_MP4_1920_18MG.mp4");
        HttpHeaders headers = new HttpHeaders();
        headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
        headers.add("Pragma", "no-cache");
        headers.add("Expires", "0");

        return ResponseEntity
                .ok()
                .headers(headers)
                .contentLength(file.length())
                .contentType(MediaType.parseMediaType("video/mp4"))
                .body(new FileSystemResource(file));
    }

app-modules:

import { VgCoreModule } from '@videogular/ngx-videogular/core';
import { VgControlsModule } from '@videogular/ngx-videogular/controls';
import { VgOverlayPlayModule } from '@videogular/ngx-videogular/overlay-play';
import { VgBufferingModule } from '@videogular/ngx-videogular/buffering';
import { VgStreamingModule } from '@videogular/ngx-videogular/streaming';

someone any idea or any explenation what to do there

NEYT
  • 11
  • 4

0 Answers0