精华内容
下载资源
问答
  • VLC网页播放Rtsp

    2020-04-23 15:06:33
    ie浏览器播放rtsp,只需要更改一下里面的rtsp地址即可播放,电脑上要安装vlc ie浏览器播放rtsp,只需要更改一下里面的rtsp地址即可播放,电脑上要安装vlc
  • c# onvif rtsp vlc 视频播放 云台控制
  • VLC播放RTSP流实例

    2016-06-28 20:23:22
    可以选择日期,显示播放时间。
  • VLC打开Rtsp流,OPenCV处理。
  • vlc页面插件用来播放视频或直播流(rtsp, rtmp), 例子中包含常用的基本操作以及事件处理. 仅用了ie, mozilla的请自行尝试处理. 1. 使用前 确保安装了vlc(安装过程中不要勾掉activeX) 2. 使用ie打开
  • vlc播放rtsp取流文件,安装包及实例demo。主流rtsp取流协议集合
  • VLC服务器转发海康实时流(RTSP

    热门讨论 2014-09-23 16:21:23
    程序可配置多个海康摄像头地址,转发成本地IP地址的RTSP地址,使用VLC客户端可直接播放。 使用前,请修改配置文件中摄像头的地址,以及本机的IP地址。
  • vlc播放rtsp

    2018-08-18 18:27:36
    利用vlc请求获取rtsp流的视频,可以一个页面播放多个视频,内附vlc安装包,测试好的html页面。安装即用。(安装了vlc之后,打开安装的vlc文件夹,找到axvlc.dll这个文件,注册下这个文件。就可以播放了。不会请联系...
  • 本实例采用VLC库文件,实现网络rtsp视频源的播放。编译即可运行播放
  • 在编写rtsp服务器时,一直是用vlc测试的,结果在后期使用时,用ffplay命令播放不了,折腾了好久才解决,做个总结。 一、vlc的cseq字段在第二行,ffmpeg则不一定 VLC示例: PLAY rtsp://192.168.1.199:8574 RTSP...

    在编写rtsp服务器时,一直是用vlc测试的,结果在后期使用时,用ffplay命令播放不了,折腾了好久才解决,做个总结。

     

    一、vlc的cseq字段在第二行,ffmpeg则不一定

    VLC示例:
    PLAY rtsp://192.168.1.199:8574 RTSP/1.0
    CSeq: 5
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Session: 66334874
    Range: npt=0.000-
    
    
    FFMPEG示例:
    PLAY rtsp://192.168.1.199:8566 RTSP/1.0
    Range: npt=0.000-
    CSeq: 4
    User-Agent: Lavf58.78.100
    Session: 66334874

    二、ffmpeg的SETUP方法,Transport字段多了个/UDP

    VLC示例:
    SETUP rtsp://192.168.1.199:8574/track0 RTSP/1.0
    CSeq: 4
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Transport: RTP/AVP;unicast;client_port=62556-62557
    
    
    FFMPEG示例:
    SETUP rtsp://192.168.1.199:8566/track0 RTSP/1.0
    Transport: RTP/AVP/UDP;unicast;client_port=18706-18707
    CSeq: 3
    User-Agent: Lavf58.78.100

     

    三、在服务器回复PLAY方法请求时(我是看了ffmpeg源码这样写的,可能我有看错)

           字段Ranage 回复有点区别   

           VLC:"Range: npt=0.000-\r\n"      

           FFMPEG: "Range: npt=0.000-0.000-\r\n"

     

    展开全文
  • Android 播放RTSP 视频 VLC

    千次阅读 2019-08-27 09:09:21
    你的打赏,是对我最大的支持: 测试地址:rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp 本demo测试地址:rtsp://admin:a...在PC端下载 VLC 播放器 下载地址: https://vl...

    你的打赏,是对我最大的支持:

     

    测试地址:rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp

    本demo测试地址:rtsp://admin:a88888888@183.230.153.189:554

     

    测试方法:

     

    在PC端下载 VLC 播放器 

    下载地址:

    https://vlc-media-player.en.softonic.com/

     

    demo运行结果

     

    补充一句:不足的地方 就是第一次打开有点慢,30s

     

    废话不多说了,上代码

     

     

    主要代码:

    package demo.one;
    
    //.....
    /**
     * _ooOoo_
     * o8888888o
     * 88" . "88
     * (| -_- |)
     * O\ = /O
     * ____/`---'\____
     * . ' \\| |// `.
     * / \\||| : |||// \
     * / _||||| -:- |||||- \
     * | | \\\ - /// | |
     * | \_| ''\---/'' | |
     * \ .-\__ `-` ___/-. /
     * ___`. .' /--.--\ `. . __
     * ."" '< `.___\_<|>_/___.' >'"".
     * | | : `- \`.;`\ _ /`;.`/ - ` : | |
     * \ \ `-. \_ __\ /__ _/ .-` / /
     * ======`-.____`-.___\_____/___.-`____.-'======
     * `=---='
     * <p>
     * .............................................
     * 佛祖保佑 永无BUG
     *
     * @ProjectName: Demo_one
     * @Package: demo.one
     * @ClassName: VideoPalyerActivity
     * @Description: java类作用描述,播放RSTSP视频 播放地址:拼接方式 
     *
     *  rtsp://123:123456@183.230.153.189:554
     *
     *  123   账户
     *  123456  密码
     *  中间用冒号隔开:小写
     *
     * 183.230.153.189:554   播放地址 + 端口
     *
     *用@符号
     *
     * @Author: HCJ
     * @CreateDate: 2019/8/26 17:38
     * @UpdateUser: 更新者
     * @UpdateDate: 2019/8/26 17:38
     * @UpdateRemark: 更新说明
     * @Version: 1.0
     */
    public class VideoPalyerActivity extends AppCompatActivity implements IVLCVout.OnNewVideoLayoutListener {
    
        private static final String TAG = "VideoPalyerActivity";
    
        private static final boolean ENABLE_SUBTITLES = true;
        private static String SAMPLE_URL = "rtsp://admin:a88888888@183.230.153.189:554";
        //    private static String SAMPLE_URL;
        private static final int SURFACE_BEST_FIT = 0;
        private static final int SURFACE_FIT_SCREEN = 1;
        private static final int SURFACE_FILL = 2;
        private static final int SURFACE_16_9 = 3;
        private static final int SURFACE_4_3 = 4;
        private static final int SURFACE_ORIGINAL = 5;
        private static int CURRENT_SIZE = SURFACE_BEST_FIT;
    
    
        private FrameLayout mVideoSurfaceFrame = null;
        private SurfaceView mVideoSurface = null;
        private SurfaceView mSubtitlesSurface = null;
    
        private final Handler mHandler = new Handler();
        private View.OnLayoutChangeListener mOnLayoutChangeListener = null;
    
        private LibVLC mLibVLC = null;
        private MediaPlayer mMediaPlayer = null;
        private int mVideoHeight = 0;
        private int mVideoWidth = 0;
        private int mVideoVisibleHeight = 0;
        private int mVideoVisibleWidth = 0;
        private int mVideoSarNum = 0;
        private int mVideoSarDen = 0;
    
        //    private void init() {
    //        Configuration mConfiguration = this.getResources().getConfiguration(); //获取设置的配置信息
    //        int ori = mConfiguration.orientation; //获取屏幕方向
    //
    //        if (ori == mConfiguration.ORIENTATION_PORTRAIT) {
    //            //竖屏
    //            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制为横屏
    //        }
    //
    //
    //    }
    
        private void changeMediaPlayerLayout(int displayW, int displayH) {
            /* Change the video placement using the MediaPlayer API */
            switch (CURRENT_SIZE) {
                case SURFACE_BEST_FIT:
                    mMediaPlayer.setAspectRatio("3:2");
                    mMediaPlayer.setScale(0);
                    break;
                case SURFACE_FIT_SCREEN:
                    break;
                case SURFACE_FILL: {
                    Media.VideoTrack vtrack = mMediaPlayer.getCurrentVideoTrack();
                    if (vtrack == null)
                        return;
                    final boolean videoSwapped = vtrack.orientation == Media.VideoTrack.Orientation.LeftBottom
                            || vtrack.orientation == Media.VideoTrack.Orientation.RightTop;
                    if (CURRENT_SIZE == SURFACE_FIT_SCREEN) {
                        int videoW = vtrack.width;
                        int videoH = vtrack.height;
    
                        if (videoSwapped) {
                            int swap = videoW;
                            videoW = videoH;
                            videoH = swap;
                        }
                        if (vtrack.sarNum != vtrack.sarDen)
                            videoW = videoW * vtrack.sarNum / vtrack.sarDen;
    
                        float ar = videoW / (float) videoH;
                        float dar = displayW / (float) displayH;
    
                        float scale;
                        if (dar >= ar)
                            scale = displayW / (float) videoW; /* horizontal */
                        else
                            scale = displayH / (float) videoH; /* vertical */
                        mMediaPlayer.setScale(scale);
                        mMediaPlayer.setAspectRatio(null);
                    } else {
                        mMediaPlayer.setScale(0);
                        mMediaPlayer.setAspectRatio(!videoSwapped ? "" + displayW + ":" + displayH
                                : "" + displayH + ":" + displayW);
                    }
                    break;
                }
                case SURFACE_16_9:
                    mMediaPlayer.setAspectRatio("16:9");
                    mMediaPlayer.setScale(0);
                    break;
                case SURFACE_4_3:
                    mMediaPlayer.setAspectRatio("4:3");
                    mMediaPlayer.setScale(0);
                    break;
                case SURFACE_ORIGINAL:
                    mMediaPlayer.setAspectRatio(null);
                    mMediaPlayer.setScale(1);
                    break;
            }
        }
    
        private void updateVideoSurfaces() {
            int sw = getWindow().getDecorView().getWidth();
            int sh = getWindow().getDecorView().getHeight();
    
            // sanity check
            if (sw * sh == 0) {
                Log.e(TAG, "Invalid surface size");
                return;
            }
    
            mMediaPlayer.getVLCVout().setWindowSize(sw, sh);
    
            ViewGroup.LayoutParams lp = mVideoSurface.getLayoutParams();
            if (mVideoWidth * mVideoHeight == 0) {
                /* Case of OpenGL vouts: handles the placement of the video using MediaPlayer API */
                lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
                lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
                mVideoSurface.setLayoutParams(lp);
                lp = mVideoSurfaceFrame.getLayoutParams();
                lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
                lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
                mVideoSurfaceFrame.setLayoutParams(lp);
                changeMediaPlayerLayout(sw, sh);
                return;
            }
    
            if (lp.width == lp.height && lp.width == ViewGroup.LayoutParams.MATCH_PARENT) {
                /* We handle the placement of the video using Android View LayoutParams */
                mMediaPlayer.setAspectRatio(null);
                mMediaPlayer.setScale(0);
            }
    
            double dw = sw, dh = sh;
            final boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
    
            if (sw > sh && isPortrait || sw < sh && !isPortrait) {
                dw = sh;
                dh = sw;
            }
    
            // compute the aspect ratio
            double ar, vw;
            if (mVideoSarDen == mVideoSarNum) {
                /* No indication about the density, assuming 1:1 */
                vw = mVideoVisibleWidth;
                ar = (double) mVideoVisibleWidth / (double) mVideoVisibleHeight;
            } else {
                /* Use the specified aspect ratio */
                vw = mVideoVisibleWidth * (double) mVideoSarNum / mVideoSarDen;
                ar = vw / mVideoVisibleHeight;
            }
    
            // compute the display aspect ratio
            double dar = dw / dh;
    
            switch (CURRENT_SIZE) {
                case SURFACE_BEST_FIT:
                    if (dar < ar)
                        dh = dw / ar;
                    else
                        dw = dh * ar;
                    break;
                case SURFACE_FIT_SCREEN:
                    if (dar >= ar)
                        dh = dw / ar; /* horizontal */
                    else
                        dw = dh * ar; /* vertical */
                    break;
                case SURFACE_FILL:
                    break;
                case SURFACE_16_9:
                    ar = 16.0 / 9.0;
                    if (dar < ar)
                        dh = dw / ar;
                    else
                        dw = dh * ar;
                    break;
                case SURFACE_4_3:
                    ar = 4.0 / 3.0;
                    if (dar < ar)
                        dh = dw / ar;
                    else
                        dw = dh * ar;
                    break;
                case SURFACE_ORIGINAL:
                    dh = mVideoVisibleHeight;
                    dw = vw;
                    break;
            }
    
            // set display size
            lp.width = (int) Math.ceil(dw * mVideoWidth / mVideoVisibleWidth);
            lp.height = (int) Math.ceil(dh * mVideoHeight / mVideoVisibleHeight);
            mVideoSurface.setLayoutParams(lp);
            if (mSubtitlesSurface != null)
                mSubtitlesSurface.setLayoutParams(lp);
    
            // set frame size (crop if necessary)
            lp = mVideoSurfaceFrame.getLayoutParams();
            lp.width = (int) Math.floor(dw);
            lp.height = (int) Math.floor(dh);
            mVideoSurfaceFrame.setLayoutParams(lp);
    
            mVideoSurface.invalidate();
            if (mSubtitlesSurface != null)
                mSubtitlesSurface.invalidate();
        }
    
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
        @Override
        public void onNewVideoLayout(IVLCVout vlcVout, int width, int height, int visibleWidth, int visibleHeight, int sarNum, int sarDen) {
            mVideoWidth = width;
            mVideoHeight = height;
            mVideoVisibleWidth = visibleWidth;
            mVideoVisibleHeight = visibleHeight;
            mVideoSarNum = sarNum;
            mVideoSarDen = sarDen;
            updateVideoSurfaces();
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_videoplayer);
    //        SAMPLE_URL = getIntent().getStringExtra("extra_url");
    //        Log.d(TAG, "onCreate: " + SAMPLE_URL);
    
    //        init();
            ArrayList<String> args = new ArrayList<>();
            args.add("-vvv");
            mLibVLC = new LibVLC(getApplicationContext(), args);
            mMediaPlayer = new MediaPlayer(mLibVLC);
            mMediaPlayer.setScale(0);
    
            mVideoSurfaceFrame = (FrameLayout) findViewById(R.id.video_surface_frame);
            mVideoSurface = (SurfaceView) findViewById(R.id.video_surface);
            if (ENABLE_SUBTITLES) {
                final ViewStub stub = (ViewStub) findViewById(R.id.subtitles_stub);
                mSubtitlesSurface = (SurfaceView) stub.inflate();
                mSubtitlesSurface.setZOrderMediaOverlay(true);
                mSubtitlesSurface.getHolder().setFormat(PixelFormat.TRANSLUCENT);
            }
        }
    
        @Override
        protected void onStart() {
            super.onStart();
    
            final IVLCVout vlcVout = mMediaPlayer.getVLCVout();
            vlcVout.setVideoView(mVideoSurface);
            if (mSubtitlesSurface != null)
                vlcVout.setSubtitlesView(mSubtitlesSurface);
            vlcVout.attachViews(this);
    
    
            Media media = new Media(mLibVLC, Uri.parse("rtsp://admin:a88888888@183.230.153.189:554"));
            mMediaPlayer.setMedia(media);
            media.release();
            mMediaPlayer.play();
    
            if (mOnLayoutChangeListener == null) {
                mOnLayoutChangeListener = new View.OnLayoutChangeListener() {
                    private final Runnable mRunnable = new Runnable() {
                        @Override
                        public void run() {
                            updateVideoSurfaces();
                        }
                    };
    
                    @Override
                    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                        if (left != oldLeft || top != oldTop || right != oldRight || bottom != oldBottom) {
                            mHandler.removeCallbacks(mRunnable);
                            mHandler.post(mRunnable);
                        }
                    }
                };
            }
            mVideoSurfaceFrame.addOnLayoutChangeListener(mOnLayoutChangeListener);
        }
    
        @Override
        protected void onStop() {
            super.onStop();
    
            if (mOnLayoutChangeListener != null) {
                mVideoSurfaceFrame.removeOnLayoutChangeListener(mOnLayoutChangeListener);
                mOnLayoutChangeListener = null;
            }
    
            mMediaPlayer.stop();
    
            mMediaPlayer.getVLCVout().detachViews();
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            mMediaPlayer.release();
            mLibVLC.release();
        }
    }


     

    布局:

    activity_videoplayer:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical">
    
    
        <FrameLayout
            android:id="@+id/video_surface_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:foregroundGravity="clip_horizontal|clip_vertical"
            android:gravity="center"
            tools:ignore="true">
    
            <SurfaceView
                android:id="@+id/video_surface"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center" />
    
            <ViewStub
                android:id="@+id/subtitles_stub"
                android:layout_width="1dp"
                android:layout_height="1dp"
                android:layout="@layout/subtitles_surface" />
    
    
        </FrameLayout>
    
    </LinearLayout>
    

     

    subtitles_stub:
    <?xml version="1.0" encoding="utf-8"?>
    <SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="1dp"
        android:layout_height="1dp">
    </SurfaceView>

     

     

    引用包:

    implementation files('libs/****.jar')
    
            ndk {
                //选择要添加的对应cpu类型的.so库。
                abiFilters 'armeabi', 'armeabi-v7a'//, 'arm64-v8a', 'x86', 'x86_64'
                // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
            }

     

    build 

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "demo.one"
            minSdkVersion 15
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
            ndk {
                //选择要添加的对应cpu类型的.so库。
                abiFilters 'armeabi', 'armeabi-v7a'//, 'arm64-v8a', 'x86', 'x86_64'
                // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
            }
    
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        implementation 'com.android.support:design:28.0.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    
    
        implementation files('libs/****.jar')
    }
    

     

    权限:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="demo.one">
    
       //......
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity
                android:name=".VideoPalyerActivity"
                android:label="@string/app_name"
                android:theme="@style/AppTheme.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    AndroidManifest.xml 全部贴上来 给你们 看


    在src/main 加上 jniLibs 库

     

    $99 for source code configuration:

     

    展开全文
  • 通过vlcrtsp转成rtmp,然后通过客户端通过video标签播放 通过ffmpeg + nginx + video,rtsp转rtmp播放 通过ffmpeg + video,rtsp转hls播放 这些方案都试过,但是我这边没有成功过,具体的你们可以参考这个 ...

    如何只靠前端实现浏览器播放rtsp视频流

    这次接到任务实现浏览器播放海康rtsp视频流,尝试过很多办法:

    • 通过vlc将rtsp转成rtmp,然后通过客户端通过video标签播放
    • 通过ffmpeg + nginx + video,rtsp转rtmp播放
    • 通过ffmpeg + video,rtsp转hls播放
      这些方案都试过,但是我这边没有成功过,具体的你们可以参考这个 https://juejin.im/post/5d183a71f265da1b6e65b8ff 地址。

    后面使用了vlc+ffmpeg+node+react方式实现了纯前端开发:

    1. 使用vlc等工具测试,确保rtsp流可连接
      官网下载地址:https://www.videolan.org/vlc/index.zh.html
      在这里插入图片描述
      填的地址就是摄像头RTSP视频流地址,然后点播放:可测试URL(rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov)
    展开全文
  • Vlc播放rtsp视频

    千次阅读 2018-11-10 09:23:02
    Vlc播放rtsp视频

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    Vlc播放rtsp视频,网上的例子不少,我看后觉得有点不足的地方,就是他们没有设置播放rtsp视频时的参数,

    参数设置对播放网络视频是很重要的,如果设置不当,或不设置,可能你的程序就播放不了rtsp视频了。。。

    ---------------------------------------------------------------

    说下开发步骤吧,挺简单的,我的环境:win7 64 + vs2010

    首先当然是导入vlc的开发包了:

    // vlc
    #include "./vlc-2.2.1/include/vlc.h"
    #pragma comment(lib, "./vlc-2.2.1/lib/libvlc.lib")
    #pragma comment(lib, "./vlc-2.2.1/lib/libvlccore.lib")

    -------------------------------------------------------------------------------------

    然后定义3个播放rtsp视频时用到的参数:

       libvlc_media_t *m_vlcMedia;
        libvlc_media_player_t *m_vlcMplay;
        libvlc_instance_t *m_vlcInst;

    -------------------------------------------------------------------------------

    接下来就是播放rtsp视频的代码了:

    const char * const vlc_args[] = {        "--demux=h264",        "--ipv4",        "--no-prefer-system-codecs",        "--rtsp-caching=300",        "--network-caching=500",        "--rtsp-tcp",        //"--verbose=2",        //"--extraintf=logger"    };    if (m_vlcInst == NULL)    {        m_vlcInst = libvlc_new(sizeof(vlc_args)/sizeof(vlc_args[0]), vlc_args);    }    if (m_vlcMedia == NULL)    {        //  "rtsp://127.0.0.1:1234/vedio"        m_vlcMedia = libvlc_media_new_location(m_vlcInst, strRtspUrl.GetBuffer());    }    if (m_vlcMplay == NULL)    {        m_vlcMplay = libvlc_media_player_new_from_media(m_vlcMedia);    }    HWND hWndVedio = GetDlgItem(IDC_STATIC_VEDIO)->GetSafeHwnd();    libvlc_media_player_set_hwnd(m_vlcMplay, hWndVedio);    libvlc_media_player_play(m_vlcMplay);

    --------------------------------------------------------------------------------------------

    停止rtsp播放代码如下:

    if (m_vlcMplay != NULL)    {        libvlc_media_player_stop(m_vlcMplay);        libvlc_media_player_release(m_vlcMplay);        m_vlcMplay = NULL;    }    if (m_vlcMedia != NULL)    {        libvlc_media_release(m_vlcMedia);        m_vlcMedia = NULL;    }


    ---------------------------------------------------------------------

    当然,退出程序时,记得释放vlc资源哈:

    // 释放VLC资源    if (m_vlcMplay != NULL)    {        libvlc_media_player_release(m_vlcMplay);        m_vlcMplay = NULL;    }    if (m_vlcMedia != NULL)    {        libvlc_media_release(m_vlcMedia);        m_vlcMedia = NULL;    }    if (m_vlcInst != NULL)    {        libvlc_release(m_vlcInst);        m_vlcInst = NULL;    }

     

    -----------------------------------------------------------------------------------

    效果截图:



    -----------------------------------------------------------------------------------

    该demo代码下载地址:

    Vlc播放rtsp视频demo-src.rar

    http://download.csdn.net/detail/friendan/8707907


    ---------------------

    rtsp视频地址:

        // rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
        // rtsp://211.139.194.251:554/live/2/13E6330A31193128/5iLd2iNl5nQ2s8r8.sdp
        // rtsp://180.168.116.75:554/user=admin&password=&channel=1&stream=0.sdp?
        // rtsp://218.204.223.237:554/mobile/1/691C308E18976C87/8y1vfa435degrqk7.sdp
        // rtsp://218.204.223.237:554/live/1/6D1E43167B3A7BDA/oby9efo80duh9bjf.sdp
        // rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp
        // rtsp://211.139.194.251:554/live/2/13E6330A31193128/5iLd2iNl5nQ2s8r8.sdp
      





               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 浏览器使用VLC插件播放rtsp

    千次阅读 2019-12-09 23:25:56
    我们项目里用到了华为的摄像机,在实况浏览的时候爬了好几天的坑,终于东拼西凑,自己弄好了一份html...2.我是调用vcn上的接口拿到相应摄像机的rtsp地址,下面我就直接上代码了 注意要先在电脑安装VLC插件,才能在浏览器...
  • HTML-VLC-RTSP-截图.zip

    2020-06-13 01:21:37
    html播放rtsp视频流,支持主流浏览器,并实现视频截图。...1,使用VLC页面插件播放,支持大华,海康等。 2,HTML中Object标签无法使用canvas2image进行截图,不要考虑了。可以通过ffmpeg.exe实现。
  • VLC RTSP推流

    2018-11-01 14:33:07
    Qt环境下用VLC开发库实现RTSP网络推流;只含源码,不包含VLC库文件,搭建环境请参加博文https://blog.csdn.net/JellyLi2091/article/details/83616216
  • vlc生成rtsp

    千次阅读 2018-05-12 11:39:00
    vlc-vvv --extraintf=logger rtsp://admin:12345@192.168.0.101/h.264 --sout '#transcode{vcodec=h264,vb=800,scale=1,width=500,height=300,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:...
  • 项目播放直播视频需要rtsp协议,下面将介绍使用VLC播放器把普通视频,mp4为例,转成rtsp协议地址播放,步骤: 一、服务器推流: 1、打开VLC——媒体 ——流 2、点击添加在本地选择文件我选的MP4格式——点击串流...
  • 1 使用vlc media play将文件转换提供rtsp(或者直接使用海康 大华的rtsp) 媒体 --> 流 添加视频文件 ,点击添加一个mp4 文件 选择串流,然后 点击 "下一个" 选择新目标,RTSP ,然后点击添加 端口默认,路径添加...
  • VLC点播RTSP问题处理

    2019-05-26 22:56:21
    HISI的参考RTSP Server. ...抓包看VLC3.x 的RTSP会话过程,PLAY方法后不久,VLC发送了GET_PARAMETERS请求,然后服务端就断开了。 与VLC2.x版本的正常RTSP点播对比, 正是多了一个GET_PARAMETERS操作; 对服务...
  • 经过调研采用了Nginx+OBS+VLC+RTSP(前端数据源头)方式 1、Nginx 我直接在这个链接进行了下载windows下搭建基于nginx的rtmp服务器_windows搭建rtmp服务器,window下nginx配置rtmp-其它代码类资源-CSDN下载 (感谢...
  • Winform VLC万能播放器 本地 file mp4,mp3,rmvb等 网络流url rtsp 等,源码,vlc库,demo exe文件全包含。
  • 1,把vlc的aar文件放入libs中 2,在build.gradle中添加如下代码 android { //... repositories { flatDir { dirs 'libs' } maven { url "http://dl.bintray.com/jlmd/m...
  • 据网上查证,好像没有一个浏览器不安装插件可以直接播放rtsp流媒体。经站长测试,即使安装了插件,有些浏览器也未必支持,比如QQ浏览器,谷歌浏览器等。这里我们选用的是360安全浏览器。第一步:下载插件:vlc-...
  • 本文转自:https://blog.jianchihu.net/video-freeze-rtsp-over-tcp-vlc.html 谢谢原作者的无私分享。 继完成rtmp服务器开发后,最近也写完了rtsp服务器,可以将国标ps流以及其他格式协议码流转rtsp协议输出。...
  • 在遍地都是摄像头的今天,往往需要在各种B/S信息化系统中集成视频播放功能,海康、大华、华为等大厂摄像头遵循监控行业标准,一般只支持RTSP传输协议,而Chrome、Firefox、Edge等现代浏览器的主流版本并不支持RTSP流...
  • VLC搭建RTSP直播流,图文介绍

    万次阅读 热门讨论 2016-07-15 18:33:12
    将一个视频转成rtsp流,通过vlc播放器,搭建一个rtsp服务器,让rtsp客户端去访问这个视频的rtsp流 1 需要有vlc播放器,我的版本如下 2 媒体 --> 流 3 添加视频文件 ,点击添加一个mp4 文件 4 选择串流,...
  • android集成VLC播放rtsp视频流,很好用,直接传rtsp就可以播放,我也是在网上看到的(之前上传的不知道为什么源码变了,重新上传一次)
  • 1.使用时VS2017,低版本打不开的话,新建一个...2.自己找了很多种播放rtsp流的方法,也在网上找了好几个VLC的demo,但是都会报各种错误,例如:试图加载格式不正确的程序,后发现可能是VLC的资源调用的路径可能有问题等

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,207
精华内容 3,282
关键字:

rtspvlc