FFmpeg - 无法播放流

FFmpeg - 无法播放流

我使用以下命令尝试通过 ffmpeg 从文件进行流式传输:

ffmpeg -re -i GunGrave\ -\ 03\ -\ Rain.webm -c copy -f asf rtmp://127.0.0.1:8090/test.asf

这产生了以下输出:

ffmpeg version N-50515-g28adecf Copyright (c) 2000-2013 the FFmpeg developers   built on Mar  5 2013 22:35:30 with gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)   
configuration: --enable-gpl --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264   
libavutil      52. 17.103 / 52. 17.103   
libavcodec     54. 92.100 / 54. 92.100   
libavformat    54. 63.103 / 54. 63.103   
libavdevice    54.  3.103 / 54.  3.103   
libavfilter     3. 42.103 /  3. 42.103   
libswscale      2.  2.100 / 2.  2.100   
libswresample   0. 17.102 /  0. 17.102   
libpostproc    52.  2.100 / 52.  2.100 
Input #0, matroska,webm, from 'GunGrave - 03 - Rain.webm':   
  Metadata:
    title           : [AHQ] GunGrave - 19 - Superior   
    Duration: 00:24:20.44, start: 0.000000, bitrate: 259 kb/s
  Stream #0:0: Video: vp8, yuv420p, 768x432, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
  Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)

这是我的 ffserver.config 文件:

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -

<Feed feed1.ffm>
   File /tmp/feed1.ffm
   FileMaxSize 200K
   ACL allow 127.0.0.1
</Feed>

<Stream test.ts>
   Feed feed1.ffm
   Format mpegts

   AudioCodec libmp3lame
   AudioBitRate 128
   AudioChannels 2
   AudioSampleRate 44100
   AVOptionAudio flags +global_header

   VideoBitRate 800
   VideoFrameRate 25
   VideoSize 640x480
   VideoCodec libx264
   AVOptionVideo flags +global_header
</Stream>

<Stream test.asf>
   Feed feed1.ffm
   Format asf

   AudioCodec mp3
   AudioBitRate 128
   AudioChannels 2
   AudioSampleRate 44100
   AVOptionAudio flags +global_header

   VideoBitRate 800
   VideoFrameRate 25
   VideoSize 640x480
   VideoCodec libx264
   AVOptionVideo flags +global_header
</Stream>

<Stream stat.html>
   Format status

   # Only allow local people to get the status
   ACL allow localhost
   ACL allow 192.168.0.0 192.168.255.255
</Stream>

# Redirect index.html to the appropriate site
<Redirect index.html>
   URL http://www.ffmpeg.org/
</Redirect>

当我尝试在 Windows Media Player 中播放流时,它会失败,并指出不支持的文件类型。当我尝试在 kmplayer 中播放流时,它只是挂起程序。它拒绝在 Firefox 或 Chrome 中的标签中播放。我主要需要它在 HTML5 中工作,所以这对我来说是主要问题。我使用 ts 而不是 asf 获得了类似的结果。我愿意使用任何适用于此的文件类型/编解码器。

答案1

您可能从某处复制了 FFserver 配置文件。您不能将任何类型的视频放入 ASF 流中,并且它可能不适用于 H.264 视频。此外,您告诉 FFmpeg 复制视频和音频编解码器,并使用 FFserver 输出强制使用 ASF 格式,而不是让 FFserver 处理所有事情。

如果您想要 HTML5 流式传输,可以切换到 WebM 视频。此外,您不能使用 RTMP:您需要通过 HTTP 进行流式传输。这篇博客文章应该可以帮助您入门:使用 FFmpeg 流式传输实时 WebM 视频。

这是该博客中的一个示例配置文件 — — 我只是用 替换了vorbis它,libvorbis因为它可以产生更好的质量:

<Stream test.webm>       # Output stream URL definition
   Feed feed1.ffm              # Feed from which to receive video
   Format webm

   # Audio settings
   AudioCodec libvorbis
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libvpx
   VideoSize 720x576           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  # Parameters passed to encoder 
                                       # (same as ffmpeg command-line parameters)
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
   VideoBitRate 400            # Video bitrate
</Stream>

要流式传输视频,请使用:

ffmpeg -i GunGrave.webm http://127.0.0.1:8090/test.webm

相关内容