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:
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