首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MP4文件的openRTSP编码优化到与FFmpeg相同的水平?

如何将MP4文件的openRTSP编码优化到与FFmpeg相同的水平?
EN

Stack Overflow用户
提问于 2018-07-02 07:09:26
回答 1查看 900关注 0票数 0

目前,我使用以下命令从带有openRTSP的摄像机接收和存储RTSP流:

代码语言:javascript
复制
openRTSP -4 "rtsp://192.168.41.185/rtsp_tunnel?h26x=4&line=1&inst=2" > movie.mp4

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

代码语言:javascript
复制
ffmpeg -i "rtsp://192.168.41.185/rtsp_tunnel?h26x=4&line=1&inst=2" -vcodec copy movie.mp4

来自摄像机的视频帧在大约30 fps处是1280x720 (H.264),并且具有毫秒的时间戳。当我看到由ffmpeg创建的movie.mp4时,它看起来相当不错,刻在视频流中的秒看起来相当准确。相反,如果我看到movie.mp4是由openRTSP创建的,那么视频时间戳中的秒会比现实中的时间长得多。所以视频上的一秒在现实中可以持续两秒。我做了几次测试,这不是网络性能问题,也不是处理从摄像机收到的消息的问题。原因似乎是将消息编码到这个MP4容器中的部分原因。

FFmpeg这样做比openRTSP快得多吗?

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

EN

回答 1

Stack Overflow用户

发布于 2018-07-02 12:27:57

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

代码语言:javascript
复制
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时,一切都好。

也许有人能证实我的猜测?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51130778

复制
相关文章

相似问题

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