首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从FFmpeg中流RTSP需要哪些步骤?

从FFmpeg中流RTSP需要哪些步骤?
EN

Stack Overflow用户
提问于 2014-11-18 16:51:16
回答 4查看 177.9K关注 0票数 40

从FFmpeg中流RTSP需要哪些步骤?

流UDP并不是一个问题,但由于我想要流到移动设备,这些设备可以本地读取RTSP流,所以我找不到任何设置来说明到底需要什么。我需要像LIVE555这样的RTSP流服务器,还是只能使用FFmpeg?

我的指挥部:

代码语言:javascript
复制
ffmpeg -i space.mp4 -vcodec libx264 -tune zerolatency -crf 18 -f rtsp -muxdelay 0.1 rtsp://192.168.1.200:1234

我得到一个输入/输出错误。

我是否需要一个SDP描述来使用RTSP?如果是的话,我该把它放在哪里?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-19 01:37:24

您可以使用FFserver来使用RTSP来播放视频。

只需将控制台语法更改为如下所示:

代码语言:javascript
复制
ffmpeg -i space.mp4 -vcodec libx264 -tune zerolatency -crf 18 http://localhost:1234/feed1.ffm

创建一个ffserver.config文件(示例),其中声明HTTPPortRTSPPort和SDP流。您的配置文件可能如下所示(可能缺少一些重要的内容):

代码语言:javascript
复制
HTTPPort 1234
RTSPPort 1235

<Feed feed1.ffm>
        File /tmp/feed1.ffm
        FileMaxSize 2M
        ACL allow 127.0.0.1
</Feed>

<Stream test1.sdp>
    Feed feed1.ffm
    Format rtp
    Noaudio
    VideoCodec libx264
    AVOptionVideo flags +global_header
    AVOptionVideo me_range 16
    AVOptionVideo qdiff 4
    AVOptionVideo qmin 10
    AVOptionVideo qmax 51
    ACL allow 192.168.0.0 192.168.255.255
</Stream>

通过这样的设置,您可以通过键入以下命令来监视使用例如VLC的流:

代码语言:javascript
复制
rtsp://192.168.0.xxx:1235/test1.sdp

这是FFserver文档。

票数 27
EN

Stack Overflow用户

发布于 2020-07-22 10:11:51

FWIW,我能够使用简单rtsp服务器和ffmpeg为测试目的设置一个本地RTSP服务器,具体步骤如下:

  1. 使用以下一行为RTSP服务器创建一个名为rtsp-simple-server.yml的配置文件:protocol: tcp
  2. 启动RTSP服务器作为一个码头容器:$ Docker运行--rm -it -v -v -p 8554:8554警报9/rtsp-简单-服务器
  3. 使用ffmpeg将视频文件(永远循环)流到服务器:$ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp ://localhost:8554/live.stream

一旦开始运行,就可以使用ffplay查看流:

代码语言:javascript
复制
$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream

请注意,简单rtsp服务器还可以处理UDP流(i.s.o )。但是,将服务器作为Docker容器运行是很困难的。

票数 20
EN

Stack Overflow用户

发布于 2020-09-27 17:19:46

我使用过的另一个流命令是将ffmpeg输出传输到vlc来创建流。如果没有安装这些文件,可以添加它们:

代码语言:javascript
复制
sudo apt install vlc ffmpeg

在本例中,我使用http上的mpeg传输流(ts),而不是rtsp。我尝试过这两种方式,但是http ts流在我的播放设备上似乎没有故障。

我使用的是一个视频捕获HDMI>USB设备,它将自己设置在video4linux2驱动程序上作为输入。管道通过vlc必须是CPU友好的,因为我的旧双核奔腾CPU能够进行实时编码,没有掉线帧。我也遇到过一些其他方法的音频同步问题,这种方法总是有完美的音频同步。

您必须调整设备或文件的命令。如果您使用一个文件作为输入,您将不需要所有的v4l2和alsa的东西。下面是ffmpeg\vlc命令:

代码语言:javascript
复制
ffmpeg -thread_queue_size 1024 -f video4linux2 -input_format mjpeg -i /dev/video0 -r 30 -f alsa -ac 1 -thread_queue_size 1024 -i hw:1,0 -acodec aac -vcodec libx264 -preset ultrafast -crf 18 -s hd720 -vf format=yuv420p -profile:v main -threads 0 -f mpegts -|vlc -I dummy - --sout='#std{access=http,mux=ts,dst=:8554}'

例如,假设您的服务器PC IP为192.168.0.10,则该流可以由以下命令播放:

代码语言:javascript
复制
ffplay http://192.168.0.10:8554
#or
vlc http://192.168.0.10:8554

更新:这里有一个命令用于rtsp,而不是使用rtsp-:

代码语言:javascript
复制
ffmpeg -thread_queue_size 1024 -f video4linux2 -input_format mjpeg -video_size 1280x720 -r 30 -i /dev/video0 -f alsa -thread_queue_size 1024 -i plughw:CARD=MS2109,DEV=0 -acodec mp2 -vcodec libx264 -preset ultrafast -crf 20 -s hd720 -vf format=yuv420p -profile:v main -f mpegts -|vlc -I dummy - --sout='#rtp{sdp=rtsp://:8554/} --sout-all --sout-keep'

如果您的PC ip为192.168.0.10,则rtsp流由以下命令播放:

代码语言:javascript
复制
vlc rtsp://192.168.0.10:8554/
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26999595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档