所以,我一直在与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
答案 0 :(得分:4)
https://stackoverflow.com/a/16469378/2097284更详细地解释了如何制作.sdp
文件,以及如何将其传递给ffplay
。
答案 1 :(得分: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而另一个mp4 ......不确定是否可能时,让它打印sdp
无论如何你可以做的是第一次生成sdp文件,只要你不改变视频特性(分辨率格式......)或rtp地址这个sdp文件是有效的,你的上一个命令可以用它!!
希望这会有所帮助
答案 2 :(得分:1)
如果有人想要找到如何使用ffmpeg C代码执行此操作,您可以使用av_sdp_create
来generate an sdp string
答案 3 :(得分:1)
文档摘录:
-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).