ffmpeg 和 ffserver 抛出错误,未获取流

Error being thrown by ffmpeg and ffserver, not getting a stream

我正在尝试使用 ffmpeg 和 ffserver 流式传输我目录中的文件。但是ffmpeg和ffserver都报错了。以下是我的 ffserver 配置文件。

HTTPPort 8092
 HTTPBindAddress 0.0.0.0
 MaxHTTPConnections 2000
 MaxClients 1000
 MaxBandwidth 2000
 CustomLog -
 #NoDaemon
 NoDefaults

<Feed feed1.ffm>
  File /tmp/feed1.ffm
  FileMaxSize 20M 
  ACL allow 127.0.0.1
</Feed>

<Stream live.webm>      
  Feed feed1.ffm             
  Format webm

  AudioCodec vorbis
  AudioBitRate 64            

  VideoCodec libvpx
  VideoSize 720x576           
  VideoFrameRate 25          
  AVOptionVideo flags +global_header  
  AVOptionVideo cpu-used 0
  AVOptionVideo qmin 10
  AVOptionVideo qmax 42
  AVOptionVideo quality good
  AVOptionAudio flags +global_header
  PreRoll 15
  StartSendOnKey
  VideoBitRate 400
  AudioSampleRate 44100           
</Stream>

我能够毫无问题地正确启动 ffserver,但是当我尝试使用 ffmpeg 为 ffserver 提供文件时,会发生这种情况

ffmpeg -i sam.webm http://127.0.0.1:8092/feed1.ffm -vcodec copy
  ffmpeg version N-72738-g7630cce Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --enable-libvpx --enable-libvorbis --enable-libx264 --enable-gpl --enable-nonfree
  libavutil      54. 27.100 / 54. 27.100
  libavcodec     56. 41.100 / 56. 41.100
  libavformat    56. 36.100 / 56. 36.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
  Trailing options were found on the commandline.
  Input #0, matroska,webm, from 'sam.webm':
  Metadata:
    title           : Sintel Trailer
    encoder         : Lavf56.25.101
  Duration: 00:00:52.21, start: 0.000000, bitrate: 305 kb/s
  Stream #0:0: Video: vp8, yuv420p, 854x480, SAR 1:1 DAR 427:240, 24 fps, 24 tbr, 1k tbn, 1k tbc (default)
Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
[libvpx @ 0x367e180] v1.3.0
Output #0, ffm, to 'http://127.0.0.1:8092/feed1.ffm':
Metadata:
  title           : Sintel Trailer
  creation_time   : now
  encoder         : Lavf56.36.100
Stream #0:0: Audio: vorbis (libvorbis), 44100 Hz, stereo, fltp, 64 kb/s (default)
Metadata:
  encoder         : Lavc56.41.100 libvorbis
Stream #0:1: Video: vp8 (libvpx), yuv420p, 720x576 [SAR 427:300 DAR 427:240], q=10-42, 400 kb/s, 24 fps, 1000k tbn, 25 tbc (default)
Metadata:
  encoder         : Lavc56.41.100 libvpx
Stream mapping:
  Stream #0:1 -> #0:0 (vorbis (native) -> vorbis (libvorbis))
  Stream #0:0 -> #0:1 (vp8 (native) -> vp8 (libvpx))
Press [q] to stop, [?] for help
av_interleaved_write_frame(): Connection reset by peer
    Last message repeated 2 times
   frame=   14 fps=0.0 q=0.0 Lsize=      16kB time=00:00:00.56 bitrate= 234.1kbits/s dup=1 drop=0    
   video:1kB audio:2kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 327.780670%
   Conversion failed!

这是在 ffmpeg 中发生此错误时我在 ffserver 中收到的消息。

ffserver
 ffserver version N-72738-g7630cce Copyright (c) 2000-2015 the FFmpeg developers
 built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
 configuration: --enable-libvpx --enable-libvorbis --enable-libx264 --enable-gpl --enable-nonfree
 libavutil      54. 27.100 / 54. 27.100
 libavcodec     56. 41.100 / 56. 41.100
 libavformat    56. 36.100 / 56. 36.100
 libavdevice    56.  4.100 / 56.  4.100
 libavfilter     5. 16.101 /  5. 16.101
 libswscale      3.  1.101 /  3.  1.101
 libswresample   1.  2.100 /  1.  2.100
 libpostproc    53.  3.100 / 53.  3.100
 Mon Jun  8 18:38:28 2015 FFserver started.
 Mon Jun  8 18:38:40 2015 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 4175
 Mon Jun  8 18:38:40 2015 [NULL @ 0x29878a0]Missing key or no key/value separator found after key 'pkt_timebase'
Mon Jun  8 18:38:40 2015 Feed '/tmp/feed1.ffm' stream number does not match registered feed
Mon Jun  8 18:38:40 2015 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 200 4096

有人可以帮我吗?

如果您的目录中有该文件,您可以尝试跳过提要部分。这样,ffserver 将使文件准备好在服务器启动时进行流式传输,而您不必使用 ffmpeg-命令。

而不是:

<Stream live.webm>      
Feed feed1.ffm
...

使用:

<Stream live.webm>
Format webm         #if needed
File "sam.webm"
...

如果您想先处理文件,您可能需要浏览提要。