FFmpeg流给了我" Alsa"错误

时间:2018-01-05 15:17:09

标签: python ffmpeg youtube live-streaming

最近,我一直在尝试不同的方式告诉我的Raspberry Pi将视频发送到YouTube直播。我想要做的其中一件事就是启动Pi,它会自动启动实时流。这样做的好处是巨大的(不需要用键盘/鼠标来启动流,或者必须通过ssh进入Pi来启动流)。

现在我要做的是创建一个Python程序,将来自编码器(FFmpeg)的流直接传送到流。我的目标是使程序工作,然后将其设置为自动运行。但每次我在终端上运行文件时,这都是我的结果:

Traceback (most recent call last):
  File "stream.py", line 22, in <module>
    stream.stdin.close() 
NameError: name 'stream' is not defined
[h264 @ 0x19ed450] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
pi@raspberrypi:~ $ Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: h264, none, 25 tbr, 1200k tbn, 50 tbc
Unknown input format: 'alsa'

现在我想我可以修复我可以解决其中的一些错误,但最令我担心的是:&#34; alsa&#34;不明。我安装了&#34; libsasound&#34;这应该使Alsa可用,但显然没有帮助。

我使用的是Python 3。

这是我对该程序的语法:

import subprocess 
import picamera 
import time 
YOUTUBE="rtmp://a.rtmp.youtube.com/live2/" 
KEY = ("MY PERSONAL ENCODER KEY") 
stream_cmd = 'ffmpeg -f h264 -r 25 -i - -itsoffset 5.5 -fflags nobuffer -f alsa -ac 1 -i hw:1,0 -vcodec copy -acodec aac -ac 1 -ar 8000 -ab 32k -map 0:0 -map 1:0 -strict experimental -f flv ' + YOUTUBE + KEY 
stream_pipe = subprocess.Popen(stream_cmd, shell=True, stdin=subprocess.PIPE) 
camera = picamera.PiCamera(resolution=(640, 480), framerate=25) 
try: 
  now = time.strftime("%Y-%m-%d-%H:%M:%S") 
  camera.framerate = 25 
  camera.vflip = True 
  camera.hflip = True 
  camera.start_recording(stream.stdin, format='h264', bitrate = 2000000) 
  while True: 
     camera.wait_recording(1) 
except KeyboardInterrupt: 
     camera.stop_recording() 
finally: 
  camera.close()
  stream.stdin.close() 
  stream.wait() 
  print("Camera safely shut down") 
  print("Good bye") 

现在也许我在这里错过了一些简单的东西,但我不知道是什么。我尝试了很多想法(例如用其他输入替换Alsa,命名&#34; stream&#34;函数。)我不知道。

0 个答案:

没有答案