2016-08-20 3 views
0

일부 컨텍스트 : MKV 파일이 있는데이 파일을 http://localhost:8090/test.flv에 flv 파일로 스트리밍하려고합니다.HTTP ffmpeg로 라이브 스트리밍

스트림이 시작된 다음 즉시 종료됩니다.

내가 사용하고 명령은 다음과 같습니다

sudo ffmpeg -re -i input.mkv -c:v libx264 -maxrate 1000k -bufsize 2000k -an -bsf:v h264_mp4toannexb -g 50 http://localhost:8090/test.flv 

이 게시물은 다른 사람이 유용하게 이러한 옵션을 넣다 할 무엇을 믿는의 고장 : 루트로

sudo 

실행

ffmpeg 

스트림 명령 thingy

변환을위한 변환

-maxrate 1000k -bufsize 2000k 

없음 아이디어에 대한 입력 파일에 실시간으로

-re 

스트림

-i input.mkv 

입력 옵션과 경로

-c:v libx264 

사용 코덱 libx264, 일부 옵션 , 도울 것 같습니다

-an -bsf:v h264_mp4toannexb 

오디오 옵션 제 생각에는 확실하지 않습니다. 또한 도움이 될 것 같습니다

-g 50 

아직도 좋은 아이디어, 아마 frame rateframerateframerateframerate? 파일이 test.flv

전화로 포트 8090에 로컬 호스트에 대한 HTTP 프로토콜을 사용하여

http://localhost:8090/test.flv 

출력 어쨌든 내가 가지고있는 실제 문제는 종료 즉시 다음 초 정도 스트리밍하기 시작하고 있다는 점이다.

엠펙 명령 결과 :

ffmpeg version N-80901-gfebc862 Copyright (c) 2000-2016 the FFmpeg developers 
    built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 
    configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab 
    libavutil  55. 28.100/55. 28.100 
    libavcodec  57. 48.101/57. 48.101 
    libavformat 57. 41.100/57. 41.100 
    libavdevice 57. 0.102/57. 0.102 
    libavfilter  6. 47.100/6. 47.100 
    libavresample 3. 0. 0/3. 0. 0 
    libswscale  4. 1.100/4. 1.100 
    libswresample 2. 1.100/2. 1.100 
    libpostproc 54. 0.100/54. 0.100 
Input #0, matroska,webm, from 'input.mkv': 
    Metadata: 
    encoder   : libebml v1.3.0 + libmatroska v1.4.0 
    creation_time : 1970-01-01 00:00:02 
    Duration: 00:01:32.26, start: 0.000000, bitrate: 4432 kb/s 
    Stream #0:0(eng): Video: h264 (High 10), yuv420p10le, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) 
    Stream #0:1(nor): Audio: flac, 48000 Hz, stereo, s16 (default) 
[libx264 @ 0x2e1c380] using SAR=1/1 
[libx264 @ 0x2e1c380] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX 
[libx264 @ 0x2e1c380] profile High, level 4.0 
[libx264 @ 0x2e1c380] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=50 keyint_min=5 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=1000 vbv_bufsize=2000 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00 
[flv @ 0x2e3f0a0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. 
Output #0, flv, to 'http://localhost:8090/test.flv': 
    Metadata: 
    encoder   : Lavf57.41.100 
    Stream #0:0(eng): Video: h264 (libx264) ([7][0][0][0]/0x0007), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 1k tbn, 23.98 tbc (default) 
    Metadata: 
     encoder   : Lavc57.48.101 libx264 
    Side data: 
     cpb: bitrate max/min/avg: 1000000/0/0 buffer size: 2000000 vbv_delay: -1 
Stream mapping: 
    Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) 
Press [q] to stop, [?] for help 
Killed 26 fps= 26 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A speed= 0x 

ffserver 출력 :

Sat Aug 20 12:40:11 2016 File '/test.flv' not found 
Sat Aug 20 12:40:11 2016 [SERVER IP] - - [POST] "/test.flv HTTP/1.1" 404 189 

구성 파일은 :

#Sample ffserver configuration file 

# Port on which the server is listening. You must select a different 
# port from your standard HTTP web server if it is running on the same 
# computer. 
Port 8090 

# Address on which the server is bound. Only useful if you have 
# several network interfaces. 
BindAddress 0.0.0.0 

# Number of simultaneous HTTP connections that can be handled. It has 
# to be defined *before* the MaxClients parameter, since it defines the 
# MaxClients maximum limit. 
MaxHTTPConnections 2000 

# Number of simultaneous requests that can be handled. Since FFServer 
# is very fast, it is more likely that you will want to leave this high 
# and use MaxBandwidth, below. 
MaxClients 1000 

# This the maximum amount of kbit/sec that you are prepared to 
# consume when streaming to clients. 
MaxBandwidth 1000 

# Access log file (uses standard Apache log file format) 
# '-' is the standard output. 
CustomLog - 

# Suppress that if you want to launch ffserver as a daemon. 
#NoDaemon 


################################################################## 
# Definition of the live feeds. Each live feed contains one video 
# and/or audio sequence coming from an ffmpeg encoder or another 
# ffserver. This sequence may be encoded simultaneously with several 
# codecs at several resolutions. 

<Feed feed1.ffm> 

ACL allow 192.168.0.0 192.168.255.255 

# You must use 'ffmpeg' to send a live feed to ffserver. In this 
# example, you can type: 
# 
#ffmpeg http://localhost:8090/test.ffm 

# ffserver can also do time shifting. It means that it can stream any 
# previously recorded live stream. The request should contain: 
# "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify 
# a path where the feed is stored on disk. You also specify the 
# maximum size of the feed, where zero means unlimited. Default: 
# File=/tmp/feed_name.ffm FileMaxSize=5M 
File /tmp/feed1.ffm 
FileMaxSize 200m 

# You could specify 
# ReadOnlyFile /saved/specialvideo.ffm 
# This marks the file as readonly and it will not be deleted or updated. 

# Specify launch in order to start ffmpeg automatically. 
# First ffmpeg must be defined with an appropriate path if needed, 
# after that options can follow, but avoid adding the http:// field 
#Launch ffmpeg 

# Only allow connections from localhost to the feed. 
    ACL allow 127.0.0.1 

</Feed> 


################################################################## 
# Now you can define each stream which will be generated from the 
# original audio and video stream. Each format has a filename (here 
# 'test1.mpg'). FFServer will send this stream when answering a 
# request containing this filename. 

<Stream test1.mpg> 

# coming from live feed 'feed1' 
Feed feed1.ffm 

# Format of the stream : you can choose among: 
# mpeg  : MPEG-1 multiplexed video and audio 
# mpegvideo : only MPEG-1 video 
# mp2  : MPEG-2 audio (use AudioCodec to select layer 2 and 3 codec) 
# ogg  : Ogg format (Vorbis audio codec) 
# rm   : RealNetworks-compatible stream. Multiplexed audio and video. 
# ra   : RealNetworks-compatible stream. Audio only. 
# mpjpeg  : Multipart JPEG (works with Netscape without any plugin) 
# jpeg  : Generate a single JPEG image. 
# asf  : ASF compatible streaming (Windows Media Player format). 
# swf  : Macromedia Flash compatible stream 
# avi  : AVI format (MPEG-4 video, MPEG audio sound) 
Format mpeg 

# Bitrate for the audio stream. Codecs usually support only a few 
# different bitrates. 
AudioBitRate 32 

# Number of audio channels: 1 = mono, 2 = stereo 
AudioChannels 2 

# Sampling frequency for audio. When using low bitrates, you should 
# lower this frequency to 22050 or 11025. The supported frequencies 
# depend on the selected audio codec. 
AudioSampleRate 44100 

# Bitrate for the video stream 
VideoBitRate 64 

# Ratecontrol buffer size 
VideoBufferSize 40 

# Number of frames per second 
VideoFrameRate 3 

# Size of the video frame: WxH (default: 160x128) 
# The following abbreviations are defined: sqcif, qcif, cif, 4cif, qqvga, 
# qvga, vga, svga, xga, uxga, qxga, sxga, qsxga, hsxga, wvga, wxga, wsxga, 
# wuxga, woxga, wqsxga, wquxga, whsxga, whuxga, cga, ega, hd480, hd720, 
# hd1080 
VideoSize hd1080 

# Transmit only intra frames (useful for low bitrates, but kills frame rate). 
#VideoIntraOnly 

# If non-intra only, an intra frame is transmitted every VideoGopSize 
# frames. Video synchronization can only begin at an intra frame. 
VideoGopSize 12 

# More MPEG-4 parameters 
# VideoHighQuality 
# Video4MotionVector 

# Choose your codecs: 
#AudioCodec mp2 
#VideoCodec mpeg1video 

# Suppress audio 
#NoAudio 

# Suppress video 
#NoVideo 

#VideoQMin 3 
#VideoQMax 31 

# Set this to the number of seconds backwards in time to start. Note that 
# most players will buffer 5-10 seconds of video, and also you need to allow 
# for a keyframe to appear in the data stream. 
#Preroll 15 

# ACL: 

# You can allow ranges of addresses (or single addresses) 
ACL ALLOW localhost 

# You can deny ranges of addresses (or single addresses) 
#ACL DENY <first address> 

# You can repeat the ACL allow/deny as often as you like. It is on a per 
# stream basis. The first match defines the action. If there are no matches, 
# then the default is the inverse of the last ACL statement. 
# 
# Thus 'ACL allow localhost' only allows access from localhost. 
# 'ACL deny 1.0.0.0 1.255.255.255' would deny the whole of network 1 and 
# allow everybody else. 

</Stream> 


################################################################## 
# Example streams 


# Multipart JPEG 

#<Stream test.mjpg> 
#Feed feed1.ffm 
#Format mpjpeg 
#VideoFrameRate 2 
#VideoIntraOnly 
#NoAudio 
#Strict -1 
#</Stream> 


# Single JPEG 

#<Stream test.jpg> 
#Feed feed1.ffm 
#Format jpeg 
#VideoFrameRate 2 
#VideoIntraOnly 
##VideoSize 352x240 
#NoAudio 
#Strict -1 
#</Stream> 


# Flash 

#<Stream test.swf> 
#Feed feed1.ffm 
#Format swf 
#VideoFrameRate 2 
#VideoIntraOnly 
#NoAudio 
#</Stream> 


# ASF compatible 

<Stream test.asf> 
Feed feed1.ffm 
Format asf 
VideoFrameRate 15 
VideoSize 352x240 
VideoBitRate 256 
VideoBufferSize 40 
VideoGopSize 30 
AudioBitRate 64 
StartSendOnKey 
</Stream> 


# MP3 audio 

#<Stream test.mp3> 
#Feed feed1.ffm 
#Format mp2 
#AudioCodec mp3 
#AudioBitRate 64 
#AudioChannels 1 
#AudioSampleRate 44100 
#NoVideo 
#</Stream> 


# Ogg Vorbis audio 

#<Stream test.ogg> 
#Feed feed1.ffm 
#Title "Stream title" 
#AudioBitRate 64 
#AudioChannels 2 
#AudioSampleRate 44100 
#NoVideo 
#</Stream> 


# Real with audio only at 32 kbits 

#<Stream test.ra> 
#Feed feed1.ffm 
#Format rm 
#AudioBitRate 32 
#NoVideo 
#NoAudio 
#</Stream> 


# Real with audio and video at 64 kbits 

#<Stream test.rm> 
#Feed feed1.ffm 
#Format rm 
#AudioBitRate 32 
#VideoBitRate 128 
#VideoFrameRate 25 
#VideoGopSize 25 
#NoAudio 
#</Stream> 


################################################################## 
# A stream coming from a file: you only need to set the input 
# filename and optionally a new format. Supported conversions: 
# AVI -> ASF 

#<Stream file.rm> 
#File "/usr/local/httpd/htdocs/tlive.rm" 
#NoAudio 
#</Stream> 

#<Stream file.asf> 
#File "/usr/local/httpd/htdocs/test.asf" 
#NoAudio 
#Author "Me" 
#Copyright "Super MegaCorp" 
#Title "Test stream from disk" 
#Comment "Test comment" 
#</Stream> 


################################################################## 
# RTSP examples 
# 
# You can access this stream with the RTSP URL: 
# rtsp://localhost:5454/test1-rtsp.mpg 
# 
# A non-standard RTSP redirector is also created. Its URL is: 
# http://localhost:8090/test1-rtsp.rtsp 

#<Stream test1-rtsp.mpg> 
#Format rtp 
#File "/usr/local/httpd/htdocs/test1.mpg" 
#</Stream> 


# Transcode an incoming live feed to another live feed, 
# using libx264 and video presets 

#<Stream live.h264> 
#Format rtp 
#Feed feed1.ffm 
#VideoCodec libx264 
#VideoFrameRate 24 
#VideoBitRate 100 
#VideoSize 480x272 
#AVPresetVideo default 
#AVPresetVideo baseline 
#AVOptionVideo flags +global_header 
# 
#AudioCodec libfaac 
#AudioBitRate 32 
#AudioChannels 2 
#AudioSampleRate 22050 
#AVOptionAudio flags +global_header 
#</Stream> 

################################################################## 
# SDP/multicast examples 
# 
# If you want to send your stream in multicast, you must set the 
# multicast address with MulticastAddress. The port and the TTL can 
# also be set. 
# 
# An SDP file is automatically generated by ffserver by adding the 
# 'sdp' extension to the stream name (here 
# http://localhost:8090/test1-sdp.sdp). You should usually give this 
# file to your player to play the stream. 
# 
# The 'NoLoop' option can be used to avoid looping when the stream is 
# terminated. 

#<Stream test1-sdp.mpg> 
#Format rtp 
#File "/usr/local/httpd/htdocs/test1.mpg" 
#MulticastAddress 224.124.0.1 
#MulticastPort 5000 
#MulticastTTL 16 
#NoLoop 
#</Stream> 


################################################################## 
# Special streams 

# Server status 

<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 

#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico 
</Stream> 


# Redirect index.html to the appropriate site 

<Redirect index.html> 
URL http://www.ffmpeg.org/ 
</Redirect> 


#http://www.ffmpeg.org/ 

도움이된다면 크게 도움 드리겠습니다. 사용자 이름을 기반으로 최고의 답을 보여줄 것입니다.

+0

와 프레임 속도를 정의 할 수 있습니다? –

+0

불행히도 지금은 내 능력을 훨씬 뛰어 넘을 것입니다. 그러나 [Mist server] (https://github.com/DDVTECH/mistserver/)를 사용하여 성공한 사례가 있습니다. – Hugo14453

답변

0

설정 파일에 feed1.ffm이라는 피드 만 test.flv가 없습니다.

이 명령을 시도해보십시오

ffmpeg -re -i input.mkv -c:v libx264 -maxrate 1000k -bufsize 2000k -an -bsf:v h264_mp4toannexb -g 50 http://localhost:8090/feed1.ffm 

또 다른 옵션은 ffserver.conf 파일을 변경하는 것입니다. 당신이 일을 얻을 수 있었

-g (50) 수단은 GOP 크기가 50 인 것을 당신은 -framerate

관련 문제