2016-06-03 29 views
0

Ich schrieb eine einfache opencv-Desktop-Anwendung, um einen Multicast-Stream von meinem Raspberry Pi zu erhalten. Auf dem Pi möchte ich avconv verwenden, um Multicast zu senden.Wie benutzt man "avconv" auf Raspberry Pi für Multicasting h264-Datei oder/dev/video0?

Dieser funktioniert mit meiner App und auch mit VLC-Player:

avconv -i video.mp4 -f mpegts udp://225.0.0.37:4030 

Aber dies funktioniert nicht:

avconv -i video.h264 -f mpegts udp://225.0.0.37:4030 

Fehlermeldung wie folgt:

avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers 
    built on Mar 16 2015 13:20:58 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) 
[h264 @ 0x8986980] Estimating duration from bitrate, this may be inaccurate 
Input #0, h264, from 'video.h264': 
    Duration: N/A, bitrate: N/A 
    Stream #0.0: Video: h264 (High), yuv420p, 320x240, 25 fps, 25 tbr, 25 tbn 
Output #0, mpegts, to 'udp://225.0.0.37:4030': 
    Metadata: 
    encoder   : Lavf54.20.4 
    Stream #0.0: Video: mpeg2video, yuv420p, 320x240, q=2-31, 200 kb/s, 90k tbn, 25 tbc 
Stream mapping: 
    Stream #0:0 -> #0:0 (h264 -> mpeg2video) 
Press ctrl-c to stop encoding 
[fps @ 0x8a5cac0] Discarding initial frame(s) with no timestamp. 
    Last message repeated 445 times 
frame= 0 fps= 0 q=0.0 Lsize=  0kB time=10000000000.00 bitrate= 0.0kbits/s  
video:0kB audio:0kB global headers:0kB muxing overhead -nan% 

Könnte jemand erklären, wo das Problem ist und wie man dieses Problem löst?

Mein Ziel ist es, einen Live-Stream mit dem v4l2 Treiber zu erhalten, wie folgt aus:

avconv -i /dev/video0 -f mpegts udp://225.0.0.37:4030 

Antwort

3

Wenn Sie verwenden möchten,/dev/video0 mit avconv Ihnen zu sagen haben avconv, dass die Quelle eine video4linux2 Quelle /Strom.

Und für gute Ergebnisse, die Sie haben v4l2 zu sagen, die Auflösung auf ex zu setzen .. 640x480 sonst ist es 320x240

avconv -f video4linux2 -s 640x480 -i /dev/video0 -f mpegts udp://225.0.0.37:4030 

verwenden, aber denken Sie daran Ich glaube, Sie haben eine mpeg2 Lizenz dafür zu erwerben.

Wenn Sie avconv mit dem --enable-omx-rpi kompilieren, können Sie den Hardware-h264-Coder aus dem Openmax verwenden.

avconv -f video4linux2 -s 640x480 -i /dev/video0 -f mp4 -na \ 
-c:v h264_omx -b:v 750k udp://225.0.0.37:4030 

-na = disable Audio

Dadurch wird die CPU-Auslastung von Ihrem pi um 70% oder mehr reduzieren.

Für die Erstellung Anweisungen: https://ubuntu-mate.community/t/hardware-h264-video-encoding-with-libav-openmax-il/4997/6