Транскодирование ffmpeg останавливается через несколько секунд


1

Я пытаюсь сделать это в течение недели безуспешно. То, что я пытаюсь сделать, - это перекодировать видео из потокового источника в реальном времени и уменьшить его с помощью FFmpeg, но каждый раз, когда я начинаю транскодировать его вещание в течение ~ 11 секунд и останавливаюсь.

Последняя команда, которую я попробовал:

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

Я попытался загрузить файл .ts с помощью IDM, и он завершил загрузку файла примерно через 12 секунд, когда FFmpeg прекратил транскодирование на нем.

Означает ли это, что FFmpeg загружает этот файл как один сегмент и не продолжает чтение исходного видео, как это обычно делают проигрыватели видео. Кстати, я попробовал с источником с VLC-плеером, и он не остановил воспроизведение того же исходного видео.

Я решил передать команду FFmpeg через конфигурационный файл FFserver ffserver.conf

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

Некоторое время поток работает нормально, но после тестирования нескольких источников, я замечаю, что это трудно для транскодирования HD-видео.

Я предполагаю, что проблема с моим сервером VPS KVM очень ограничена ЦП и ОЗУ (только 128 МБ)! Так как я попытался использовать ultrafastзапрограммированную но din't решить эту проблему, еще одна вещь , я заметил , когда я дают возможность AVOptionVideo crfустановки на ffserver.confтранс-кодирование пробегов бит плавно , без сбрасывания частоты кадров. Поскольку мой сервер использует Xeon L5520процессор, который является устаревшим процессором, я использую 1/4 мощности одноядерного V (если считать HT, то это будет 1/8 реального ядра) :(

== Обновление ==

Похоже, проблема была с источником видео, который я использую, их сервер находился под большой нагрузкой, и сервер потерял соединение через несколько секунд, ничего плохого в моей команде или FFmpeg тоже нет.

# 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

Здесь вывод с -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

Здесь введите информацию о файле URL. После того, как я загрузил его на свой компьютер с 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

1
Что происходит, когда вы добавляете '-t 60'?
Самуил Тулач

это то же самое , я думаю, проблема с источником поток делит файл на сегмент, Во всяком случае я использую команду FFmpeg непосредственно на ffserver.confс Launch ffmpeg -i 'source.com/4798.ts' -copyinkf -codec copy -preset ultrafastэтим решает FFmpeg остановить проблему. Я предполагаю, что FFserver перезапускает сервер FFmpeg, когда заканчивается загрузка первого сегмента.
Салем F

Вы пробовали регистрировать вывод и искать ошибки? Используйте -reportфлаг в конце вашей команды, который должен записать файл журнала в текущий каталог.

Ваша пропускная способность (битрейт) достаточно велика? «crf» - это коэффициент постоянной скорости, который «упростит» транскодирование, поскольку ему больше не нужно управлять скоростью. Но размер потока битов будет сильно различаться. Если вы получаете пропущенные кадры без crf, это говорит о том, что кодировщик решил отбросить их, чтобы удовлетворить требования битрейта.

Почему бы и нет, но я удивлен, что vlc не может справиться с мульти-чанкингом. Там должна быть какая-то защита (drm?)
NVRM
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.