如何将树莓派的h264 udp流保存到原始.h264文件?

尝试将raspivid直接保存到原始视频,并且可以正常工作。但是,在流式传输到计算机后,.h264在使用VLC播放时不会显示任何内容。

树莓派脚本:

raspivid -t 0 -w 800 -h 600 -fps 16 -g 5 -b 1000000 -vf -o - | gst-launch-1.0  --gst-debug=3 fdsrc ! h264parse ! rtph264pay ! udpsink host=<<IP>> port=5000


在接收方:

gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, clock-rate=90000, encoding-name=H264, payload=96 ! rtpjitterbuffer ! rtph264depay ! filesink location=test.h264


能做到吗?

最佳答案

如果您获取原始的h264(avc格式),则可能无法作为文件播放。您可以强制将其转换为可以直接保存到文件的字节流,也可以将容器与avc一起使用。

gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, clock-rate=90000, encoding-name=H264, payload=96 ! rtpjitterbuffer ! rtph264depay ! h264parse ! "video/x-h264, format=byte-stream" ! filesink location=test.h264

gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, clock-rate=90000, encoding-name=H264, payload=96 ! rtpjitterbuffer ! rtph264depay ! h264parse ! mp4mux ! filesink location=test.mp4


您还可以在发送方上强制使用字节流格式:

raspivid -t 0 -w 800 -h 600 -fps 16 -g 5 -b 1000000 -vf -o - | gst-launch-1.0 --gst-debug=3 fdsrc ! h264parse ! "video/x-h264, format=byte-stream" ! rtph264pay ! udpsink host=<> port=5000

关于linux - 如何将原始h264树莓派流保存到.h264文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27074735/

10-11 08:06