我需要将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.bmp ffmpeg -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
1条答案
按热度按时间3lxsmp7m1#
可以重定向的输出
ffmpeg
到一个管道和使用hadoop fs -put - /user/...
从中读取输入stdin
这样地:请注意,您将需要
-f <format>
期权自ffmpeg
无法从文件扩展名猜测输出格式,因为我们使用管道。