2013-03-14 132 views
2

我寫了一個android應用程序,通過套接字將攝像機的實時視頻流發送到我的電腦。是否可以使用FFmpeg解碼MPEG4視頻流,以及如何顯示相機實時看到的內容?我猜我必須從字節流中獲得的最新信息創建一個位圖,並以20 + FPS的形式顯示在計算機上。使用FFmpeg捕獲視頻流

我該如何去做這樣的事情? C++,C#或Java都很好。從我的理解FFmpeg是用C++編寫的

回答

1

首先,你想自己創建一個視頻播放器,或者你只是想看到你的流?因爲當你有一個視頻流時,幾乎每個現代視頻播放器都可以播放流媒體。嘗試使用VLC(這是使用FFmpeg)。在VLC中,只需點擊「媒體」 - >「打開網絡流...」並填寫您的網址。

其次,FFmpeg用C(C99)編寫。 FFmpeg本身只是一個轉換媒體的工具。當你想創建你自己的程序時,你可以使用FFmpeg庫(libavcodec,libavformat等)。

+0

我不需要創建視頻播放器,我只需要查看流。從我所瞭解的有關使用VLC讀取數據流的理解是,它使用rtp和/或rtsp,它們是在視頻流頂部構建的協議。此外,我將運行一個應用程序,使用我的手機上的4G網絡,並將其流式傳輸到我的電腦。如果我瞭解vlc和rtp的工作原理,那麼流的來源就是服務器。這是行不通的,因爲我的無線公司(AT&T)在4G模式下運行時會阻塞端口。 – 2013-03-14 22:55:47

+0

所以libavcodec包含解碼MPEG4視頻流所需的代碼。解碼視頻流給了我什麼?我能夠實時看到流的最新幀嗎?編碼流也沒有標題,因爲在完成錄製後添加了標題。但是我從相機直播了這個,所以我需要能夠在沒有標題的情況下做到這一點。這可能嗎? – 2013-03-14 23:00:17

+0

是的,您需要以可能的協議之一提供視頻流,這是最簡單的方法。不要發明自己的插座解決方案。這些協議包含標題以查看您的視頻。此外,libavcodec只包含編碼/解碼視頻的代碼。所以你還需要ffmpeg中的其他庫,例如使用libavformat和其他一些文件從流中讀取數據。所以試着從你的設備中獲得體面的流以便在VLC中打開,因爲該程序具有所有需要的ffmpeg庫。 – 2013-03-15 08:04:18