FFMPEG: Фиксирование частоты кадров с фильтром фильма filter_complex - PullRequest
0 голосов
/ 04 мая 2018

С некоторой помощью @Gyan я придумал следующую команду FFMPEG, которая передает 4 видео одновременно на 4 отдельные конечные точки RTMP, бесконечно зацикливая видео и поддерживая синхронизацию аудио и видео:

ffmpeg \
    -filter_complex \
        "movie=01.mp4:loop=0[v1];[v1]setpts=N/FRAME_RATE/TB[v1];
         amovie=01.mp4:loop=0[a1];[a1]asetpts=N/SR/TB[a1];
         movie=02.mp4:loop=0[v2];[v2]setpts=N/FRAME_RATE/TB[v2];
         amovie=02.mp4:loop=0[a2];[a2]asetpts=N/SR/TB[a2];
         movie=03.mp4:loop=0[v3];[v3]setpts=N/FRAME_RATE/TB[v3];
         amovie=03.mp4:loop=0[a3];[a3]asetpts=N/SR/TB[a3];
         movie=04.mp4:loop=0[v4];[v4]setpts=N/FRAME_RATE/TB[v4];
         amovie=04.mp4:loop=0[a4];[a4]asetpts=N/SR/TB[a4]" \
    -map "[v1]" -map "[a1]" \
        -c:a libfdk_aac \
        -c:v libx264 -preset ultrafast \
        -b:v 500k -b:a 32k \
        -f flv rtmp://output/01 \
    -map "[v2]" -map "[a2]" \
        -c:a libfdk_aac \
        -c:v libx264 -preset ultrafast \
        -b:v 500k -b:a 32k \
        -f flv rtmp://output/02 \
    -map "[v3]" -map "[a3]" \
        -c:a libfdk_aac \
        -c:v libx264 -preset ultrafast \
        -b:v 500k -b:a 32k \
        -f flv rtmp://output/03 \
    -map "[v4]" -map "[a4]" \
        -c:a libfdk_aac \
        -c:v libx264 -preset ultrafast \
        -b:v 500k -b:a 32k \
        -f flv rtmp://output/04

Это почти идеально, за исключением того, что оно удваивает мою частоту кадров:

frame=20822 fps= 46 q=32.0 q=34.0 q=29.0 q=32.0 size=   57617kB time=00:14:28.39 bitrate= 543.5kbits/s speed=1.92x

Обратите внимание на бит speed=1.92x. Это также приводит к тому, что прямой эфир воспроизводится с удвоенной скоростью.

(исходное видео было приблизительно 24 кадра в секунду)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...