mirror of
https://github.com/pion/mediadevices.git
synced 2025-09-26 20:41:46 +08:00
Use x264 instead of vp8 for rtp example
This commit is contained in:
@@ -1,5 +1,14 @@
|
|||||||
## Instructions
|
## Instructions
|
||||||
|
|
||||||
|
### Install required codecs
|
||||||
|
|
||||||
|
In this example, we'll be using x264 and opus as our video and audio codecs. Therefore, we need to make sure that these codecs are installed within our system.
|
||||||
|
|
||||||
|
Installation steps:
|
||||||
|
|
||||||
|
* [x264](https://github.com/pion/mediadevices#x264)
|
||||||
|
* [opus](https://github.com/pion/mediadevices#opus)
|
||||||
|
|
||||||
### Download rtpexample
|
### Download rtpexample
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -10,13 +19,13 @@ go get github.com/pion/mediadevices/examples/rtp
|
|||||||
|
|
||||||
Install GStreamer and run:
|
Install GStreamer and run:
|
||||||
```
|
```
|
||||||
gst-launch-1.0 udpsrc port=5000 caps=application/x-rtp,encode-name=VP8 \
|
gst-launch-1.0 udpsrc port=5000 caps=application/x-rtp,encode-name=H264 \
|
||||||
! rtpvp8depay ! vp8dec ! videoconvert ! autovideosink
|
! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink
|
||||||
```
|
```
|
||||||
|
|
||||||
Or run VLC media plyer:
|
Or run VLC media plyer:
|
||||||
```
|
```
|
||||||
vlc ./vp8.sdp
|
vlc ./h264.sdp
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run rtp
|
### Run rtp
|
||||||
|
@@ -6,4 +6,4 @@ c=IN IP4 0.0.0.0
|
|||||||
t=0 0
|
t=0 0
|
||||||
a=recvonly
|
a=recvonly
|
||||||
m=video 5000 RTP/AVP 100
|
m=video 5000 RTP/AVP 100
|
||||||
a=rtpmap:100 VP8/90000
|
a=rtpmap:100 H264/90000
|
@@ -6,7 +6,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/pion/mediadevices"
|
"github.com/pion/mediadevices"
|
||||||
"github.com/pion/mediadevices/pkg/codec/vpx" // This is required to use VP8/VP9 video encoder
|
"github.com/pion/mediadevices/pkg/codec/x264" // This is required to use H264 video encoder
|
||||||
_ "github.com/pion/mediadevices/pkg/driver/camera" // This is required to register camera adapter
|
_ "github.com/pion/mediadevices/pkg/driver/camera" // This is required to register camera adapter
|
||||||
"github.com/pion/mediadevices/pkg/frame"
|
"github.com/pion/mediadevices/pkg/frame"
|
||||||
"github.com/pion/mediadevices/pkg/prop"
|
"github.com/pion/mediadevices/pkg/prop"
|
||||||
@@ -29,12 +29,13 @@ func main() {
|
|||||||
}
|
}
|
||||||
dest := os.Args[1]
|
dest := os.Args[1]
|
||||||
|
|
||||||
vp8Params, err := vpx.NewVP8Params()
|
x264Params, err := x264.NewParams()
|
||||||
must(err)
|
must(err)
|
||||||
vp8Params.BitRate = 100000 // 100kbps
|
x264Params.Preset = x264.PresetMedium
|
||||||
|
x264Params.BitRate = 1_000_000 // 1mbps
|
||||||
|
|
||||||
codecSelector := mediadevices.NewCodecSelector(
|
codecSelector := mediadevices.NewCodecSelector(
|
||||||
mediadevices.WithVideoEncoders(&vp8Params),
|
mediadevices.WithVideoEncoders(&x264Params),
|
||||||
)
|
)
|
||||||
|
|
||||||
mediaStream, err := mediadevices.GetUserMedia(mediadevices.MediaStreamConstraints{
|
mediaStream, err := mediadevices.GetUserMedia(mediadevices.MediaStreamConstraints{
|
||||||
@@ -50,7 +51,7 @@ func main() {
|
|||||||
videoTrack := mediaStream.GetVideoTracks()[0]
|
videoTrack := mediaStream.GetVideoTracks()[0]
|
||||||
defer videoTrack.Close()
|
defer videoTrack.Close()
|
||||||
|
|
||||||
rtpReader, err := videoTrack.NewRTPReader(vp8Params.RTPCodec().Name, mtu)
|
rtpReader, err := videoTrack.NewRTPReader(x264Params.RTPCodec().Name, mtu)
|
||||||
must(err)
|
must(err)
|
||||||
|
|
||||||
addr, err := net.ResolveUDPAddr("udp", dest)
|
addr, err := net.ResolveUDPAddr("udp", dest)
|
||||||
|
Reference in New Issue
Block a user