Синхронизация ffmpeg libfdk_aac (или libfacc) и libx264
Как синхронизировать потоки libfdk_aac и libx264?
ffmpeg -i pipe_libfdk_aac.fifo -i pipe_libx264.fifo -c copy -f flv flv_stream_pipe_or_rtmp.output
Я всегда получаю один и тот же асич во всех случаях: сохранение файла в файловой системе, использование rtmp или прямой канал. Можно ли их синхронизировать?
ffmpeg version N-66924-gaba61b2 Copyright (c) 2000-2014 the FFmpeg developers
built on Jan 15 2015 12:50:29 with gcc 4.6 (GCC) 20120106 (prerelease)
configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --prefix=/data/data/info.guardianproject.ffmpeg/app_opt --enable-pic --disable-shared --enable-static --cross-prefix=/home/qwerty/work/android-ndk-r10b86/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi- --sysroot=/home/qwerty/work/android-ndk-r10b86/android-ndk-r10b/platforms/android-3/arch-arm --extra-cflags='-I/home/qwerty/x264 -I/home/qwerty/ffmpeg_build/mp3/build/include -I/home/qwerty/faac/output/include -I/home/qwerty/ffmpeg_sources/fdk-aac/build/include -I/usr/local/include/ -mfloat-abi=softfp -mfpu=neon' --extra-ldflags='-L/home/qwerty/x264 -L/home/qwerty/ffmpeg_build/mp3/build/lib -L/home/qwerty/ffmpeg_sources/fdk-aac/build/lib -L/home/qwerty/faac/output/lib -L/usr/local/lib/ -lrtmp -lpolarssl' --enable-version3 --enable-gpl --enable-nonfree --disable-doc --enable-yasm --enable-decoders --enable-encoders --enable-muxers --enable-demuxers --enable-parsers --enable-protocols --enable-filters --enable-avresample --enable-librtmp --enable-libfaac --enable-libfdk_aac --enable-libmp3lame --disable-indevs --enable-indev=lavfi --disable-outdevs --enable-hwaccels --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --enable-libx264 --enable-zlib --enable-muxer=md5
libavutil 54. 10.100 / 54. 10.100
libavcodec 56. 8.100 / 56. 8.100
libavformat 56. 9.100 / 56. 9.100
libavdevice 56. 1.100 / 56. 1.100
libavfilter 5. 1.106 / 5. 1.106
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
1 ответ
Причины рассинхронизации видео и звука
1. Частота кадров видео
Причиной десинхронизации аудио/видео всегда является частота кадров. Ничего больше. Решение — выбрать другую частоту кадров и повторить попытку. Вот как это сделать с помощью
ffmpeg -i input.mp4 -r 60 output.mp4
Для максимальной совместимости вашего видео с малоизвестными плеерами (глядя на вас, TikTok) лучше явно указать видеокодек, частоту кадров, аудиокодек и даже формат пикселей (используйте YUV420p):
ffmpeg -i input.mp4 -c:v libx265 -c:a aac -filter:v format=yuv420p -r 60 output.mp4
Я нашел все это на собственном горьком опыте, так что поверьте мне, это проверенный в боях способ кодирования видео, которое воспроизводится повсюду.