ffmpeg-Transkodierungsstopps nach einigen Sekunden

954
Salem F

Ich versuche, dies über eine Woche hinweg ohne Erfolg zu tun. Was ich versuche zu tun, ist das Transcodieren von Video von der Live-Streaming-Quelle und das Herunterskalieren mit FFmpeg, aber jedes Mal, wenn ich mit der Transcodierung beginne, starte ich ~ 11 Sekunden lang und stoppe.

Der letzte Befehl, den ich probiert habe:

ffmpeg -re -i 'http://source.com/1034.ts' -preset ultrafast http://localhost:2052/feed1.ffm 

Ich habe versucht, die .ts-Datei mit IDM herunterzuladen, und der Download der Datei ist exakt auf ~ 12 Sek. Beendet, so dass FFmpeg die Transcodierung stoppt.

Bedeutet das, dass FFmpeg diese Datei als ein Segment herunterlädt und das Quellvideo nicht weiter liest, wie dies bei Videoplayern normalerweise der Fall ist. Übrigens habe ich es mit VLC-Player mit Source versucht, und es wurde nicht das gleiche Quellvideo abgespielt.

Ich entschied mich dafür, den FFmpeg-Befehl über die FFserver-Konfigurationsdatei zu übergeben ffserver.conf

Launch ffmpeg -i 'http://source.com/1.ts' -copyinkf -codec copy 

Der Stream funktioniert für eine Weile gut, aber nachdem ich einige Quellen getestet habe, fällt mir schwer, HD-Videos zu transcodieren.

Ich denke, das Problem mit meinem VPS-KVM-Server ist sehr beschränkt auf CPU und RAM (nur 128 MB)! Da ich versucht habe, das ultrafastPreset zu verwenden, das Problem jedoch nicht zu lösen, bemerken Sie eine andere Sache . Ich stelle fest, dass die AVOptionVideo crfEinstellung der Transkodierung ein ffserver.confwenig reibungslos ohne Framerate erfolgt. Las mein Server verwendet eine Xeon L5520CPU, die veraltet ist. Die CPU ist speziell für die Verwendung von 1/4 des V-Kerns ausgelegt (wenn sie HT zählen, wird dies 1/8 des tatsächlichen Kerns sein): (

== Update ==

Sieht so aus, als ob das Problem mit der Videoquelle war, die ich verwende, der Server war stark ausgelastet und der Server verlor nach ein paar Sekunden die Verbindung. Auch mit meinem Befehl oder mit FFmpeg war nichts falsch.

# vlc -I dummy 'https://source.com/1034.ts' --sout '#standard' VLC media player 2.2.8 Weatherwax (revision 2.2.7-14-g3cc1d8cba9) [09d3fdf0] pulse audio output error: PulseAudio server connection failure: Connection refused [09d279c0] core interface error: no suitable interface module [09c9b8f8] core libvlc error: interface "globalhotkeys,none" initialization failed [09d279c0] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11 [09d279c0] core interface error: no suitable interface module [09c9b8f8] core libvlc error: interface "dbus,none" initialization failed [09d279c0] dummy interface: using the dummy interface module... [b5e04ae0] access_output_http access out: Consider passing --http-host=IP on the command line instead. [b5e38ab8] ts demux: MPEG-4 descriptor not found for pid 0x101 type 0xf [b5e90ae0] packetizer_mpeg4audio decoder: AAC channels: 2 samplerate: 48000 [flv @ 0xb5e33b40] dimensions not set [b5e06360] avformat mux error: could not write header: Invalid argument [b5e88ef0] core decoder error: cannot continue streaming due to errors [b5e90ae0] core decoder error: cannot continue streaming due to errors 

Hier mit ausgeben -loglevel verbose

:~# ffmpeg -i http://source.com/1.ts -copyinkf -codec copy -loglevel verbose http://127.0.0.1:8090/feed1.ffm ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.9.2 (Debian 4.9.2-10) configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/i386-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/i386-linux-gnu libavutil 54. 20.100 / 54. 20.100 libavcodec 56. 26.100 / 56. 26.100 libavformat 56. 25.101 / 56. 25.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 11.102 / 5. 11.102 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Invalid UE golomb code Last message repeated 2 times Input #0, mpegts, from 'http://source.com/1.ts': Duration: N/A, start: 30472.768167, bitrate: N/A Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 960x540 (960x544) [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 105 kb/s [graph 0 input from stream 0:1 @ 0x971f2c0] tb:1/48000 samplefmt:fltp samplerate:48000 chlayout:0x3 [audio format for output stream 0:0 @ 0x9844de0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:0' [auto-inserted resampler 0 @ 0x97115e0] ch:2 chl:stereo fmt:fltp r:48000Hz -> ch:1 chl:mono fmt:fltp r:22050Hz [graph 1 input from stream 0:0 @ 0x96f5d00] w:960 h:540 pixfmt:yuv420p tb:1/90000 fr:50/1 sar:1/1 sws_param:flags=2 [scaler for output stream 0:1 @ 0x96f5e80] w:352 h:240 flags:'0x4' interl:0 [scaler for output stream 0:1 @ 0x96f5e80] w:960 h:540 fmt:yuv420p sar:1/1 -> w:352 h:240 fmt:yuv420p sar:40/33 flags:0x4 Output #0, ffm, to 'http://127.0.0.1:8090/feed1.ffm': Metadata: creation_time : now encoder : Lavf56.25.101 Stream #0:0: Audio: wmav2, 22050 Hz, mono, fltp, 64 kb/s Metadata: encoder : Lavc56.26.100 wmav2 Stream #0:1: Video: msmpeg4v3 (msmpeg4), yuv420p, 352x240 [SAR 40:33 DAR 16:9], q=2-31, 256 kb/s, 50 fps, 1000k tbn, 15 tbc Metadata: encoder : Lavc56.26.100 msmpeg4 Stream mapping: Stream #0:1 -> #0:0 (aac (native) -> wmav2 (native)) Stream #0:0 -> #0:1 (h264 (native) -> msmpeg4v3 (msmpeg4)) Press [q] to stop, [?] for help Invalid UE golomb code *** dropping frame 3 from stream 1 at ts 1 Last message repeated 1 times [msmpeg4 @ 0x970f060] warning, clipping 1 dct coefficients to -127..127 *** dropping frame 41 from stream 1 at ts 39me=00:00:02.73 bitrate= 311.7kbits/s dup=0 drop=88 Last message repeated 1 times [h264 @ 0x9844a00] error while decoding MB 58 12, bytestream -5 [h264 @ 0x9844a00] concealing 1311 DC, 1311 AC, 1311 MV errors in B frame *** dropping frame 53 from stream 1 at ts 52 No more output streams to write to, finishing. frame= 55 fps= 42 q=4.3 Lsize= 152kB time=00:00:03.66 bitrate= 339.6kbits/s dup=0 drop=119 video:116kB audio:26kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 6.760316% Input file #0 (http://source.com/1.ts): Input stream #0:0 (video): 174 packets read (220322 bytes); 174 frames decoded; Input stream #0:1 (audio): 156 packets read (36657 bytes); 156 frames decoded (159744 samples); Total: 330 packets (256979 bytes) demuxed Output file #0 (http://127.0.0.1:8090/feed1.ffm): Output stream #0:0 (audio): 72 frames encoded (73383 samples); 72 packets muxed (26712 bytes); Output stream #0:1 (video): 55 frames encoded; 55 packets muxed (119080 bytes); Total: 127 packets (145792 bytes) muxed 

Hier geben Sie die URL-Info der Eingabe ein, nachdem ich sie mit IDM auf meinen PC heruntergeladen habe

General ID : 1 (0x1) Complete name : D:\1.ts Format : MPEG-TS File size : 256 KiB Duration : 2 s 520 ms Overall bit rate mode : Variable Overall bit rate : 788 kb/s  Video ID : 256 (0x100) Menu ID : 1 (0x1) Format : AVC Format/Info : Advanced Video Codec Format profile : High@L3.1 Format settings, CABAC : Yes Format settings, RefFrames : 2 frames Codec ID : 27 Duration : 2 s 680 ms Width : 960 pixels Height : 540 pixels Display aspect ratio : 16:9 Frame rate : 50.000 FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive  Audio ID : 257 (0x101) Menu ID : 1 (0x1) Format : AAC Format/Info : Advanced Audio Codec Format version : Version 4 Format profile : LC Muxing mode : ADTS Codec ID : 15 Duration : 2 s 69 ms Bit rate mode : Variable Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 48.0 kHz Frame rate : 46.875 FPS (1024 SPF) Compression mode : Lossy Delay relative to video : -12 ms  Menu ID : 4096 (0x1000) Menu ID : 1 (0x1) Duration : 2 s 520 ms List : 256 (0x100) (AVC) / 257 (0x101) (AAC) Service name : Service01 Service provider : FFmpeg Service type : digital television 
1
Was passiert, wenn Sie '-t 60' hinzufügen? Samuel Tulach vor 6 Jahren 1
Es ist das gleiche, ich denke, das Problem liegt in der Quell-Stream-Divisions-Datei, die zu segmentieren ist. Jedenfalls verwende ich den ffmpeg-Befehl direkt auf `ffserver.conf` mit` Launch ffmpeg -i 'source.com/4798.ts' -copyinkf -codec copy - voreingestellte ultraschnelle `löst das Problem mit FFmpeg-Stopp. Ich denke, FFserver startet den FFmpeg-Server neu, wenn der erste Segment-Download das Ende erreicht. Salem F vor 6 Jahren 0
Haben Sie versucht, die Ausgabe zu protokollieren und nach Fehlern zu suchen? Verwenden Sie das `-report`-Flag am Ende Ihres Befehls, das eine Protokolldatei in das aktuelle Verzeichnis schreiben soll. vor 6 Jahren 0
Ist Ihre Bandbreite (Bitrate) groß genug? "crf" ist ein konstanter Ratenfaktor und vereinfacht die Transcodierung, weil er keine Ratensteuerung mehr durchführen muss. Die Größe des Bitstroms wird jedoch stark variieren. Wenn Sie Frames ohne CRF fallen lassen, schlägt der Encoder vor, die Frames zu löschen, um die Bitratenanforderungen zu erfüllen. vor 6 Jahren 0
Warum nicht, aber ich bin überrascht, dass vlc das Multi-Chuncking nicht bewältigen kann. Es muss etwas Schutz geben (drm?) Cryptopat vor 6 Jahren 0
@Cryptopat VLC funktioniert auf meinem PC, aber ich habe eine langsame Verbindung, kann die Streamgeschwindigkeit von 1Mbit-VS-4Mbit nicht verarbeiten, ich teste den E / A-Server und es> 100Mbit Salem F vor 6 Jahren 0
^^ Übrigens löse ich es mit verschiedenen Videoquellen, da die Originalquelle stark belastet wurde. Salem F vor 6 Jahren 0

0 Antworten auf die Frage