ffmpeg resize "не удалось найти параметры кодека"

6

Я новичок в ubuntu и нуждаюсь в вашей помощи: (32bit ubuntu 12.10) моя команда:

ffmpeg -i ../output_images/particles%04d.png -r 30 -b 30000k final_movie.avi

работает для моих 800x800 * .png изображений правильно, но это не с 512x512 * .png. Там я получаю следующее сообщение:

[image2 @ 0x938a100] Could not find codec parameters (Video: png, 512x512)

На кампусных машинах он работает как с одинаковым кодом. Я попытался сделать команду resize:

for p in *.tga; do convert -resize 800x800 $p $p; done

С этим добавлением он работает, но у меня есть и 800x800-фильм в конце.

Я уже установил следующие пакеты:

Перенасыщение:

sudo apt-get install freeglut3-dev

FFmpeg:

sudo apt-get install ffmpeg

Ошибка «curl command not found». Я исправил его с помощью

sudo apt-get install curl

Была другая команда «convert: command not found», и я исправил ее с помощью

sudo apt-get install imagemagick

Любая идея, что не хватает?

    
задан Andy 11.03.2013 в 20:09
источник

2 ответа

6

Обманчивая ситуация

Прежде всего, так называемый «ffmpeg» из репозитория Ubuntu на самом деле не ffmpeg из проекта FFmpeg, а фальшивая версия из вилки. Это запутанная ситуация. См:

Во-вторых, этот поддельный «ffmpeg» (и avconv) ужасно глючит. Разработка FFmpeg очень активна, и использование последней версии реального ffmpeg, скорее всего, решит эту проблему.

Получение реального ffmpeg

У вас есть несколько вариантов:

  • Компилировать ffmpeg на Ubuntu - настраиваемый, дает самый последний код, но вы должны скомпилировать (не так сложно и не должны занимать слишком много времени). Неинтрузивный для системы.
  • Использовать статическую сборку - проще всего использовать, но не настраивать; также неинтрузивный.
  • Используйте FFmpeg PPA от Jon Severinsson - легко включить и установить, но старые, а не настраиваемые

У каждого есть свои преимущества и недостатки, как описано выше.

Использование статической сборки

Вам просто нужно загрузить архив, извлечь его и выполнить двоичный файл. Не требуется компиляция или установка:

wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.2013-06-19.tar.gz
tar xzvf ffmpeg.static.32bit.2013-03-19.tar.gz

Теперь вы можете использовать его. Вы можете перейти в каталог, содержащий ffmpeg , и запустить (обратите внимание на предыдущий ./ ):

./ffmpeg -i input ... output

... или укажите полный путь к нему, как в:

/home/andy/ffmpeg/ffmpeg -i input ... output

Выберите $PATH

Если вам нужна реальная ffmpeg всякий раз, когда вы используете команду ffmpeg , не используя ./ или не предоставляя полный путь к двоичному файлу, поместите двоичный файл ffmpeg в папку bin в вашем доме:

mkdir ~/bin
mv ffmpeg ~/bin
hash -r

Теперь вы можете просто запустить ffmpeg , и вы будете готовы кодировать материал. Если вы хотите использовать другой каталог, отличный от ~/bin , вам нужно будет добавить каталог в ваш $PATH , как показано в Как добавить каталог на мой путь?

Проверка шпионов

Теперь использование команды ffmpeg должно показать что-то вроде (обратите внимание на фразу «FFmpeg developers»):

$ ffmpeg 
ffmpeg version N-54152-g730e07f Copyright (c) 2000-2013 the FFmpeg developers

Если он показывает следующее, вы узнаете, что вы прокляты, а фальшивая версия все еще используется (обратите внимание на фразу «Libav developers»):

$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
    
ответ дан LordNeckbeard 19.03.2013 в 21:15
источник
0

Что мне помогло - изменить формат преобразования изображения с png на jpeg. Итак, makemovie.sh должно выглядеть так:

#!/bin/bash
cd output_images
for F in $(ls *.tga); 
do 
    convert -quality 100 $F ${F%.tga}.jpg; 
    #convert -quality 100 $F ${F%.tga}.png;
    rm $F;
    echo done with converting $F; 
done
cd ..

THISPATH=$(pwd)
export PATH=$PATH:${THISPATH}/ffmpeg/ffmpeg-install/bin/

echo Making the movie now...

cd final_movie
rm final_movie.avi
ffmpeg -i ../output_images/particles%04d.jpg -r 30 -b 30000k final_movie.avi
cd ..
    
ответ дан Florian 13.03.2013 в 16:01