vlc的流输出功能

流输出功能,可以将vlc读取到的流,输出到文件或者通过网络发送,客户端可以使用http、rtp、rtsp等协议访问,还可以进行转码等操作。

参考http://wiki.videolan.org/Documentation:Streaming_HowTo

流输出语法

  1. % vlc input_stream --sout "#module1{option1=parameter1{parameter-option1},option2=parameter2}:module2{option1=...,option2=...}:..."

也可以使用下面的语法

  1. % vlc input_stream --sout-module1-option1=... --sout-module1-option2=... --sout-module2-option1=... --sout-module2-option2=... ...

1.standard模块(std)

example:

vlc test.mp4 -vvv --loop --sout "#standard{access=http,mux=ts,dst=192.168.9.80:10086/stream}"

将文件使用http协议发送到网络,使用ts封装,客户端使用http://192.168.9.80:10086/stream访问

关于standard的必选项

access,输出的协议。file(保存到文件)、udp、http、https、mmsh(使用微软的mms协议,仅支持基于http的mms协议)

mux,输出复用器。支持ts、ps、mpeg1、ogg、asf、asfh、avi、mpjpeg

dst,输出目的地址,如果access=file,就是保存的文件路径及文件名

对于某些视频,使用上面示例中的命令参数时,vlc接收端只能听见音频,消息中显示的错误日志如下 :

ts error: MPEG-4 descriptor not found

  1. packetizer_mpeg4audio info: AAC channels: 2 samplerate: 44100
  2. avcodec info: obtained IDirect3DDeviceManager9
  3. avcodec info: DXVA2CreateVideoService Success!
  4. avcodec error: DxFindVideoServiceConversion failed

但是使用mux=asf后,却能够正常播放

vlc test.mp4 -vvv --loop --sout "#standard{access=http,mux=asf,dst=192.168.9.80:10086/stream}"

这个问题与mp4文件格式有关,待解决。

2.rtp模块

使用rtp协议发送数据,也支持rtsp

example:

1)生成sdp文件

  1. vlc.exe test.mp4 -vvv  --loop --sout "#rtp{dst=92.168.9.80,sdp=file:///E:/stream.sdp}"

启动rtp传输,该命令生成一个sdp的描述文件stream.sdp,将其copy到客户机上,就可以使用vlc进行播放了,dst指定客户端的ip。

2)使用rtsp进行传输

  1. vlc.exe test.mp4 -vvv  --loop --sout "#rtp{sdp=rtsp://192.168.9.80:10086/stream}"

客户端面直接使用rtsp://192.168.9.80:10086/stream即可访问

3.es模块

es模块可以从stream中分离出不同的elementary streams,保存为不同的文件或者发送到不同的目的地址。

example:

  1. vlc.exe test.mp4 -vvv --no-loop  --sout "#es{access=file, dst-video=e:/video_%d.%c, dst-audio=e:/audio_%d.%c}"

提取文件中的音视频,并保存到文件中。--no-loop表示不用循环,%d代表流的track号,%c表示 编码的FOURCC。

4.transcode模块

transcode模块用于转码, 也可以完成一些附加的功能re-scaling, deinterlacing, resampling,crop等,除了音视频外还可以处理字幕,叠加图片到视频

支持的编码格式参考:http://www.videolan.org/streaming-features.html

example:

按指定参数进行音视频转码,并保存为avi文件,后面级联standard模块完成文件保存功能

  1. vlc.exe test.mp4 -vvv --sout "#transcode{vcodec=h264, vb=300, venc=x264, fps=15, width=352, height=288, acodec=mp3, aenc=ffmpeg, samplerate=44100, threads=2}:standard{access=file,mux=avi,dst=e:/test.avi}

venc,指定视频编码器,支持ffmpeg、x264、theora,可以进一步指定编码的详细参数

aenc,指定音频编码器,支持ffmpeg、vorbis、speex

threads,指定编码时线程数据,多核时可以提高效率

5.duplicate模块

duplicate模块可以复制stream,以用于不同的chains。

example:

  1. vlc.exe test.mp4 -vvv --sout "#duplicate{dst=standard{access=file,mux=avi,dst=e:/test.avi}, dst=rtp{dst=192.168.9.80,name=stream,sdp=rtsp://192.168.9.80:10086/stream}, dst=display}"

通过dumplicate模块得到3个输出,保存为*.avi、发送到rtsp server、本地显示

dumplicate还有一个select选项,用于选择处理的stream

其它说明:

1.默认情况下,vlc只会处理第一个音频和视频流,可以使用--sout-all选项,处理所有的流

2.--no-sout-audio,--no-sout-video选项可以禁止输出音频或者视频

3.更多示例见http://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples

vlc的流输出功能的更多相关文章

  1. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

  2. 四、Shell输入、输出功能和字符颜色设置

    一.Shell输入功能 1.键盘输入   方式一: [root@Salve four]# cat test.sh #!/bin/bash #-e 参数可以解析语句中的转义字符 echo -e &quo ...

  3. YUV422蓝屏显示输出功能辅助调试

    YUV422蓝屏显示输出功能辅助调试 YUV422有YUYV,YVYU,UYVY,VYUY四种,以下笔者就就以UYVY为例介绍一下数据构成.因为常常要跟视频输入打交道,所以YUV422这种常见的视频信 ...

  4. DirectX11 With Windows SDK--16 流输出阶段

    前言 在上一章,我们知道了如何使用几何着色器来重新组装图元,比如从一个三角形分裂成三个三角形.但是为了实现更高阶的分形,我们必须要从几何着色器拿到输出的顶点.这里我们可以使用可选的流输出阶段来拿到顶点 ...

  5. day03 变量 运算符 基本数据类型 输出功能 格式化输出

    变量补充 变量的命名 1变量名的命名的大前提:应该能够反映出变量值所记录的状态 具体的1.变量名由字母数字下划线组成 2.不能以数字开头 3.不能使用关键字命名为变量名 两种写法 1.驼峰体(由字母组 ...

  6. SRS流媒体服务器搭建+ffmpeg推流VLC取流观看

    一.编译SRS https://github.com/winlinvip/simple-rtmp-server 目前有1.0-release.2.0.3.0等版本 2.0官方文档地址:https:// ...

  7. linux 判断文件最后更新时间 实现监控日志是否有输出功能

    linux 判断文件最后更新时间 实现监控日志是否有输出功能. 需求:监控log.txt日志文件,超过一分钟没输出内容就认为是停了,则自动启动程序. 用stat 可以看文件的更新时间stat -c % ...

  8. ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据

    在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...

  9. shell输入与输出功能

    一.shell输入功能 1. 2. 二.shell输出功能 1.字符界面前景颜色 2.字符界面背景颜色 3.其他输出命令 ①cat 输出文本,将文本的格式也输出 ②tee 既输出,也保存到文件里 ③m ...

随机推荐

  1. Hadoop_30_MapReduce_多job串联

    一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现 示例代码:  每个job装配完成才可以进行下面代码: Cont ...

  2. okhttp缓存策略源码分析:put&get方法

    对于OkHttp的缓存策略其实就是在下一次请求的时候能节省更加的时间,从而可以更快的展示出数据,那在Okhttp如何使用缓存呢?其实很简单,如下: 配置一个Cache既可,其中接收两个参数:一个是缓存 ...

  3. CCPC2019厦门站游记

    day0 人生第二次坐飞机,快乐 出机场到厦门,周围短袖短裤,我秋衣秋裤,快乐 宾馆条件不错,快乐 day1 早上休闲模式,整版子写模板题,快乐 宾馆有露天平台,有桌椅,有风,快乐 中午报道,领衣服, ...

  4. centos 最小化安装pycharm

    首先找到安装地址 https://www.jetbrains.com/pycharm/download/#section=linux 选择linux. 打开浏览器的network监视,我用的chrom ...

  5. 红米k30评测+全面解读

    暂时还没有图片等页面美化..其实网上有很多美图,这里不再粘贴了 红米k30是小米公司子品牌红米最近推出的一款性价比非常高的手机,以下进行多方面解读: 本人会尽量用不懂手机都能理解的语言来各方面讲解k3 ...

  6. python渗透测试工具集

    下载地址:https://github.com/githubmaidou/tools

  7. Hive的JDBC连接

    首相要安装好hive 1.首先修改配置文件文件为hive 路径下的  conf/hive-sit.xml 将内容增加 <property> <name>hive.server2 ...

  8. nginx限流&健康检查

    Nginx原生限流模块: ngx_http_limit_conn_module模块 根据前端请求域名或ip生成一个key,对于每个key对应的网络连接数进行限制. 配置如下: http模块   ser ...

  9. toggle([speed],[easing],[fn]) 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。

    toggle([speed],[easing],[fn]) 概述 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件. 如果元素是可见的,切换为隐藏的:如果元素是隐藏的,切换为 ...

  10. Ubuntu 蓝牙鼠标一段时间失效的问题

    问题: 我有一个小巧的蓝牙鼠标,但有一个问题. 当它不使用一段时间时,它会关闭. 好的我得按按钮把它打开. 但是我发现,在我在蓝牙小程序下单击"连接"之前,它不会再被Ubuntu识 ...