我在Flutter-Pi上运行Flutter插件video_player的示例,用于Raspberry Pi 3B+
void initState() {
super.initState();
_controller = VideoPlayerController.network('https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4')..initialize().then((_) {setState(() {});});
}
而且很有效
打开文件 *.mp4
void initState() {
super.initState();
_controller = VideoPlayerController.asset('assets/big_bunny.mp4');
_controller.addListener(() {
setState(() {});
});
_controller.setLooping(true);
_controller.initialize().then((_) => setState(() {}));
_controller.play();}
作品也
但是,我需要打开RTP流(UDP)。
我是这样测试gstreamer的
gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! avdec_h264 ! videoscale ! autovideosink sync=false
和Raspberry Pi显示来自流的相机的帧。所以,我想在RaspberryPi上的flutter应用程序中显示它。我想这样使用URI
String pipeline = "udp://<remote-ip>:5000 ! application/x-rtp, media=video, clock-rate=90000, encoding-name=H264, payload=96 ! rtph264depay ! avdec_h264 ! videoscale ! autovideosink sync=false";
..
void initState() {
super.initState();
_controller = VideoPlayerController.network(pipeline)..initialize();
}
但是,我得到错误,没有显示任何内容
[gstreamer video_player] Could not fetch duration. (gst_element_query_duration)
RaspberryPi上的Gstreamer工作良好,但我无法在本地网络中显示flutter-pi udp流
flutter-pi现在使用gstreamer,但是我可以在gstreamer中打开像管道一样的udp流吗?
1条答案
按热度按时间j1dl9f461#
我厌倦了在我的linux应用程序中使用gstreamer库。所以我决定使用Process来运行gstreamer代码
然后你就可以像下面这样通过socket从RowDatagramSocket接收你的gstreamer视频:
当然,如果您将接收数据缓冲区作为数据报类型,则必须指定从套接字接收的图像缓冲区的开始和结束指针
如果你的gstreamer代码是这样的:**“gst-launch-1.0 v4l2src device=/dev/video0!视频/x-raw,帧率=30/1!jpegenc!multipartmux!udpsink host=127.0.0.1 port=5000”表示图像格式为jpeg您的图像指针开始和结束为(ffd 8,ffd 9)表示您必须检查缓冲区中的ff(或255)然后d8(或216)**作为开始图像指针。
我想简单地说,这可能对你有帮助。
注意:我不知道如何才能做到这一点,为h264格式类型,如果任何人看到,并有想法可以帮助我们。