#ffmpeg
Вопрос:
С помощью следующих команд преобразование видео mkv в видеопотоки на основе главного списка воспроизведения HLS работает неправильно.
ffmpeg -i input.mkv -y -vsync 0 -c:v h264_cuvid -c:v h264_nvenc -c:a copy -map 0:v:0 -map 0:a:0 -vf fade,hwupload_cuda,scale_npp=854:358 -b:v:0 1M -b:a:0 128k -map 0:v:0 -map 0:a:0 -vf fade,hwupload_cuda,scale_npp=1280:536 -b:v:1 3M -b:a:1 192k -var_stream_map "v:0,a:0,name:480p v:1,a:1,name:720p" -hls_time 10 -hls_list_size 0 -hls_time 3 -hls_flags independent_segments -f hls -hls_playlist_type event -master_pl_name "master-pl.m3u8" output-%v.m3u8
И он генерирует вывод следующим образом, что неверно.
#EXTM3U #EXT-X-VERSION:6 #EXT-X-STREAM-INF:BANDWIDTH=1240800,RESOLUTION=1280x536,CODECS="avc1.4d401f,ac-3" output-480p.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=3511200,RESOLUTION=1280x536,CODECS="avc1.4d401f,ac-3" output-720p.m3u8
Вопрос
Как создать мастер-плейлист с помощью ffmpeg (который был скомпилирован для работы с графическим процессором nvidia)
Конфигурации компиляции GPU
--enable-nonfree --disable-shared --enable-gpl --enable-libx264 --enable-cuda --enable-nvenc --enable-cuvid --enable-cuda-nvcc --enable-openssl --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
Я скопировал видео с несколькими разрешениями, созданное на основе следующих команд, которое работает хорошо, но оно работает с процессором, который я хотел бы преобразовать в графический процессор.
ffmpeg -i input.mkv -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -c:v libx264 -crf 22 -c:a aac -ar 48000 -filter:v:0 scale=w=480:h=360 -maxrate:v:0 600k -b:a:0 64k -filter:v:1 scale=w=640:h=480 -maxrate:v:1 900k -b:a:1 128k -filter:v:2 scale=w=1280:h=720 -maxrate:v:2 900k -b:a:2 128k -var_stream_map "v:0,a:0,name:360p v:1,a:1,name:480p v:2,a:2,name:720p" -preset slow -hls_list_size 0 -threads 0 -f hls -hls_playlist_type event -hls_time 3 -hls_flags independent_segments -master_pl_name "name-pl.m3u8" "name-%v.m3u8"
Комментарии:
1. Лучше сгенерировать основной плейлист жестко закодированным способом. С помощью пары строк кода это можно обработать
2. Я дам ответ ниже, совсем позже
3. «работает неправильно» Как это должно работать и что он делает вместо этого?
4. По какой-то причине он генерирует неправильные разрешения