ffmpeg Transcoding Stops After Few Seconds

1

I'm trying to do this over week now with no success, What's I'm trying to do is transcoding video from live streaming source and downscale it with FFmpeg, but every time I start transcoding it broadcasting for ~11 sec and stop.

The last command I tried:

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

I tried to download the .ts file with IDM and it finish downloading the file on the exact ~12 Sec that FFmpeg stop trans coding on it.

Does that means that FFmpeg download that file as one segment and not continued reading the source video As what video players does usually. By the way, I tried with source with VLC player and it didn't stop playing the the same source video.

I decided to pass FFmpeg command via FFserver config file ffserver.conf

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

The stream works fine for a while but after testing couple sources I notice it's struggle to trans-coding HD videos.

I guess the issue with my VPS KVM server being very limited CPU and RAM ( 128MB only)! Since I tried using ultrafast preset but din't solve the issue, another thing, I notice when I enable AVOptionVideo crf setting on ffserver.conf trans-coding runs bit smoothly without frame-rate dropping. Las my server uses Xeon L5520 CPU which is outdated CPU specially I gout 1/4 power of V single core (if they count HT it will be 1/8 of the real core): (

== Update ==

Looks like the issue were with video source I use , their server were under heavy load and the server lost connection after few second , nothing wrong with my command or FFmpeg either .

# vlc -I dummy 'https://source.com/1034.ts' --sout '#standard{access=http,mux=flv,dst=localhost:2052}'
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

Here output with -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

Here input URL file info After I download it to my PC with IDM

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

Salem F

Posted 2018-03-27T21:20:53.137

Reputation: 163

1What happens when you add ‘-t 60’? – Samuel Tulach – 2018-03-31T20:06:33.943

it's the same I guess the problem is with the source stream divide file to segment , Anyway I use ffmpeg command direct on ffserver.conf with

Launch ffmpeg -i 'source.com/4798.ts' -copyinkf -codec copy -preset ultrafast this solves FFmpeg stop issue . I guess FFserver restarting FFmpeg server when first segment download reach it end . – Salem F – 2018-03-31T20:36:15.590

Have you tried logging output and looking for errors? Use the -report flag at the end of your command, that should write a log file to the current directory. – None – 2018-04-06T18:21:25.110

Is your bandwidth (bitrate) big enough? "crf" is constant rate factor and will "simplify" transcoding because it no longer has to do rate control. But the size of the bitstream will vary a lot. If you get dropped frames without crf, it suggests the encoder chose to drop them to meet bitrate requirements. – None – 2018-04-06T21:13:32.423

Why not, but i am surprised that vlc can't handle the multi chuncking. There must have some protection (drm?) – NVRM – 2018-04-14T18:51:22.527

@Cryptopat VLC works on my PC but I have slow connection can't handle stream speed 1Mbit-VS-4Mbit ,I test I/O server it and it > 100Mbit – Salem F – 2018-04-14T19:12:50.840

^^ BTW I solve it using different video source sine the original source were under heavy load . – Salem F – 2018-05-31T17:37:22.683

No answers