ffmpeg使用tee实现单次编码多路输出

ffmpeg使用tee实现单次编码多路输出

tee简介

首先贴一下官方手册的链接:https://ffmpeg.org/ffmpeg-formats.html#tee

tee muxer可以将相同的数据写到多个文件或者其它的muxer。例如:它可以同时将一路视频流输出到网络和本地磁盘。与ffmpeg的默认多路输出不同的是,用tee只编码一次。

tee框图

语法

和普通的ffmpeg命令行相比,使用tee主要是两点区别:

1.主干的'-f'指定'tee';

2.输出路径是由'|'分隔的各个路径集合。

#例如:
ffmpeg -i input.file -acodec aac -vcodec h264 -f tee -map 0:v -map 0:a "tee1.mp4|tee2.flv"

具体的,tee还支持一些参数:

f
直接指定封装格式。有的时候靠ffmpeg根据输出路径猜封装格式是不牢靠的,直接指定格式,简单暴力。
    
bsfs[/spec]
设置比特率过滤器。

select
选择指定的流输出,默认是使用全部流(主干)。


实例
# 1. 单路输入,输出一路mp4本地,一路TS over UDP (其中TS over UDP需要指定格式)
ffmpeg -re -i Meerkats.mp4 -acodec aac -vcodec h264 -f tee -map 0:v -map 0:a "tee1.mp4|[f=mpegts]udp://10.33.2.27:9999"

# 2. 使用ffmpeg进行编码,实现单路输入,四路输出(一路rtmp,一路ts,一路mp4,一路aac)。
ffmpeg -re -i Meerkats.mp4 -acodec aac -vcodec h264 -flags +global_header -strict experimental -f tee -map 0:v -map 0:a "[f=flv]rtmp://10.33.1.48/live1/tee1|[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac"



转载于:https://my.oschina.net/zhangxu0512/blog/745273

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java与FFmpeg和Nginx可以实现直播多路流的并发播放。以下是一个简单的示例代码: 首先,我们需要导入Java中的FFmpeg框架,并且创建一个FFmpeg的实例。然后,我们可以使用FFmpeg编码、转码、合并和分割视频流。 接下来,我们需要使用Nginx作为媒体服务器来进行流媒体的发布和分发。首先,我们需要配置Nginx来支持RTMP流媒体协议。我们可以通过在Nginx的配置文件中添加如下内容来实现: ``` rtmp { server { listen 1935; chunk_size 4096; application live { live on; } } } ``` 然后,我们可以使用Java代码来调用FFmpeg来进行视频的编码和推流。我们可以使用FFmpeg的命令行选项来指定输入源和输出格式。例如,我们可以使用以下命令将本地摄像头的视频流推送到Nginx: ```java String command = "ffmpeg -i /dev/video0 -f flv rtmp://localhost/live/stream"; Process process = Runtime.getRuntime().exec(command); ``` 最后,我们可以使用Nginx来分发视频流。我们可以使用视频播放器来播放Nginx服务器上的视频流。例如,我们可以使用以下HTML代码来实现: ```html <video src="rtmp://localhost/live/stream"></video> ``` 这样,我们就可以使用Java、FFmpeg和Nginx来实现直播多路流的并发播放。我们可以动态地将多个视频源合并并分发给多个观众,从而实现高效的直播。这个示例代码只是一个简单的演示,实际上还有很多其他的功能和细节需要考虑,比如音频处理、流控制等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值