vlc的应用之九:用vlc串流摄像头

请移步https://higoge.github.io/,全部下载资料在那个博客都能找到。谢谢。 git

--------------------------------------------------------------------github

    n就没有更新博客了,主要是Jeremiah最近对vlc研究的很是的少了,工做重点转移了,又增长了管理工做,让Jeremiah忙的晕头转向的。
编程

 

    这篇博客是好久以前就想写的,今天终于提笔写了,心情仍是比较爽的。废话很少说。网络

 

0. 环境搭建
Jeremiah此次主要是用的vlc-1.0.0(英文版)进行讲解。首先须要准备摄像头,Jeremiah用的是一个普通摄像头(之前钓MM用的,嘻嘻),驱动安装好后,在“个人电脑”中显示以下。
ide

 

1. vlc播放摄像头编码

开启vlc-1.0.0,media->open capture device,进入Capture Device页面。这个也能够经过media->Advanced open file,选取此标签页。
video device name选择VIMICRO USB PC Camera (ZC0301PLH),若是没有,请先选择Refresh list刷新列表。
audio device name选择SoundMAX HD Audio,这个是Jeremiah的声卡。
spa


以后能够勾选show more options,里面但是设置缓冲及看到MRL和Edit Options,这些信息都是很重要的。Advance Option按钮里面有一些详细设置,你们能够进去选择,其中video size是能够作调整的。下面会讲到。命令行


以后点play,就能够播放了。code

 

2. 用命令行开启vlc播放摄像头
命令行的最大好处就是,vlc命令后面的参数,就是咱们在编程的时候调用libvlc_new的argv,将这些参数搞明白,咱们就能够在编程的时候调用了。
orm


开启cmd,切换到vlc目录下。


根据1中的MRL和Edit Options信息,设置vlc播放参数以下。

vlc dshow:// :dshow-vdev="VIMICRO USB PC Camera (ZC0301PLH)" :dshow-adev="SoundMAX HD Audio" :dshow-size=320*240

 

各个参数什么意思都是很明显的,若是不明白,就运行vlc -H,而后到vlc目录下面去找vlc-help.txt,里面是所有的参数的介绍。

 

3. 将vlc播放的摄像头信息存入文件中

播放成功以后,在达到咱们的目的前,咱们先作一个简单的验证工做,就是播放摄像头并存入文件。


根据之前stream到文件的参数,修改2的参数以下。

vlc dshow:// :dshow-vdev="VIMICRO USB PC Camera (ZC0301PLH)" :dshow-adev="SoundMAX HD udio" :dshow-size=320*240 :sout=#transcode{vcodec=h264,vb=800,scale=1,acodec=mp3,ab=128,channels=2,samplerate=44100}:std{access=file,mux=ts,dst=D:/01.ts}}

 

这里用到了转码,就是将摄像头的视频编码为h264,音频编码为MP3,而后封装为ts写入到d:/01.ts中。


这个不会显示摄像头,可是经过刷新d:/01.ts就会发现这个文件是在增大的,也就是有视频流在写入。

 

4. 将摄像头串流到网络中
根据3的参数作简单的修改就能够达到串流摄像头视频流到网络的目的了。修改3的参数以下。

vlc dshow:// :dshow-vdev="VIMICRO USB PC Camera (ZC0301PLH)" :dshow-adev="SoundMAX HD Audio" :dshow-size=320*240 :sout=#transcode{vcodec=h264,vb=800,scale=1,acodec=mp3,ab=128,channels=2,samplerate=44100}:duplicate{dst=display,dst=rtp{dst=127.0.0.1,mux=ts,port=1234}}

 

这里的duplicate你们应该都很熟悉了,由于在录像,vlm里面都讲过这个参数。参数的意思是,将摄像头的音视频流分别编码为MP3和h264以后封装为ts,而后经过rtp发送到127.0.0.1的1234端口上,同时显示出来。若是但愿发送到其余网络地址或组播里面只须要改变127.0.0.1和1234为咱们须要的地址和端口便可。


再开启一个vlc,播放这个ts over rtp流。

vlc rtp://@:1234 --rtp-caching=1500

 

成功后就能够看到了。切图以下:

 

左边的是摄像头的流服务,右边的是流的客户端,从下边的地址就能看的很清楚。

 

5. 遗留问题:从图片能够看出,播放的视频颜色是不对的,是摄像头的问题仍是vlc自己的问题仍是参数设置的问题,如今不得而知,固然摄像头自己是没问题的,由于qq视频都很正常。但愿谁研究出来告诉我一声。谢谢。