gpt4 book ai didi

ffmpeg - 如何将 mjpeg 文件流式传输为 rtsp

转载 作者:行者123 更新时间:2023-12-04 23:06:33 36 4
gpt4 key购买 nike

我们有一个 mjpeg 视频,从网络摄像头获得并存储到 *.avi 文件中,仍然编码为 mjpeg。

我们需要将此文件重新流式传输为 rtsp(并且仍然保留 mjpeg 在那里,即不解码)。目标是为处理视频的软件模拟获取此视频的网络摄像头。该文件可以用 vlc/ffplay 打开,没有任何问题。 ffmpeg 的行为就像它正在流式传输一样,但是,ffplay/vlc 无法打开此流。

我们尝试使用 gstreamer 进行流式传输。

1) 我们没有为 gstreamer 管道找到免费的 rtsp sink 元素。那么,rtspsink 是否有免费的类似物来使用 gst-launch 启动这个管道?我们需要而且只需要 Actor ,所以我们不需要像 rtspsink 那样高级的元素。

2) 我们还尝试构建自己的简单 rtsp 服务器,如 http://weeklybuild.com/2013/01/creating-an-rtsp-stream-with-gstreamer/ 中所述

用 filesrc 替换 videotestsrc;但是我们应该在那里使用什么样的元素?仅使用 filesrc 无济于事;我们会遇到与使用 ffmpeg 流式传输相同的问题。但是我们需要什么样的元素,如果我们不想解码/编码它,只是为了流式传输文件(重现网络摄像头实际所做的事情)。

 $ ffplay rtsp://127.0.0.1:8554/test -loglevel debug
avplay version 0.8.5-6:0.8.5-1, Copyright (c) 2003-2012 the Libav developers
built on Jan 13 2013 12:05:48 with gcc 4.7.2
configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.5-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avutil configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avcodec configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avformat configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
swscale configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
postproc configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable- postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
libavutil 51. 22. 1 / 51. 22. 1
libavcodec 53. 35. 0 / 53. 35. 0
libavformat 53. 21. 1 / 53. 21. 0
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 15. 0 / 2. 15. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 52. 0. 0 / 52. 0. 0
[rtsp @ 0x7f558c0008c0] method DESCRIBE failed: 503 Service Unavailable
[rtsp @ 0x7f558c0008c0] CSeq: 2
Server: GStreamer RTSP server
Date: Thu, 22 Aug 2013 07:49:30 GMT

rtsp://127.0.0.1:8554/test: Invalid data found when processing input

当我尝试按照示例构建的 gstreamer 服务器时,一切都很好,即使用 videotestsrc

最佳答案

仅使用 filesrc 元素是行不通的,因为它没有提供适当的上限来描述它生成的缓冲区的内容。您需要使用的实际元素取决于容器和编解码器。如果例如容器是avi,视频编解码器是mjpeg,你需要这样一个管道:

filesrc location=video.avi ! avidemux ! jpegdec ! x264enc ! rtph264pay name=pay0 pt=96

还有一个通用元素 decodebin2,它会自动检测容器和编解码器:
filesrc location=video.avi ! decodebin2 ! x264enc ! rtph264pay name=pay0 pt=96

关于ffmpeg - 如何将 mjpeg 文件流式传输为 rtsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18374616/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com