我只尝试从mpegts流中提取一个(Meta)数据流。
这是ff探针返回的流。
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:2和0:3,从而使所产生的mpegts流看起来像?
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)发布于 2020-08-07 18:23:21
您可以使用ffprobe来确定索引:
ffprobe -v error -select_streams d -show_entries stream=index,codec_name -of csv=p=0 udp://[IP]结果:
2,klv使用ffprobe和awk自动获取KLV索引的Bash示例:
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]https://stackoverflow.com/questions/63302454
复制相似问题