Как я могу изменить slice_type, который отображается в анализаторе потока Elecard с помощью ffmpeg? - PullRequest
0 голосов
/ 10 октября 2018

Я не ffmpeg и не эксперт по кодированию и пытаюсь закодировать файл MP4 в MPEG-4 h264 .ts файл.

Когда Elecard stream analyzer анализирует мой файл .ts результата, он показывает slice_type = 7 для всех i-frame с, как вы можете видеть на прилагаемом скриншоте.

Как я могу изменить все это на slice_type = 2?

Моя ffmpeg команда:

-i Source.mp4 \
-filter:v 'setpts=0+PTS-STARTPTS' -metadata:s:v:0 start_time=0 \
-f adts -c:a libfdk_aac  -profile:a aac_he  -strict -2 -ar 48000 -b:a 48k \
-f mpegts -c:v libx264  -vbsf h264_mp4toannexb -strict experimental -    profile:v main -level:v 3.0 -preset:v slow -movflags faststart -pat_period 100 \
-x264opts nal-hrd=cbr:force-cfr=1 -crf 25 -vf scale=w=640:h=360 -aspect 16:9 \
-bf 1  -sc_threshold 0 -keyint_min 2*25 -g 2*25 \
-force_key_frames "expr:gte(t,n_forced*50)" -max_muxing_queue_size 1500k \
-coder 1  -refs 2 \
-b:v 750k -minrate 750k -maxrate 750k -bufsize 1500k \
-vsync 1 -framerate 25000/1001 \
-x264opts "bitrate=750:vbv-maxrate=750:vbv-bufsize=1500"\
-pix_fmt yuv420p  -r 25 -x264opts force-cfr \
-mbs_per_slice 1 -y dest.ts

enter image description here

1 Ответ

0 голосов
/ 10 октября 2018

Если вы посмотрите на стандарт H.264, вы узнаете, что срезы типа 7 и 2 являются срезами I.Если вы встретите срез типа 7, это означает, что все остальные срезы этого изображения являются срезами I.Скорее всего, ваш I-кадр - это IDR-кадр.Если вам не нужен IDR-кадр - я бы попытался закодировать ваш H.264 как открытый GOP.Я не уверен, сколько контроля дает ffmpeg над x264, но я бы попробовал что-то вроде --open-gop.

...