2

У меня есть длинный файл звуков OGG, который я хочу поместить на YouTube, у меня нет видео, поэтому я хочу показать один JPG на протяжении всего времени OGG. Я видел:

 avconv -i "sound file.ogg" -i cog.jpg out.avi

Я настроил JPG 640 x 480, но получаю следующие предупреждения:

 Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'

 Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
 [ac3 @ 0x18ae340] invalid bit rate

И это взрывает:

 Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height

Любые идеи о том, какие параметры я мог бы использовать, чтобы сделать эту работу?

1 ответ1

6

Не видя полного вывода командной строки, это сводится к угадыванию, но, похоже, avconv выбирает здесь кодер AC3 для аудио, что не является полезным значением по умолчанию.

Попробуйте указать кодировщики, которые вы хотите использовать. Для YouTube рекомендуется использовать H.264 и AAC вместо видео MPEG-4 Part 2 и аудио AC3.

avconv -loop 1 -i cog.jpg -i "sound file.ogg" \
-c:v libx264 -tune stillimage -pix_fmt yuv420p \
-c:a libfaac -q:a 100 \
-shortest \
out.mp4

Вы должны добавить -loop 1 чтобы принудительно зациклить изображение, и опцию -shortest чтобы остановить кодирование, когда больше нет звука. Вместо -shortest вы также можете указать -t 00:02:30 для остановки через 2:30 минуты, что будет точнее, чем -shortest .

Вышеуказанное должно работать с любыми последними версиями. Обратите внимание, что avconv не из FFmpeg, а из разветвления Libav и, следовательно, совершенно не связан с командой ffmpeg .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .