Captain Kirk
Fanboy von sich selbst
|
Moin, ich verzweifle derzeit massive am Konvertieren eines h264 Streams zu mjpeg. Dr. Google hat mir nicht geholfen und das VLC Forum dürfte mehr Schein als Sein sein. Zumindest wurde dort bislang nichtmal irgendwie kommentiert. Das Problem is verzwickt und ich komm nicht drauf warums einmal funktioniert, dann nach kurzer Zeit nimma und dann wieder gar nicht. Egal was ich mach. Folgende Komponenten: Ubiquiti G3 Dome CamRTSP URL: rtsp://10.0.0.xx:554/s0 Width:1024 Height:576 Bitrate:2000 kbps FPS:30 Raspian mit installiertem VLC (läuft in der einer VM - 1 Core vom i7, 1,5GB Ram) Das Kommando: cvlc -I dummy -v -R rtsp://10.0.0.xx/s0 --sout='#transcode{threads=2,acodec=none,vcodec=MJPG ,vb=2200,width=800,height=450,fps=20}:standard{mu x=mpjpeg,access=http{user=xxx,pwd=xxx,mime=m ultipart/x-mixed-replace; boundary=--7b3cc56e5f51db803f790dad720ed50a},dst=:8080/cam.mjpg}' --sout-keep
Hat schon funktioniert. Habs dann in den Autostart verfrachtet, mit dem Ergebnis, dass es nach xx Sekunden plötzlich mit: [00007f1e7c000d18] core stream output warning: trying to send non-dated packet to stream output! [00007f1e7c000d18] core stream output warning: trying to send non-dated packet to stream output! [00007f1e7c000d18] core stream output warning: trying to send non-dated packet to stream output! [00007f1e8c000c28] core input error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 1000 ms) [00007f1e8c000c28] core input error: ES_OUT_RESET_PCR called stoppt. Ein VB unter 2200 führte anfangs zu: [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow [mjpeg @ 0x7fb0f8226b40] rc buffer underflow Aktuell gehts gar nicht. ICH VERZWEIFLE Der h264 Stream läuft btw. super. Nur kann meine Haussteuerung damit nicht umgehen. TIA Kirk
Bearbeitet von Captain Kirk am 28.01.2017, 11:01
|
Captain Kirk
Fanboy von sich selbst
|
up ^
|
Master99
verträumter realist
|
all meine transcoding-versuche mit vlc scheiterten stehts an (je nach version) unterschiedlichen bugs.
vielleicht besser ffmpeg verwenden?
@ raspian: solls später auf nem raspi landen oder wieso eine arm-distri in der vm?
|
Captain Kirk
Fanboy von sich selbst
|
bei raspian handelt es sich um loxberry. ein fanprojekt für loxone (smarthome). jemand hat sich die mühe gemacht das zu virtualisieren und das verwend ich jetzt am nas.
kannst mir mit ffmpeg unter die arme greifen oder soll ich lieber google bemühen?
|
Captain Kirk
Fanboy von sich selbst
|
ffmpeg hab ich installiert. config bzw. command, dass es läuft hab ich allerdings noch nicht...
|
Master99
verträumter realist
|
da kann ich im detail leider auch nicht weiterhelfen ;(
|
GrandAdmiralThrawn
XP Nazi
|
Ich nutze zwar avconv statt ffmpeg, aber im Prinzip is das eh dasselbe, nur die Optionen heißen tlw. etwas anders und ein paar Kleinigkeiten können sich unterscheiden. Ist halt aus'm libav Projekt, was zu 99% deckungsgleich mit ffmpeg ist. Bsp. für einen H.264/AVC Elementarstream zu MJPEG in einem MKV Container, Input/Output-Framerate von 25fps (Schräge Frameraten wie NTSC kannst auch per Bruch schreiben, z.B. "24000/1001"): $ avconv -c:v h264 -r 25 -i ~/videos/input.h264 -c:v mjpeg -r 25 -f matroska ~/videos/output.mkv
Andere Container wären z.B. mp4 oder mov, wenn nötig (z.B. -f mov). Falls die Quelle Audio mitbringt (z.B. ein .mp4 File), kannst es per -an abdrehen. Meinen eigenen avconv Build findest u.a. [ hier], falls du es für Windows haben willst (etwas weiter unten). Ansonsten geht auch ffmpeg, klar, mußt nur wissen wie die Optionen heißen. Optionen vor -i <file> gelten für den Input Decoder, Optionen danach gelten für den Output Encoder. Das Ergebnis schaut ok aus, hier ein Auszug aus mkvinfo: |+ Segment tracks
| + A track
| + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
| + Track UID: 1
| + Lacing flag: 0
| + Language: und
| + Default flag: 0
| + Codec ID: V_MJPEG
| + Track type: video
| + Default duration: 40.000ms (25.000 frames/fields per second for a video track)
| + Video track
| + Pixel width: 1920
| + Pixel height: 1080
| + Display unit: 3 (aspect ratio)
| + Display width: 1920
| + Display height: 1080
Und einer aus mediainfo: Video
ID : 1
Format : V_MJPEG
Codec ID : V_MJPEG
Duration : 10 min
Bit rate : 11.7 Mb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 25.000 FPS
Bits/(Pixel*Frame) : 0.226
Stream size : 876 MiB (98%)
Writing library : Lavc56.1.0 mjpeg
Default : No
Forced : No
Spielt auch sauber ab bei mir nach dem Transcode. Zur Identifikation der Parameter des Inputs (wie Framerate) empfehle ich das Tool MediaInfo, is cross-platform und gibts auch mit GUIs.
Bearbeitet von GrandAdmiralThrawn am 25.01.2017, 15:23
|
Captain Kirk
Fanboy von sich selbst
|
ich steck immer noch... hätt wohl doch einfach eine mjpg cam nehmen sollen hab jetzt im google was gefunden was ev. etwas weiterhilft (für jemanden der sich auskennt) klickffprobe 'rtsp://camera_url/'
wirft folgendes aus: Input #0, rtsp, from 'rtsp://10.0.0.86/s0': Metadata: title : s0 Duration: N/A, start: 0.093968, bitrate: N/A Stream #0:0: Audio: aac (LC), 11025 Hz, mono, fltp Stream #0:1: Video: h264 (Main), yuvj420p(pc, bt709, progressive), 1920x1080 [SAR 189:190 DAR 168:95], 25 fps, 25 tbr, 90k tbn, 50 tbc mit dem weiterführenden code komm ich aber schon nimma weiter: ffmpeg -re -i 'rtsp://camera_url' -pix_fmt yuv420p -an -c:v mjpeg -q:v 0 -f mjpeg udp://nvr_ip:some_port_above_1024
ich brauch ja letztlich ein http://xx.xx.xx.xx:[port]/cam.mjpg
|
GrandAdmiralThrawn
XP Nazi
|
Moment, WAS? Du willst einen Streaming Server, verstehe ich das so richtig? Mein Ansatz war rein filebasiert, also Quellfile, Zielfile, alles offline.
Was genau ist es eigentlich, was du da machst / machen willst?
|
Captain Kirk
Fanboy von sich selbst
|
ja exakt. ich habe eine überwachnungscam die einen h264 stream liefert. der muss, weil meine haussteuerung nix anderes checkt, in mjpg transcodiert werden.
sorry falls das bis jetzt nicht ausreichend rüber kam.
|
GrandAdmiralThrawn
XP Nazi
|
Ich bin da etwas rückständig, also mit Bitte um Entschuldigung wenn ich das jetzt so fragen muß, aber was fängt eine "Haussteuerung" mit einem Videostream an?!
|
Captain Kirk
Fanboy von sich selbst
|
Ist ein smart home server der u.a. ein intercom interface (also Gegensprechanlage) mit sich bringt. Dh die cam am vorplatz meines hauses schaut zur klingel bzw halt zum tor. Wenns klingelt verbindet sich die sip Gegensprechanlage mit dem handy und dieses intercom interface zeigt dann auch gleichzeitig an wer dort steht.
|
GrandAdmiralThrawn
XP Nazi
|
Was du also brauchst ist ein low-latency Livestream zwischen zwei Devices bzw. Netzwerkservices... Mh, ich hab das Gefühl, ich könnte fast motiviert sein mir das anzusehen.. Vielleicht nächste Woche. Leider hab ich keinerlei Hardware dieser Art, daher ist's ein wenig schwierig...
|
Captain Kirk
Fanboy von sich selbst
|
Du bist herzlichst eingeladen vorbei zu kommen, wenns an hw scheitert Mo hätt ich frei. Abends geht immer
|
Captain Kirk
Fanboy von sich selbst
|
habs geschafft!! in der /etc/server.conf hab ich nun folgendes eingetragen: HTTPPort 8888 HTTPBindAddress 0.0.0.0 MaxHTTPConnections 2000 MaxClients 1000 MaxBandwidth 1000000 CustomLog -
<Feed feed1.ffm> File /tmp/feed1.ffm FileMaxSize 20M Launch ffmpeg -i "rtsp://10.0.0.86:554/s2" </Feed>
<Stream s2.mjpg> Feed feed1.ffm Format mpjpeg VideoBitRate 10000 VideoFrameRate 15 VideoSize 800x450 VideoIntraOnly NoAudio Strict -1 NoDefaults </Stream> dann ffserver starten (muss ich mir noch anschauen wie ich das automatisch beim systemstart starte, sollte aber nicht so ein großes ding sein hoffe ich...) und dann einfach den stream per http://xxxxx/s2.mjpg abrufen. funzt super, flüssig UND im gegensatz zu vlc gestochen scharf!
|