[英]Begin stream simple mp4 with ffserver
I want to stream a mp4 and for this I read about ffserver. 我想流一个mp4,为此我读到了关于ffserver的内容。
So I search and read ffserver documentations but still cant stream a simple file. 所以我搜索和阅读ffserver文档,但仍然无法流式传输一个简单的文件。
For this I done these: 为此,我做了这些:
1-A win 8 and last VLC installed. 安装了1-A win 8和最后一个VLC。
2-A Ubuntu 13 with last ffmpeg package. 2-A Ubuntu 13,带有最后一个ffmpeg包。
3-A ffserver.conf file saved to /etc/ and copied from http://ffmpeg.org/sample.html (I just copy text in a new file). 3-ffserver.conf文件保存到/ etc /并从http://ffmpeg.org/sample.html复制(我只是将文本复制到新文件中)。
4-Run this command : ffserver -f /etc/ffconfig.conf
and this is result : 4 - 运行此命令:
ffserver -f /etc/ffconfig.conf
,结果如下:
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-Check http://localhost:8090/stat.html and server status is OK.It shows me 4 stream : test1.mpg,test.asf,stat.html,index.html. 5 - 检查http:// localhost:8090 / stat.html ,服务器状态是OK。它显示了4个流: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 : 6 - 运行此命令:
ffmpeg -i test.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 @ 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-I look at error and I can not find why this happen and where I go wrong! 7-我看错误,我找不到为什么会发生这种情况,哪里出错了!
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. 到目前为止,我阅读了很多关于ffserver的示例和教程,但其中大部分都是关于实时流式传输,但我只想流式传输一些mp4文件。
EDIT: 编辑:
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): 我安装了真正的ffmpeg像这样的链接: https : //askubuntu.com/questions/373322/how-to-replace-avconv-with-the-real-ffmpeg-and-have-it-work-right但同样的错误(Just将ppa更改为
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) (我知道这就像初学者的问题,但我读了doc并尽可能地测试了一切,但仍然没有运气)
You can't stream mp4
vidoes using ffserver because it contains global metadata in the file header, which makes random stream access impossible. 您无法使用ffserver传输
mp4
因为它在文件头中包含全局元数据,这使得无法进行随机流访问。 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 您可以选择其他格式,如
webm
或使用MPEG-2传输流(Apple的HLS)。请参阅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>
在您的视频标记内
<video>
<source src="http://localhost:8090/streamwebm">
</video>
you can edit the parameters to suit your needs 您可以编辑参数以满足您的需求
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.