【发布时间】:2016-11-01 00:24:12
【问题描述】:
我有一个要求,我必须将 RTSP 流转换为 mp4 视频或帧(视情况而定)并希望将它们保存在 HDFS(Hadoop 文件系统)中。
为此,我尝试使用 ffmpeg 将 RTSP 流转换为 mp4 视频/帧并将视频/帧保存在本地文件系统中。如下 -ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv -r 1 -f image2 frames/big_frame-%3d.bmpffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv big_bunny.mp4
然后使用 put 命令将视频/帧(存储在本地文件系统中)保存到 hdfs -hadoop fs -put frames/ /user/maddy/hadoop fs -put big_bunny.mp4 /user/maddy/
这是有效的。但我想直接这样做(即一步完成,无需将所需文件保存在本地文件系统中)
我尝试了一些东西(比如下面的命令)但它不起作用ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv hdfs://localhost:9000/user/maddy/big_bunny.mp4
我收到此错误 -hdfs://localhost:9000/user/maddy/big_bunny.mp4: Protocol not found
那么有什么方法可以使用 ffmpeg 直接将这些文件保存到 hdfs 中,而无需先保存在我的本地文件系统中。
或者有没有其他工具可以实现这一点?
编辑:
试过ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv - | hadoop fs -put - /user/maddy/
正如@incBrain 建议的那样
但收到此错误 -[NULL @ 0xce37a0] Unable to find a suitable output format for 'pipe:'
pipe:: Invalid argument
【问题讨论】:
-
你可以试试这个:
ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv - | hadoop fs -put - /user/maddy/? -
@incBrain 试过了,但它也不起作用..用运行上述命令后出现的错误编辑了问题。
-
嗯然后
ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv pipe:1 | hadoop fs -put - /user/maddy/应该这样做。我希望。如果没有,也许使用>重定向到命名管道可能是一个解决方案。 -
@incBrain 不,它也不起作用。我也没有尝试重定向到命名管道,因为我不知道。
-
@incBrain 这是工作
ffmpeg -i rtsp://10.0.37.150:8554/test.mkv -f avi pipe: | hadoop fs -put - /user/maddy/test.avi。缺少-f参数,该参数指定要解码的视频格式。虽然当我给-f mp4时它不起作用。顺便说一句,谢谢你的帮助!!
标签: hadoop video ffmpeg hdfs rtsp