我有一個 c 應用程式,它使用 gstreamer 從相機獲取 RTSP 和 H264 格式的視頻,然后使用 webrtcbin 重新發送視頻。我按照從這個例子中的鏈接,我可以看到槽火狐視頻(與建議的技巧在這個崗位),在使用時VP9編碼。
我使用的管道是:
rtspsrc location=rtsp://192.168.1.162/z3-1.mp4 ! application/x-rtp,encoding-name=H264 ! rtph264depay ! nvv4l2decoder ! nvv4l2vp9enc ! video/x-vp9 ! rtpvp9pay ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP9,payload=96,framerate=25/1 ! webrtcbin async-handling=true name=sendrecv
雖然我遵循帖子中的建議),但我無法使用 Chrome 觀看視頻,但從 chrome://webrtc-internals/ 中的統計資料來看,很明顯我正在獲取視頻,但 chrome 沒有顯示視頻。
獨立于瀏覽器,我在流式傳輸和查看 4k 視頻時遇到了一些問題。因此,我決定洗掉 VP9 編碼(以加快處理速度)并直接在 H264 中從相機重新發送資料。為此,我使用管道:
rtspsrc location=rtsp://192.168.1.162/z3-1.mp4 ! application/x-rtp,encoding-name=H264 ! webrtcbin async-handling=true name=sendrecv
使用此管道后,我在 Firefox 或 chrome 中都看不到視頻。有趣的是,如果我用 Firefox 分析流量,看起來瀏覽器沒有獲取任何資料。但是在這種情況下,chrome 正在獲取 mbytes 的資料,但我沒有看到視頻。
談判的答案是:
火狐
v=0
o=mozilla...THIS_IS_SDPARTA-95.0.2 5069762040601189414 0 IN IP4 0.0.0.0
s=-
t=0 0
a=sendrecv
a=fingerprint:sha-256 ED:70:D8:AF:49:E9:B1:F8:47:83:1B:2B:13:D3:67:AD:F6:43:9D:36:59:8B:74:93:34:1D:AB:D5:67:1A:E4:07
a=ice-options:trickle
a=msid-semantic:WMS *
m=video 0 UDP/TLS/RTP/SAVPF 120
c=IN IP4 0.0.0.0
a=inactive
a=mid:video0
a=rtpmap:120 VP8/90000
鉻合金
v=0
o=- 2541702691192041899 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:ssce
a=ice-pwd:eWXfMAvg/KEFxesG2nS3aNTt
a=ice-options:trickle
a=fingerprint:sha-256 E0:79:E1:50:F6:9F:CB:8B:80:8A:40:5A:B9:1B:35:27:EF:A2:45:EC:A1:A7:58:B5:24:98:0C:8D:B0:41:3B:1C
a=setup:active
a=mid:video0
a=recvonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 nack pli
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
關于 Firefox 或 chrome 中沒有視頻的任何想法?任何提示都會非常有幫助。非常感謝!
uj5u.com熱心網友回復:
瀏覽器僅支持baseline profile編碼的 h264 流的一個可能原因。您可以通過capssetter caps=\"application/x-rtp,profile-level-id=(string)42c015\"在rtph264payand之間添加類似的東西來嘗試傻瓜瀏覽器webrtcbin,但這只會在某些情況下有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409538.html
標籤:
上一篇:如何使此功能在Python上的實際瀏覽器中打開一個新選項卡?
下一篇:Flutter:GoogleSignInAccount屬性“authentication”無法無條件訪問,因為接收者可以為“null”
