ffmpeg学习笔记1----->udp流多路节目实现分离

环境:centos/ubuntu 安装好ffmpeg即可

安装教程:https://trac.ffmpeg.org/wiki/CompilationGuide

准备需要一个udp组播流(含有多路节目那种)

可以用下面的命令查看流的信息:

ffprobe -i udp://224.2.2.21:10001             //-i 后接的是你的流地址

ok看到目标,我们可以进行普通操作

ffmpeg -re -i udp://224.2.2.21:10001 -s 1280*720  -vcodec h264  -acodec copy -crf 30  -f mpegts udp://239.0.0.1:8001  执行完,发现报缓存溢出的错误。他叫我们加fifo_size 参数。好吧那我们就加上

ffmpeg -re -i udp://224.2.2.21:10001?fifo_size=409600 -s 1280*720  -vcodec h264  -acodec copy -crf 30 -f mpegts udp://239.0.0.1:8001

再次运行,走你~

这次就正确了,没有异常退出。那么问题来了,现在的这个流是那一路节目视频音频又是否同步?

ok我们在看一下输出表

这是第一个节目到第四个节目。由于字符编码问题,节目名称为乱码。那么看看我们刚才执行的命令视频和音频是如何转的

这里我们看到了貌似好像没有什么规律。所有我肯定的话,这个流拉出来的节目他肯定是视频和音频不同步(这里的不同步是指B节目的音频+A节目的视频组成了我们现在的流,这样肯定是不行的),我们需要怎么做。这里加一个-map参数指定一下,对参数不是很了解,链接在此:http://blog.csdn.net/xuheazx/article/details/51969535

于是我们的命令变成了这样:

ffmpeg -re -i udp://224.2.2.21:10001?fifo_size=409600 -s 1280*720 -map \#0x3e9 -vcodec h264 -map \#0x3ea -acodec copy -crf 30 -f mpegts udp://229.0.0.1:8001

map后的参数对应标签后的参数。

这样就ok了,尝试运行一下~

大功告成!



ps (#0:x) 这个东西会变得不是唯一标识,唯一的是([0x407])。然后打开VLC测试。我太懒就不做了。

88~


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值