使用 ffserver 开始流简单的 mp4 [英] Begin stream simple mp4 with ffserver

查看:26
本文介绍了使用 ffserver 开始流简单的 mp4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想流式传输 mp4,为此我阅读了 ffserver.
所以我搜索并阅读了 ffserver 文档,但仍然无法流式传输一个简单的文件.
为此,我做了这些:
1-A win 8 和最后安装的 VLC.
2-带有最后一个 ffmpeg 包的 Ubuntu 13.
3-A ffserver.conf 文件保存到/etc/并从 http://ffmpeg.org/sample.html 复制(我只是在新文件中复制文本).
4-运行此命令:ffserver -f/etc/ffconfig.conf,这是结果:

I want to stream a mp4 and for this I read about ffserver.
So I search and read ffserver documentations but still cant stream a simple file.
For this I done these:
1-A win 8 and last VLC installed.
2-A Ubuntu 13 with last ffmpeg package.
3-A ffserver.conf file saved to /etc/ and copied from http://ffmpeg.org/sample.html (I just copy text in a new file).
4-Run this command : ffserver -f /etc/ffconfig.conf and this is result :

avserver version 0.8.13-6:0.8.13-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 15 2014 13:53:49 with gcc 4.8.1
Tue Feb 10 07:29:07 2015 AVserver started.

5-检查 http://localhost:8090/stat.html 并且服务器状态正常.它向我展示了 4 个流:test1.mpg、test.asf、stat.html、index.html.
6-运行此命令:ffmpeg -i test.mp4 http://localhost:8090/feed1.ffm 这是结果:

5-Check http://localhost:8090/stat.html and server status is OK.It shows me 4 stream : test1.mpg,test.asf,stat.html,index.html.
6-Run this command : ffmpeg -i test.mp4 http://localhost:8090/feed1.ffm and this is result :

ffmpeg version 0.8.13-6:0.8.13-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 15 2014 13:53:49 with gcc 4.8.1
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'big.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2015-02-05 20:35:09
  Duration: 00:21:36.12, start: 0.000000, bitrate: 788 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 720x404, 677 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 2015-02-05 17:05:45
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 106 kb/s
    Metadata:
      creation_time   : 2015-02-05 20:35:12
Incompatible sample format '(null)' for codec 'mp2', auto-selecting format 's16'
    Last message repeated 1 times
Incompatible sample format '(null)' for codec 'libmp3lame', auto-selecting format 's16'
[buffer @ 0x900f0c0] w:720 h:404 pixfmt:yuv420p
[scale @ 0x8ea5080] w:720 h:404 fmt:yuv420p -> w:160 h:128 fmt:yuv420p flags:0x4
[buffer @ 0x8ea34a0] Invalid pixel format string '-1'
Error opening filters!

7-我查看错误,但找不到为什么会发生这种情况以及我哪里出错了!

7-I look at error and I can not find why this happen and where I go wrong!

到目前为止,我阅读了许多关于 ffserver 的示例和教程,但其中大部分是关于直播的,但我只想流式传输一些 mp4 文件.

Until now I read many sample and tutorials about ffserver but most of them is about live streaming but I just want to stream some mp4 files.

我像这个链接一样安装了真正的 ffmpeg:https://askubuntu.com/questions/373322/how-to-replace-avconv-with-the-real-ffmpeg-and-have-it-work-right 但同样的错误(只需将 ppa 更改为 ppa:mc3man/trusty-media 即可获得最新版本):

I installed real ffmpeg like this link : https://askubuntu.com/questions/373322/how-to-replace-avconv-with-the-real-ffmpeg-and-have-it-work-right but same error (Just change ppa to ppa:mc3man/trusty-media for last release):

pp@ubuntu:~$ ffmpeg -i big.mp4 http://localhost:8090/feed1.ffm
ffmpeg version 0.8.13-6:0.8.13-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 15 2014 13:53:49 with gcc 4.8.1
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'big.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2015-02-05 20:35:09
  Duration: 00:21:36.12, start: 0.000000, bitrate: 788 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 720x404, 677 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 2015-02-05 17:05:45
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 106 kb/s
    Metadata:
      creation_time   : 2015-02-05 20:35:12
Incompatible sample format '(null)' for codec 'mp2', auto-selecting format 's16'
    Last message repeated 1 times
Incompatible sample format '(null)' for codec 'libmp3lame', auto-selecting format 's16'
[buffer @ 0xa04e0c0] w:720 h:404 pixfmt:yuv420p
[scale @ 0x9ee4080] w:720 h:404 fmt:yuv420p -> w:160 h:128 fmt:yuv420p flags:0x4
[buffer @ 0x9ee24a0] Invalid pixel format string '-1'
Error opening filters!

谁能给我确切的命令,我应该运行以进行测试吗?
(我知道这就像初学者的问题,但我阅读了文档并尽可能地测试了所有内容,但仍然没有运气)

Can any one give me exact commands that I should run for test?
(I know this is like beginners problem but I read doc and test everything as I can but still no luck)

推荐答案

您不能使用 ffserver 流式传输 mp4 视频,因为它在文件头中包含全局元数据,这使得随机流访问变得不可能.您可以选择其他格式,例如 webm 或使用 MPEG-2 传输流(Apple 的 HLS).请参阅 https://superuser.com/questions/563591/streaming-mp4-with-ffmpeg

You can't stream mp4 vidoes using ffserver because it contains global metadata in the file header, which makes random stream access impossible. You can choose another format like webm or use MPEG-2 Transport Streams (Apple's HLS).See https://superuser.com/questions/563591/streaming-mp4-with-ffmpeg

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 100000
CustomLog -
<Feed streamwebm.ffm>
  File /tmp/streamwebm.ffm
  FileMaxSize 50M
  ACL allow localhost
  ACL allow 128.199.149.46
  #ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.0.255
</Feed>
<Stream streamwebm>
#in command line run : ffmpeg -i yourvideo.mp4 -c:v libvpx -cpu-used 4 -threads 8    http://localhost:8090/streamwebm.ffm
Feed streamwebm.ffm
Format webm

# Video Settings
VideoFrameRate 30
VideoSize 624x368

# Audio settings
AudioCodec libvorbis
AudioSampleRate 48000
AVOptionAudio flags +global_header

MaxTime 0
AVOptionVideo me_range 16
AVOptionVideo qdiff 4
AVOptionVideo qmin 4
AVOptionVideo qmax 40
#AVOptionVideo good
AVOptionVideo flags +global_header

# Streaming settings
PreRoll 10
StartSendOnKey

Metadata author "author"
Metadata copyright "copyright"
Metadata title "Web app name"
Metadata comment "comment"

</Stream>

#stream for flv format
<Feed streamflv.ffm>
  File /tmp/streamflv.ffm
  FileMaxSize 50M
  ACL allow localhost
  ACL allow 192.168.88.89
  #ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.255.255
</Feed>

<Stream streamflv>
  Feed streamflv.ffm
  Format flv
  #Video Settings

  VideoCodec libx264
  VideoFrameRate 30
  VideoSize 640x360
  VideoBitRate 1000

  # Audio settings
  AudioCodec libfaac
  AudioSampleRate 22050
  AudioChannels 2 #this is creating problem
  AVOptionAudio flags +global_header

  MaxTime 0
  AVOptionVideo me_range 16
  AVOptionVideo qdiff 4
  AVOptionVideo qmin 4
  AVOptionVideo qmax 40
  #AVOptionVideo good
  AVOptionVideo flags +global_header

  # Streaming settings
  PreRoll 10
  StartSendOnKey

</Stream>

<Stream stat.html>
  Format 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://yoururl.com
</Redirect>

在您的视频标签内<代码><视频>

inside your video tag <video> <source src="http://localhost:8090/streamwebm"> </video>

您可以编辑参数以满足您的需要

you can edit the parameters to suit your needs

这篇关于使用 ffserver 开始流简单的 mp4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆