1. 程式人生 > >使用VLC接收RTP流並時時播放(RTP流是pcma包)

使用VLC接收RTP流並時時播放(RTP流是pcma包)

簡單的 了解 不想 sdn 英文 好好學習 是不是 網絡數 ram

寫在前:

  或許是本人水平有限, 一個簡單的問題楞是想了很久還沒想出來, 最後還是問我師父的結果.

  總的來說, 目的就是: 服務器會發給本地電腦一系列的rtp包, 這些rtp包都是pcma編碼的語音包, 我是想在本地將這些語音包給解壓並播放出來.

  上網查了很多, 也寫了sdp文件, 然而一直實現不了

  sdp文件如下:   

    m=audio 50060 RTP/AVP 8
    a=rtpmap:8 PCMA/8000/1
    a=framerate:50
    c=IN IP4 22.22.22.159

  這幾個參數的意思, 可以看:http://blog.csdn.net/zhangjikuan/article/details/27378237

  

問題解決:

  主要還是對網絡之間的原理不是很理解, 網絡都是io流的數據, 那麽我應該使用VLC的網絡串流的功能, 使用這個功能來接收服務器發送過來的語音數據流

  因些這個問題就很好解決了

  1.首先, 確保你的本地電腦是否收到了服務器發來的數據流, 可以用抓包軟件wireshark來確定是否收到

  2.其次, 確定你收到包可以解析成語音, 使用wireshark可以將UDP包--->解析成-->RTP包, 這些RTP包可以直接使用wireshark播放

  3.現在, 已經可以確定本地收到語音包, 接著就是用VLC播放器將這些語音包時時播放出來就可以了

    打開VLC, 選擇"媒體(M)" --> "打開網絡串流(N)" --> 在"請輸入網絡URL:"下輸入--"rtp://@1234" --> "播放" 即可.

    其中, rtp: 表示VLC接收的是rtp包, @表示本地(瞎掰的, 個人理解), 1234: 表示本地接收的端口

  4.最後, 讓你的服務器發送語音包給你本地的電腦, 這樣戴上耳機, 就可以聽到服務器發過來的語音.

想法:

  1.一知半解是最要命的,

    本地想收到語音包並解析出來, 一開始的步驟都對, 從本地可以收到語言包到解析出來聽到聲音, 用了兩天時間, 只因為一個盲點: VLC怎麽接收從網絡發來的語音包並解析

    從網上查了很多人的博客或者其它的一些論壇, 沒有能說明清楚的, 套用了一些方法(寫sdp文件), 只能讓我覺得是不是我哪裏配置錯了, 一直都在繞圈子, 明明就只差臨門一腳, 卻怎麽也跨不過去

    在這裏,

      a) 不知道VLC怎麽接收網絡發來的數據包, 有哪些方式

      b) 不清楚網絡數據傳輸是以流的形式

    就是在這樣對工具和場景的不了解, 會花費大量時間在無效的工作上(查看很多重復的博客, 論壇), 對個人和公司都是有害的, 浪費個人時間和公司的時間

  2.官方文檔很重要

    雖然一起都清楚, 但人都是懶的, 我也不想看一大堆文檔, 只為解決一個小問題.

    但恰恰就是因為一種心理, 可能會導致不可預估的後果

    如果這次我好好看了文檔, 可能會花費很長時間在看文檔上, 還可能因為啃英文文檔啃到想吐, 但另一方面也加強了看英文文檔或中文文檔的熟練程度, 這方面來說也是一種進步, 再說查看官方文檔, 也就不需要重復搜索網絡的博文或論壇, 同時因為是官方文檔, 還可以看到一些其它可能用到的功能, 即使現在不用, 說不定以後會用到

  3.總的來說, 腳踏實地, 理解清楚想實現的功能, 涉及到一些不明確的方面, 以官方文檔為主, 好好學習英文^^!

 

  

使用VLC接收RTP流並時時播放(RTP流是pcma包)