如何在 openRTSP 中优化 MP4 文件编码,使其与 FFmpeg 相同?



我目前使用如下命令从具有openRTSP的摄像机接收并存储RTSP流:

openRTSP -4 "rtsp://192.168.41.185/rtsp_tunnel?h26x=4&line=1&inst=2" > movie.mp4

我可以使用 FFmpeg 做同样的事情:

ffmpeg -i "rtsp://192.168.41.185/rtsp_tunnel?h26x=4&line=1&inst=2" -vcodec copy movie.mp4

来自摄像机的视频帧为 1280x720 (H.264(,速度约为 30 fps,并标记了毫秒时间戳。当我观看由ffmpeg创建的电影时.mp4它看起来相当不错,印入视频流的秒数似乎相当准确。相反,如果我观看由openRTSP创建的电影.mp4视频时间戳中的秒数肯定比现实中的秒数长。因此,视频中的一秒钟在现实中可以持续两秒钟。我做了几次测试,这不是网络性能或处理从相机接收的消息的问题。原因似乎是将消息编码到此MP4容器中的部分

FFmpeg 比 openRTSP 快得多吗?

我可以以某种方式优化 openRTSP 中的 MP4 编码吗?

好的,这不是性能问题,而是 openRTSP 无法从 RTSP 流中检测到正确的帧速率的问题。我记录了正好 60 秒,按照建议,我使用ffprobe来获取有关比特流的更多信息:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output-00000-00060.mp4':
Metadata:
major_brand     : mp42
minor_version   : 0
compatible_brands: mp42isom
creation_time   : 2018-07-02 03:30:01
Duration: 00:04:00.13, start: 0.000000, bitrate: 46 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/iec61966-2-1), 1280x720 [SAR 561:560 DAR 187:105], 45 kb/s, 15 fps, 15 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time   : 2018-07-02 03:30:01
handler_name    : ?Apple Alias Data Handler
encoder         : H.264

有两点是错误的:

  • 问题 #1:帧速率不是 15 fps,但相机配置为尝试发送 30 fps。
  • 问题 #2:持续时间为 4:00,但应为 1:00

对于问题#1:这可能是我的错。我应该手动指定帧速率,因为 openRTSP 不会从流中获取它。我应该指定选项-f 30.

对于问题#2:在提供选项后-f 30我仍然得到一个持续时间为2:00而不是1.00的视频文件。我想问题在于相机以逐行模式而不是隔模式发送数据。也许openRTSP的默认设置是隔行扫描模式。因此,当我将帧速率加倍以-f 60时,一切都很好。

也许有人可以证实我的猜测?

相关内容

  • 没有找到相关文章

最新更新