n就没有更新博客了,主要是Jeremiah最近对vlc研究的非常的少了,工作重点转移了,又增加了管理工作,让Jeremiah忙的晕头转向的。
这篇博客是很久之前就想写的,今天终于提笔写了,心情还是比较爽的。废话不多说。
0. 环境搭建
Jeremiah这次主要是用的vlc-1.0.0(英文版)进行讲解。首先需要准备摄像头,Jeremiah用的是一个普通摄像头(以前钓MM用的,嘻嘻),驱动安装好后,在“我的电脑”中显示如下。
Jeremiah这次主要是用的vlc-1.0.0(英文版)进行讲解。首先需要准备摄像头,Jeremiah用的是一个普通摄像头(以前钓MM用的,嘻嘻),驱动安装好后,在“我的电脑”中显示如下。
![](https://i-blog.csdnimg.cn/blog_migrate/2c8e9a031e48b1bdb3716afbf263a30e.jpeg)
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的声卡。
video device name选择VIMICRO USB PC Camera (ZC0301PLH),如果没有,请先选择Refresh list刷新列表。
audio device name选择SoundMAX HD Audio,这个是Jeremiah的声卡。
之后可以勾选show more options,里面可是设置缓冲及看到MRL和Edit Options,这些信息都是很重要的。Advance Option按钮里面有一些详细设置,大家可以进去选择,其中video size是可以做调整的。下面会讲到。
之后点play,就可以播放了。
2. 用命令行开启vlc播放摄像头
命令行的最大好处就是,vlc命令后面的参数,就是我们在编程的时候调用libvlc_new的argv,将这些参数搞明白,我们就可以在编程的时候调用了。
命令行的最大好处就是,vlc命令后面的参数,就是我们在编程的时候调用libvlc_new的argv,将这些参数搞明白,我们就可以在编程的时候调用了。
开启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的参数如下。
根据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
成功后就可以看到了。切图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0e114dddccf8513e06858c8bc821a715.jpeg)
左边的是摄像头的流服务,右边的是流的客户端,从下边的地址就能看的很清楚。
5. 遗留问题:
从图片可以看出,播放的视频颜色是不对的,是摄像头的问题还是vlc本身的问题还是参数设置的问题,现在不得而知,当然摄像头本身是没问题的,因为qq视频都很正常。希望谁研究出来告诉我一声。谢谢。
从图片可以看出,播放的视频颜色是不对的,是摄像头的问题还是vlc本身的问题还是参数设置的问题,现在不得而知,当然摄像头本身是没问题的,因为qq视频都很正常。希望谁研究出来告诉我一声。谢谢。
本文出自 “Jeremiah的程序乐园” 博客,请务必保留此出处http://jeremiah.blog.51cto.com/539865/245509