>我正在为某些IP摄像机开发服务器端重流服务。我在Linux上使用ffserver来提供流,并在Windows上使用ffmpeg来馈送。我正在使用 rtsp 获取摄像机视频 (H264)。
我的ffserver配置示例如下
<Feed test.ffm>
File ./test.ffm
</Feed>
<Stream test.mjpg>
Feed test.ffm
Format mpjpeg
VideoFrameRate 3
VideoSize 704x480
NoAudio
FileMaxSize 100k
VideoHighQuality
</Stream>
以及 FFMPEG 的喂食方式:
ffmpeg -rtsp_transport tcp -i "rtsp://admin:admin@192.168.1.12:554/cam/realmonitor?channel=1&subtype=0" -vcodec copy -acodec copy "http://192.168.1.101:8090/test.ffm"
生成的视频非常像素化,与真实图像不同。
摄像机的配置如下:
Resolution: D1 (704*480)
FrameRate: 3
BitRate: 256k
BitRateType: Variable
我错过了什么或做错了什么吗?
提前感谢您的任何帮助
对于任何有相同问题的人。我用这个解决了:
<Feed test.ffm>
File ./test.ffm
</Feed>
<Stream test.mjpg>
Feed test.ffm
Format mpjpeg
VideoFrameRate 3
VideoBufferSize 80000
VideoBitRate 512
VideoQMin 1
VideoQMax 10
VideoSize 1280x720
PreRoll 0
</Stream>
流视频现在与源视频的质量相同。
我认为问题出在源摄像机流上,在我看来,256 Kb/s 对于 D1 分辨率来说是一个糟糕的比特率。
如果您可以做到这一点并且不会影响您的网络带宽,您可以尝试将相机比特率提高到 768 或 1024 Kb/s 以查看差异。
此外,3的帧率可能是一点帧率。根据您使用相机捕获的内容(静态图像,如风景或非常动态的图像,如交通道路),在动态捕获流中,10 或 15 帧/秒是更真实的值。