Загрузка ffmpeg и Youtube - не удается объединить существующую звуковую дорожку с внешней - PullRequest
2 голосов
/ 25 октября 2011

Я реализую кампанию, где идея заключается в том, что пользователи создают телевизионную рекламу. Процесс выглядит следующим образом:

  • Пользователь смотрит рекламу (видео на YouTube)
  • Пользователь выбирает видео (файл mp4, воспроизводимый во Flash Player)
  • Пользователь записывает свой собственный голос, используя веб-камеру / микрофон для выбранного видео
  • Голос пользователя загружен на сервер
  • Голос пользователя объединяется с выбранным видео (видео + музыка) и сохраняется в виде файла mp4
  • Видео пользователя загружено на YouTube

При реализации слияния аудио-видео я обнаружил некоторые сюрпризы:

Когда я использовал команду

ffmpeg -i sourceVideoFile.mp4 -i sourceAudioFile.mp3 -acodec copy -vcodec copy outputFile.mp4 - музыка видео заменена голосом пользователя.

Итак, я использовал опцию -newaudio :

ffmpeg -i sourceVideoFile.mp4 -i sourceAudioFile.mp3 -acodec copy -vcodec copy outputFile.mp4 -newaudio - я слышу, что выводимое видео имеет как музыку, так и голос пользователя. Итак - вот чего я хотел достичь. Но ...

Сюрприз в том, что если я загружаю это видео на Youtube, после его обработки я могу смотреть его и слышать только музыку. Голос пользователя исчезает!

Итак, как сохранить голос и музыку?

Есть идеи, гуру? :)

1 Ответ

0 голосов
/ 09 апреля 2012

Это было весело.

# Get audio files
ffmpeg -i SVF.mp4 SVF.wav
ffmpeg -i SAF.mp3 SAF.wav

# Merge audio streams
ffmpeg -i SVF.mp4 -f lavfi -i "
amovie=SVF.wav [a0];
amovie=SAF.wav [a1];
[a0][a1] amerge, pan=2:c0=c0+c2:c1=c1+c3" \
-map v -map 1 -c:v copy -c:a libvo_aacenc OF.mp4
...