使用ffmpeg进行RTMP推流时如何添加数值类型的create_time元数据
解决方案
你当前使用的-metadata create_time=xxx写法,ffmpeg默认会将值标记为字符串类型写入FLV的onMetaData字段,所以接收端拿到的就是字符串格式的元数据。要写入数值类型的create_time,按以下方法操作即可:
方法1(适用ffmpeg 4.0及以上版本,推荐)
直接在元数据值后加:i后缀,指定为整数类型即可,把你命令中的:
-metadata create_time=1543434
修改为:
-metadata create_time=1543434:i
修改后的完整推流命令如下:
ffmpeg -loop 1 -f image2 -i test.jpg -pix_fmt yuv420p -vcodec libx264 -b:v 800k -crf 35 -intra-refresh 1 -g 1 -filter:v scale="480:trunc(ow/a/2)*2" -r 60 -metadata create_time=1543434:i -preset veryfast -tune zerolatency -f flv "stream-url"
如果需要写入浮点类型的数值,把后缀改成:f即可,例如-metadata create_time=1543434.123:f。
验证效果
你可以用ffprobe拉取流地址查看元数据类型,执行以下命令:
ffprobe -v quiet -print_format json -show_format "stream-url"
查看输出的format.tags.create_time字段,如果没有被引号包裹,就是数值类型。
内容的提问来源于stack exchange,提问作者Иван Емельяненко
相关产品推荐
相关产品推荐

