FFmpeg rtp流式opus文件问题

时间:2017-04-21 18:05:10

标签: audio ffmpeg rtsp rtp opus

我有下一个情况。

  1. 在远程VPS服务器上有文件。
  2. 我想在我的Android手机上通过RTP访问此文件(opus编解码器)。
  3. 我用下一个命令尝试了ffmpeg:

    ffmpeg -ar 44800 -i bon_jovi_loverboy.opus -acodec libopus -ac 1 -ab 96k -vn -f rtp rtp://127.0.0.1:5004 -loglevel 56
    
  4. 但是得到了下一个错误:

    bon_jovi_loverboy.opus: Invalid data found when processing input
    

    完整日志:

    root @cs82932:/ home / rstream / rtstream / src#ffmpeg -ar 44800 -i bon_jovi_loverboy.opus -acodec libopus -ac 1 -ab 96k -vn -f rtp rtp://127.0.0.1:5004 -loglevel 56 ffmpeg版本2.8.11-0ubuntu0.16.04.1版权所有(c)2000-2017 FFmpeg开发人员   用gcc 5.4.0(Ubuntu 5.4.0-6ubuntu1~16.04.4)20160609构建   配置: - prefix = / usr --extra-version = 0ubuntu0.16.04.1 --build-suffix = -ffmpeg --toolchain = hardened --libdir = / usr / lib / x86_64-linux-gnu --incdir = / usr / include / x86_64-linux-gnu --cc = cc --cxx = g ++ --enable-gpl --enable-shared --disable-stripping --disable-decoder = libopenjpeg --disable-decoder = libschroedinger - -enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite - -enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse - -enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis - -enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv   libavutil 54. 31.100 / 54. 31.100   libavcodec 56. 60.100 / 56. 60.100   libavformat 56. 40.101 / 56. 40.101   libavdevice 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 拆分命令行。 读取选项'-ar'...与参数'44'匹配作为选项'ar'(设置音频采样率(以Hz为单位))。

    阅读选项'-i'...作为输入url与参数'bon_jovi_loverboy.opus'匹配。

    读取选项'-acodec'...作为选项'acodec'(强制音频编解码器('复制'复制流))与参数'libopus'匹配。

    阅读选项'-ac'...作为选项'ac'(设置音频通道数)与参数'1'匹配。

    阅读选项'-ab'...作为选项'ab'(音频比特率(请使用-b:a))与参数'96k'匹配。

    阅读选项'-vn'...与参数'vn'(禁用视频)匹配,参数为'1'。

    阅读选项'-f'...作为选项'f'(强制格式)与参数'rtp'匹配。

    阅读选项'rtp://127.0.0.1:5004'...作为输出网址匹配。

    阅读选项'-loglevel'...作为选项'loglevel'(设置日志记录级别)与参数'56'匹配。

    完成拆分命令行。 解析一组选项:全球。 应用带参数56的选项loglevel(设置日志记录级别)。

    成功解析了一组选项。

    解析一组选项:输入url bon_jovi_loverboy.opus。 使用参数44800应用选项ar(设置音频采样率(以Hz为单位))。 成功解析了一组选项。 打开输入文件:bon_jovi_loverboy.opus。

    [AVIOContext @ 0x965e60]统计:36389字节读取,0搜索 bon_jovi_loverboy.opus:处理输入时发现的数据无效

    有什么不对?感谢

    UPD

    我更新了ffmpeg并成功了解了流媒体。

        ffmpeg -stream_loop -1 -i 4a6u7-ptl2w.opus -acodec libopus -ac 1 -ab 
               96k -vn -f rtp rtp://95.213.195.192:5004/f.opus
    ffmpeg version 3.2.4-1~16.04.york1 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 5.4.1 (Ubuntu 5.4.1-5ubuntu2~16.04.york1) 20170210
      configuration: --prefix=/usr --extra-version='1~16.04.york1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
      libavutil      55. 34.101 / 55. 34.101
      libavcodec     57. 64.101 / 57. 64.101
      libavformat    57. 56.101 / 57. 56.101
      libavdevice    57.  1.100 / 57.  1.100
      libavfilter     6. 65.100 /  6. 65.100
      libavresample   3.  1.  0 /  3.  1.  0
      libswscale      4.  2.100 /  4.  2.100
      libswresample   2.  3.100 /  2.  3.100
      libpostproc    54.  1.100 / 54.  1.100
    Input #0, ogg, from '4a6u7-ptl2w.opus':
      Duration: 00:02:34.21, start: 0.000000, bitrate: 69 kb/s
        Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
        Metadata:
          ENCODER         : Lavc57.77.100 libopus
    Output #0, rtp, to 'rtp://95.213.195.192:5004/f.opus':
      Metadata:
        encoder         : Lavf57.56.101
        Stream #0:0: Audio: opus (libopus), 48000 Hz, mono, flt, 96 kb/s
        Metadata:
          encoder         : Lavc57.64.101 libopus
    SDP:
    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=No Name
    c=IN IP4 95.213.195.192
    t=0 0
    a=tool:libavformat 57.56.101
    m=audio 5004 RTP/AVP 97
    b=AS:96
    a=rtpmap:97 opus/48000/2
    
    Stream mapping:
      Stream #0:0 -> #0:0 (opus (native) -> opus (libopus))
    Press [q] to stop, [?] for help
    size=   44893kB time=00:52:18.12 bitrate= 117.2kbits/s speed=56.5x
    

    但是当我尝试通过本地PC(VLC Player)连接rtp时,我得到了例外:

             core error: socket bind error: Cannot assign requested address
             core error: open of `rtp://95.213.195.192:5004/f.opus' failed
    

    当我在远程电脑上尝试ffplay时(与ffmpeg相同):

        ffplay rtp://95.213.195.192:5004/f.opus
    
    ffplay version 3.2.4-1~16.04.york1 Copyright (c) 2003-2017 the FFmpeg developers
      built with gcc 5.4.1 (Ubuntu 5.4.1-5ubuntu2~16.04.york1) 20170210
      configuration: --prefix=/usr --extra-version='1~16.04.york1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
      libavutil      55. 34.101 / 55. 34.101
      libavcodec     57. 64.101 / 57. 64.101
      libavformat    57. 56.101 / 57. 56.101
      libavdevice    57.  1.100 / 57.  1.100
      libavfilter     6. 65.100 /  6. 65.100
      libavresample   3.  1.  0 /  3.  1.  0
      libswscale      4.  2.100 /  4.  2.100
      libswresample   2.  3.100 /  2.  3.100
      libpostproc    54.  1.100 / 54.  1.100
    Segmentation fault
    
    你能帮帮我吗?感谢

    95.213.195.192 - 我的带文件的远程服务器的IP

0 个答案:

没有答案