# How to stream from local file?

**URL:** <https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229>\
**Category:** mediasoup libraries\
**Created:** [June 11, 2020, 3:33am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229 "2020-06-11T03:33:48Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 11, 2020, 3:33am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/1 "2020-06-11T03:33:49Z")

</div>

I need help for stream from local file. I read the documentation of the mediasoup client but haven’t found the corresponding api. Is there a way to switch files from mediastream or any way to stream local files?

---

<div class="post-metadata">

**Author:** ![nazar-pc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/nazar-pc/32/369_2.png) [@nazar-pc](https://mediasoup.discourse.group/u/nazar-pc)\
**Post date:** [June 11, 2020, 5:09am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/2 "2020-06-11T05:09:57Z")

</div>

You can use external tool like FFmpeg or GStreamer, create plain transport in mediasoup and stream with plain RTP. Documentation actually mentions this a few times.

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [June 11, 2020, 5:27am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/3 "2020-06-11T05:27:19Z")

</div>

> **[mediasoup :: Communication Between Client and Server](https://mediasoup.org/documentation/v3/communication-between-client-and-server/#example-inject-audio-and-video-using-ffmpeg)**
>
> Cutting Edge WebRTC Video Conferencing

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 11, 2020, 6:43am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/4 "2020-06-11T06:43:32Z")

</div>

But my customer want use all in browser. FFMpeg or GStreamer is command line

---

<div class="post-metadata">

**Author:** ![nazar-pc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/nazar-pc/32/369_2.png) [@nazar-pc](https://mediasoup.discourse.group/u/nazar-pc)\
**Post date:** [June 11, 2020, 6:48am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/5 "2020-06-11T06:48:54Z")

</div>

Then stream from browser using WebRTC. I do not understand what the question is then. Also in this case it has nothing to do with mediasoup specifically.

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [June 11, 2020, 6:55am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/6 "2020-06-11T06:55:18Z")

</div>

You can use the captureStream API

> **[HTMLMediaElement.captureStream()](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/captureStream)**
>
> The captureStream() property of the HTMLMediaElement interface returns a MediaStream object which is streaming a real-time capture of the content being rendered in the media element.

1. upload video file to the HTML page
2. attach the video file to a video element src
3. use captureStream to create MediaStream
4. create a producer using the above mediastream tracks

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 11, 2020, 7:00am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/7 "2020-06-11T07:00:24Z")

</div>

Wow, It looks like it will work. Thanks i will try this solution now

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 17, 2020, 6:54am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/8 "2020-06-17T06:54:53Z")

</div>

Hi bro, i try your solution but when producerTransport.on(‘produce’,…) i recevied a message “Error: Uncaught (in promise): Your stream has no audio tracks.”. Can you help me?

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 17, 2020, 7:04am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/9 "2020-06-17T07:04:13Z")

</div>

This is Mediastreamtrack get from audio tag

 ![image](https://global.discourse-cdn.com/free1/uploads/mediasoup/original/1X/30e172a15ea7ddea37cf0c43174b0ad3982ba357.png)

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 18, 2020, 3:14am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/10 "2020-06-18T03:14:28Z")

</div>

I added mediastreamtrack to a mediastream and add it to srcObject of other audio tag. And this audio tag has played the added track. It’s may be a bug off mediasoup??

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [June 18, 2020, 8:49am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/11 "2020-06-18T08:49:39Z")

</div>

How can be adding a second `MediaStreamTrack` to a `MediaStream` and just get audio of that track be a bug in mediasoup? Please, let’s not just assume that “everything is a bug in mediasoup”. You are using a `MediaStream` and a `MediaStreamTrack`objects. Those are not “mediasoup API” but browser API.

BTW that’s the behaviour of a `MediaStream` when you add more than one audio `MediaStreamTrack`.

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 18, 2020, 9:57am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/12 "2020-06-18T09:57:17Z")

</div>

Sorry because i use mediastreamtrack for another audio tag and it play correctly. I add only one track to Mediastream. Can you help me?

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 18, 2020, 10:03am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/13 "2020-06-18T10:03:42Z")

</div>

Can you help me by creating a captureStream () + mediasoup example? I try it but not work. In spite of your solution is basically.

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [June 19, 2020, 3:20am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/14 "2020-06-19T03:20:57Z")

</div>

Could do but it may take some time due to being busy.

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 19, 2020, 4:07am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/15 "2020-06-19T04:07:39Z")

</div>

I know this is a waste of your time. If you make a example for captureStream() i really truly grateful you. Sr if my english so bad

---

<div class="post-metadata">

**Author:** ![quangnv1311](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/quangnv1311/32/658_2.png) [@quangnv1311](https://mediasoup.discourse.group/u/quangnv1311)\
**Post date:** [June 22, 2020, 10:30am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/16 "2020-06-22T10:30:24Z")

</div>

@ethand91 Can you help me, I tried many ways but all failed

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [June 22, 2020, 7:39pm UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/17 "2020-06-22T19:39:38Z")

</div>

Sorry, Quang, don’t expect anyone here to do consultancy services for free. That’s not the purpose of this forum.

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [June 23, 2020, 1:42am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/18 "2020-06-23T01:42:44Z")

</div>

I’ll do it when I have free time, but I can’t give any estimations as to when it’ll be done.  
If you can’t wait you will have to do it yourself.

---

<div class="post-metadata">

**Author:** ![usama](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/usama/32/1163_2.png) [@usama](https://mediasoup.discourse.group/u/usama)\
**Post date:** [October 13, 2021, 5:31am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/19 "2021-10-13T05:31:09Z")

</div>

i tried to stream from an mp4 h264 file but when i try to consume it a blank video is displayed can’t figure out what is the problem.  
these are my router capabilities  
{  
kind: “video”,  
name: “H264”,  
mimeType: “video/H264”,  
clockRate: 90000,  
parameters: {  
“packetization-mode”: 1,  
“profile-level-id”: “42e01f”  
}  
},  
mp4 video codec info  
 ![image](https://global.discourse-cdn.com/free1/uploads/mediasoup/original/2X/a/a5e5e41d1e46fb2ff66ae48d3abddae06385f1e1.png)  
Update:  
its working fine on firefox

---

<div class="post-metadata">

**Author:** ![nazar-pc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/nazar-pc/32/369_2.png) [@nazar-pc](https://mediasoup.discourse.group/u/nazar-pc)\
**Post date:** [October 13, 2021, 7:14am UTC](https://mediasoup.discourse.group/t/how-to-stream-from-local-file/1229/20 "2021-10-13T07:14:51Z")

</div>

Please don’t hijack irrelevant threads with new questions over a year later
