首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ffmpeg中通过过滤器映射元数据流

在ffmpeg中通过过滤器映射元数据流
EN

Stack Overflow用户
提问于 2020-08-07 13:03:07
回答 1查看 900关注 0票数 2

我只尝试从mpegts流中提取一个(Meta)数据流。

这是ff探针返回的流。

代码语言:javascript
复制
Stream #0:0[0x12c]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x12d]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
Stream #0:2[0x5]: Data: bin_data ([6][0][0][0] / 0x0006)
Stream #0:3[0x262]: Data: bin_data (FBID / 0x44494246)
Stream #0:4[0x258]: Data: klv (KLVA / 0x41564C4B)

我只需要视频,音频和知识流(0:4)。

而我可以通过指定它的索引来映射这个流

ffmpeg -i udp://[IP] -map 0:4 -map 0:v -map 0:a -f mpegts udp://[IP]

我不想依赖容器中的klv流位置。

我也试过

ffmpeg -i udp://[IP] -map 0:d:m:klv -map 0:v -map 0:a -f mpegts udp://[IP]

但这更像是猜测。

我如何在不指定流索引的情况下包括视频、音频和klv,或者排除流0:20:3,从而使所产生的mpegts流看起来像?

代码语言:javascript
复制
Stream #0:0[0x12c]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x12d]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
Stream #0:2[0x258]: Data: klv (KLVA / 0x41564C4B)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-07 18:23:21

您可以使用ffprobe来确定索引:

代码语言:javascript
复制
ffprobe -v error -select_streams d -show_entries stream=index,codec_name -of csv=p=0 udp://[IP]

结果:

代码语言:javascript
复制
2,klv

使用ffprobeawk自动获取KLV索引的Bash示例:

代码语言:javascript
复制
ffmpeg -i udp://[IP] -map 0:v -map 0:a -map 0:"$(ffprobe -v error -select_streams d -show_entries stream=index,codec_name -of csv=p=0 udp://[IP] | awk -F, '/klv/ {print $1}')" -c copy -f mpegts udp://[IP]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63302454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档