[英]Only first frame showed in RTSP Streaming with libvlc
我想通過 libVLC 獲取 IP 攝像機的視頻並將其流式傳輸到另一個 IP。 我根據 libvlc 文檔示例編寫了這些代碼。 視頻流成功,視頻在目的地顯示沒有任何問題。但在我的顯示器中,只顯示了第一幀。 經過一番搜索,我猜想通過添加RTP over TCP
選項可以解決這個問題。 但是在這個改變之后,我的問題還沒有解決。
我使用 Microsoft Visual C++,我的代碼是:
#include <stdio.h>
#include <stdlib.h>
#include <vlc/vlc.h>
#include <Windows.h>
int main(int argc, char* argv[])
{
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
char *myarg0 = "--sout=#transcode{vcodec=h264,scale=Auto,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=display,dst=rtp{sdp=rtsp://destinationIP:Port}}";
char *myarg1="--rtsp-tcp";
char *myargs[2] = {myarg1, myarg0};
/* Load the VLC engine */
inst = libvlc_new (2, myargs);
/* Create a new item */
char *input="http://user:pass@CameraIP//axis-cgi//mjpg//video.cgi";
m = libvlc_media_new_location (inst,input );
/* Create a media player playing environement */
mp = libvlc_media_player_new_from_media (m);
/* No need to keep the media now */
libvlc_media_release (m);
/* play the media_player */
libvlc_media_player_play (mp);
Sleep (10000000); /* Let it play a bit */
/* Stop playing */
libvlc_media_player_stop (mp);
/* Free the media_player */
libvlc_media_player_release (mp);
libvlc_release (inst);
return 0;
}
這是我如何使用 QT 和 LIBVLC 訪問 RTSP 流,這運行良好!
libvlc_instance_t *_vlcinstance;
libvlc_media_player_t *_mp;
libvlc_media_t *_m;
const char * const vlc_args[] = {
// "--verbose=2", //be much more verbose then normal for debugging purpose
"--network-caching=100",
};
//create a new libvlc instance
_vlcinstance=libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args); //tricky calculation of the char space used
// Create a media player playing environement
_mp = libvlc_media_player_new (_vlcinstance);
/* Create a new LibVLC media descriptor */
_m = libvlc_media_new_location(_vlcinstance, "rtsp://admin:admin@192.168.1.83:554/live0.264");
libvlc_media_player_set_media (_mp, _m);
/* Get our media instance to use our window */
int windid = ui->frame->winId();
libvlc_media_player_set_xwindow (_mp, windid );
/* Play */
libvlc_media_player_play (_mp);
其中“ui->frame”是目標對象,在我的應用程序中它是一個簡單的 QFrame(但可以是一切)
要編譯它,您需要 #include 並在項目設置中 LIBS += -lvlc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.