Ich versuche, Video für HLS on Demand (VoD) zu codieren und zu segmentieren. Ich benutze den folgenden Code für solche:

ffmpeg -i 20170706_174314.mp4 -c 24 \
        -vcodec libx264 -acodec aac -ac 1 -strict -2 -b:v 128k \
        -profile:v baseline -maxrate 400k -bufsize 1835k \
        -hls_time 10 -hls_playlist_type vod -vsync 1 \
        video_chunks/index1.m3u8 \
        -c 24 -vcodec libx264 -acodec aac -ac 1 -strict -2 -b:v 128k \
        -profile:v baseline -maxrate 700k -bufsize 1835k \
        -hls_time 10 -hls_playlist_type vod -vsync 1 \
        video_chunks/index2.m3u8

Später erstelle ich eine weitere Wiedergabeliste mit Bandbreitentrennzeichen, um die beiden anderen Wiedergabelisten aufzurufen, die mit dem obigen Code generiert wurden.

Ich habe diesen anderen Code auch nur zur Segmentierung ausprobiert, hatte aber genau das gleiche Problem:

ffmpeg -i 20170706_174314.mp4 \
-c:a libmp3lame -ar 48000 -ab 64k  -c:v libx264 -b:v 128k -flags \ 
-global_header -map 0 -f segment \
-segment_list video_chunks/test.m3u8 -segment_time 10 -segment_format mpegts \
video_chunks/segment_%05d.ts

Dieser Code funktionierte bei einigen Videos hervorragend, aber gestern habe ich ein Video mit meinem Samsung J7 Prime-Telefon aufgenommen, um es zu testen, da die Videos per Telefon generiert werden und dieses Video schlecht codiert wurde. Die Qualität ist mies und einige Teile des Videos wurden schwarz-weiß.

Eine andere Sache, die mir in diesem Video aufgefallen ist, ist, dass die folgende Nachricht bis zum Ende des Kodierungs- und Segmentierungsprozesses in einer Schleife angezeigt wurde.

Vergangene Dauer X zu groß

Wobei X eine Dezimalstelle ist, die wirklich nahe kommt

0,675316

Der Link zum Video ist unten:

Dropbox-Link

Meine FFmpeg-Version:

ffmpeg --version
ffmpeg version N-86482-gbc40674 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 7.1.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
  libavutil      55. 66.100 / 55. 66.100
  libavcodec     57. 99.100 / 57. 99.100
  libavformat    57. 73.100 / 57. 73.100
  libavdevice    57.  7.100 / 57.  7.100
  libavfilter     6. 92.100 /  6. 92.100
  libswscale      4.  7.101 /  4.  7.101
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100

SO: Windows 10

Murilo
quelle