9

因此,我一直在与 FFMPEG 合作开展一个项目,该项目涉及使用 RTP 通过互联网将视频从一台计算机流式传输到另一台计算机。我想把它带入 ffmpeg 并使用 ffserver 在本地网络上显示它。

据我了解,您需要有一个 SDP 信息,以便接收 ffmpeg 实例可以解释 RTP 流。尽管网页上说了什么,但我在打印到控制台的信息中找不到 SDP 信息。

如何强制发送 ffmpeg 实例输出 SDP 信息,以便我可以使用它来配置我的接收端?

现在,我正在 Windows 7 上进行测试,但最终的解决方案将在 linux 上。

我正在运行的测试命令是

ffmpeg -fflags +genpts -i files\2005-SFSD-sample-mpeg1.mpg -threads 0 -r 10 -g 45
-s 352x240 -deinterlace -y 2005.mp4 -an -threads 0 -r 10 -g 45 -s 352x240 
-deinterlace -f rtp rtp://192.168.200.198:9008

我的ffmpeg信息是...

ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers built on Jun 23 2011 14:22:23 with gcc 4.5.3 
configuration: 
--disable-static  
--enable-shared 
--enable-gpl  
--enable-version3 
--enable-memalign-hack  
--enable-runtime-cpudetect 
--enable-avisynth 
--enable-bzlib 
--enable-frei0r 
--enable-libopencore-amrnb 
--enable-libopencore-amrwb 
--enable-libfreetype 
--enable-libgsm 
--enable-libmp3lame 
--enable-libopenjpeg 
--enable-librtmp 
--enable-libschroedinger 
--enable-libspeex 
--enable-libtheora 
--enable-libvorbis 
--enable-libvpx 
--enable-libx264 
--enable-libxavs 
--enable-libxvid 
--enable-zlib 
--disable-outdev=sdl 
  libavutil    51.  9. 1 / 51.  9. 1 
  libavcodec   53.  7. 0 / 53.  7. 0 
  libavformat  53.  4. 0 / 53.  4. 0 
  libavdevice  53.  1. 1 / 53.  1. 1 
  libavfilter   2. 23. 0 /  2. 23. 0 
  libswscale    2.  0. 0 /  2.  0. 0 
  libpostproc  51.  2. 0 / 51.  2. 0 
4

4 回答 4

5

https://stackoverflow.com/a/16469378/2097284更详细地解释了如何制作.sdp文件,以及如何将其传递给ffplay.

于 2013-05-09T19:45:35.340 回答
3

FFMPG 在指定时生成一个 SDP 文件-sdp_file path/to/file

文档摘录:

-sdp_file file (global) Print sdp information for an output stream to file. This allows dumping sdp information when at least one output isn’t an rtp stream. (Requires at least one of the output formats to be rtp).

于 2017-10-29T05:21:12.230 回答
3

以防万一有人想找到如何使用 ffmpeg C 代码执行此操作,您可以使用它av_sdp_create生成 sdp 字符串

于 2016-11-20T13:21:54.670 回答
1

通常,当输出是一个 rtp 流时,ffmpeg 在控制台中打印 sdp 信息,因此您只需重定向它(然后使用 sdp ):

ffmpeg -fflags +genpts -i files\2005-SFSD-sample-mpeg1.mpg  -an -threads 0 -r 10 -g 45 -s 352x240 -deinterlace -f rtp rtp://192.168.200.198:9008 > config.sdp

但是从你的命令看来你想对​​两个输出进行一种编码......如果两个输出是 rtp(对视频 + 音频很有帮助)它工作正常,但是当 1 个输出是 rtp 时我无法让它打印 sdp和其他mp4 ...不确定是否可能

无论如何,您可以做的是第一次生成 sdp 文件,只要您不更改视频特性(分辨率格式...)或 rtp 地址,此 sdp 文件将有效,并且您之前的命令将使用它!

希望这可以帮助

于 2012-04-06T16:14:37.727 回答