【问题标题】:ffmpeg convert rtp to mp4(http) streamingffmpeg 将 rtp 转换为 mp4(http) 流
【发布时间】:2016-02-24 18:15:58
【问题描述】:

我想使用 ffmpeg 将 RTP 流转码为 MP4(HTTP) 流,所以我可以在 html 视频标签中播放,

但我只能成功转码为flv格式。

以下是我的设置:

[/etc/ffserver.conf]

...

<Feed feed1.ffm>
  File /tmp/feed1.ffm
  FileMaxSize 5M
  ACL allow localhost
</Feed>

<Stream flv>
  Feed feed1.ffm
  Format flv
  VideoFrameRate 40
  VideoBitRate 128
  VideoSize 1920x1080
  AVOptionVideo flags +global_header
  AudioBitRate 24
  AudioChannels 2
  AudioSampleRate 44100
  AVOptionAudio flags +global_header
</Stream>

<Stream mp4>
  Feed feed1.ffm
  Format mp4
  VideoFrameRate 40
  VideoBitRate 128
  VideoSize 1920x1080
  AVOptionVideo flags +global_header
  AudioBitRate 24
  AudioChannels 2
  AudioSampleRate 44100
  AVOptionAudio flags +global_header
</Stream>

<Stream avi>
  Feed feed1.ffm
  Format avi
  VideoFrameRate 40
  VideoBitRate 128
  VideoSize 1920x1080
  AVOptionVideo flags +global_header
  AudioBitRate 24
  AudioChannels 2
  AudioSampleRate 44100
  AVOptionAudio flags +global_header
</Stream>

[命令]

$ ffserver -d -f /etc/ffserver.conf

$ ffmpeg -i MY_RTP_SOURCE  http://localhost:8090/feed1.ffm

[其他信息]

  1. 输入格式
$ ffprobe -i MY_RTP_SOURCE 输入 #0,rtp,来自 'MY_RTP_SOURCE': 时长:N/A,开始:47175.696200,比特率:N/A 程序 1 流 #0:1:视频:h264(高)(HDMV / 0x564D4448)、yuv420p、1920x1080、25 tbr、90k tbn 流 #0:0:音频:aac (LC),44100 Hz,立体声,fltp,255 kb/s
  1. 访问时出现 AVI 错误消息(在 ffserver)
2016 年 2 月 17 日星期三 17:09:16 127.0.0.1 - - 新连接:GET /avi 2016 年 2 月 17 日星期三 17:09:16 [avi @ 0x7fac8b800150] 跳帧数量过多 873420092564 > 60000 2016 年 2 月 17 日星期三 17:09:16 将帧写入流“avi”的输出时出错:参数无效 2016 年 2 月 17 日星期三 17:09:16 [avi @ 0x7fac8b800150] 跳帧数量过多 873420092564 > 60000 2016 年 2 月 17 日星期三 17:09:16 127.0.0.1 - - [GET] "/avi HTTP/1.1" 200 2598
  1. 访问时出现 MP4 错误消息(在 ffserver)
2016 年 2 月 17 日星期三 17:09:56 127.0.0.1 - - 新连接:GET /mp4 2016 年 2 月 17 日星期三 17:09:56 [mp4 @ 0x7fac8c000150]muxer 不支持不可搜索的输出 2016 年 2 月 17 日星期三 17:09:56 为流“mp4”写入输出标头时出错:参数无效 2016 年 2 月 17 日星期三 17:09:56 127.0.0.1 - - [GET] "/mp4 HTTP/1.1" 200 62
  1. 我的 ffmpeg 版本
ffmpeg 版本 2.8.6 版权所有 (c) 2000-2016 FFmpeg 开发者 使用 Apple LLVM 版本 7.0.2 (clang-700.1.81) 构建 配置: --prefix=/usr/local/Cellar/ffmpeg/2.8.6 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libav 设备 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100

如果有人知道如何解决或需要更多信息,请告诉我,谢谢!

【问题讨论】:

    标签: video ffmpeg streaming rtp


    【解决方案1】:

    我终于找到了解决办法!

    使用ffserver(将rtp流转成http)+videojs(在html中播放flv视频)

    我的/etc/ffserver.conf

    HTTPPort 8090
    HTTPBindAddress 0.0.0.0
    MaxHTTPConnections 2000
    MaxClients 1000
    MaxBandwidth 40000
    CustomLog -
    
    UseDefaults
    
    <Feed feed1.ffm>
        File /tmp/feed1.ffm
        FileMaxSize 50M
    </Feed>
    
    <Stream stream>
        Feed feed1.ffm
        Format flv
        VideoFrameRate 24
        VideoBitRate 32768
        VideoSize 1280x720
        AVOptionVideo flags +global_header
        AudioBitRate 24
        AudioChannels 1
        AudioSampleRate 44100
        AVOptionAudio flags +global_header
    </Stream>
    

    我的命令

    ffserver

    $ ffserver -d -f /etc/ffserver.conf

    ffmpeg

    $ ffmpeg -i rtp://MY_RTP_RESOURCE http://localhost:8090/feed1.ffm

    我的演示页面

    <head>
        <link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet">
        <script src="http://vjs.zencdn.net/c/video.js"></script>
    </head>
    <body>
        <video id="video1" class="video-js vjs-default-skin" width="640" height="360"
         data-setup='{"controls" : true, "autoplay" : true, "preload" : "auto"}'>
            <source src="http://10.10.3.108:8090/stream" type="video/x-flv">
        </video>
    </body>
    

    【讨论】:

      【解决方案2】:

      这可能会对您有所帮助:FFMPEG - RTMP to HLS no audio output

      您可以从这里使用您的 rtp 输入,检查分段选项,因为您需要的是 HLS 输出格式

      【讨论】:

        猜你喜欢
        • 2019-06-26
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-04
        • 2015-09-03
        • 2014-05-22
        相关资源
        最近更新 更多