Некоторое время пытался сделать это правильно, задаваясь вопросом, сталкивался ли кто-нибудь с чем-то подобным раньше.

Я пытаюсь объединить папку с несколькими видеоклипами, некоторые со звуком, некоторые без и с фотографиями, которые были преобразованы в 10-секундное видео.

К клипам, в которых нет звука и преобразованных фотографий, добавлена тихая дорожка mp3. (Это также добавляется в клипы со звуком)

Эта проблема возникает, когда присутствует одна из конвертированных фотографий или видеоклипов без звука, и звук начинает очень медленно синхронизироваться, поскольку вы замечаете только то, что кто-то говорит.

Проблема также возникает с папкой, содержащей только видеоклипы со звуком, если для видеоклипов со звуком также не добавлена беззвучная дорожка.

Что странно, так это то, что при воспроизведении выходного видео и звука происходит несинхронизация, если вы переходите к тому месту, где оно впервые вышло из синхронизации, оно само исправляется, но затем снова не синхронизируется, если воспроизводится с самого начала.

FFMPEG VERSION INFO:

ffmpeg version 3.3.4-1~16.04.york0 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil      55. 58.100 / 55. 58.100
libavcodec     57. 89.100 / 57. 89.100
libavformat    57. 71.100 / 57. 71.100
libavdevice    57.  6.100 / 57.  6.100
libavfilter     6. 82.100 /  6. 82.100
libavresample   3.  5.  0 /  3.  5.  0
libswscale      4.  6.100 /  4.  6.100
libswresample   2.  7.100 /  2.  7.100
libpostproc    54.  5.100 / 54.  5.100

Вот полный скрипт, который я использую ниже:

cd videoClips

for i in $(ls);do
    if [[ $i =~ .*\.zip ]];then
     echo "ZIP"

     y=${i%.*}
     echo $y

     mkdir tmp_$y
     unzip $i -d tmp_$y

     cd tmp_$y

     for i in $(ls);do
        if [[ $i =~ .*\.jpg$ ]];then
            ffmpeg -loop 1 -i $i -c:v libx264 -c:a aac -vf scale=1280:-2 -r 30 -t 10 -pix_fmt yuv420p $i.mp4
            #Add Silent Audio Track
            ffmpeg -i $i.mp4 -i ../SilentAudio.mp3 -vcodec copy -shortest $i.AUDIO.mp4
            #Remove files
            rm -rf $i.mp4
            rm -rf $i
        fi
    done

    #Add check 
    for F in *.mp4 ; do
        echo "CHECK -> $F"
        result=`ffprobe -i $F -show_streams 2>&1 | grep 'Stream #0:1'`
        echo "$result"
        #if [[ $result =~ .*aac$ ]];then
    if [[ $result == *"aac"* ]];then
            echo "AUDIO FOUND"
            ffmpeg -i $F -i ../SilentAudio.mp3 -vcodec copy -shortest $F.FIN.mp4
            rm -rf $F
        else
            #echo "AUDIO NOT FOUND"
            ffmpeg -i $F -i ../SilentAudio.mp3 -vcodec copy -shortest $F.FIN.mp4
            rm -rf $F
        fi
    done

    for F in *.mp4 ; do
        ffmpeg -i $F -c copy -bsf:v h264_mp4toannexb -f mpegts $(echo $F | perl -pe 's/mp4$/ts/g');
     done
    ffmpeg -i "concat:$(ls -1v *.ts | perl -0pe 's/\n/|/g;s/\|$//g')" -qscale 0 -c copy -bsf:a aac_adtstoasc $y.mp4
    cd ../
 fi
done    

У меня есть ощущение, что это может быть связано с аудио битрейтом? Или возможные метки времени. Также попытался добавить apad, но это, похоже, усугубило проблему синхронизации.

0