Bri*_*ion 25 python linux opencv ffmpeg pipe
这是使用OpenCV的python绑定读取网络摄像头的一个相当简单的例子:
'''capture.py'''
import cv, sys
cap = cv.CaptureFromCAM(0) # 0 is for /dev/video0
while True :
if not cv.GrabFrame(cap) : break
frame = cv.RetrieveFrame(cap)
sys.stdout.write( frame.tostring() )
Run Code Online (Sandbox Code Playgroud)
现在我想将输出管道输出到ffmpeg,如下所示:
$ python capture.py | ffmpeg -f image2pipe -pix_fmt bgr8 -i - -s 640x480 foo.avi
可悲的是,我无法将ffmpeg魔术咒语完全正确而且失败了
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / 52.72. 2
libavformat 52.64. 2 / 52.64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.19. 0 / 1.19. 0
libswscale 0.11. 0 / 0.11. 0
libpostproc 51. 2. 0 / 51. 2. 0
Output #0, avi, to 'out.avi':
Stream #0.0: Video: flv, yuv420p, 640x480, q=2-31, 19660 kb/s, 90k tbn, 30 tbc
[image2pipe @ 0x1508640]max_analyze_duration reached
[image2pipe @ 0x1508640]Estimating duration from bitrate, this may be inaccurate
Input #0, image2pipe, from 'pipe:':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: 0x0000, bgr8, 25 fps, 25 tbr, 25 tbn, 25 tbc
swScaler: 0x0 -> 640x480 is invalid scaling dimension
我不是大师.有人做过这个吗?
Bri*_*ion 32
采取了一堆摆弄,但我发现使用FFmpeg rawvideo demuxer:
python capture.py | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 -i - foo.avi
Run Code Online (Sandbox Code Playgroud)
由于原始视频中没有标题指定假定的视频参数,因此用户必须指定它们才能正确解码数据:
-framerate设置输入视频帧率.默认值为25.-pixel_format设置输入视频像素格式.默认值为yuv420p.-video_size设置输入视频大小.没有默认值,因此必须明确指定此值.对于超级用户来说,这里有一些额外的东西.同样的事情,但使用VLC将实时输出流式传输到Web,Flash格式:
python capture.py | cvlc --demux=rawvideo --rawvid-fps=30 --rawvid-width=320 --rawvid-height=240 --rawvid-chroma=RV24 - --sout "#transcode{vcodec=h264,vb=200,fps=30,width=320,height=240}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=:8081/stream.flv}"
Run Code Online (Sandbox Code Playgroud)
编辑:使用ffmpeg和ffserver创建webm流
python capture.py | ffmpeg -f rawvideo -pixel_format rgb24 -video_size 640x480 -framerate 25 -i - http://localhost:8090/feed1.ffm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29423 次 |
| 最近记录: |