У меня есть 30 изображений JPEG (.jpg) с разрешением 480 x 640.
Каждое изображение занимает около 20 КБ (все они занимают около 600 КБ).
Я использую команду FFmpeg для кодирования этих изображений в видео в формате H264.
Мне это нужно, чтобы сделать очень быстро — около 1 секунды.
С помощью классической команды:
ffmpeg -y -f image2 -r 1/5 -i image_%d.jpg -c:v libx264 -r 30 video.mp4
занимает около 90 секунд.
После добавления -preset ultrafast:
ffmpeg -y -f image2 -r 1/5 -i image_%d.jpg -c:v libx264 -preset ultrafast -r 30 video.mp4
кодирование занимает около 15 секунд, что намного лучше, но все же недостаточно
Я пробовал и другие параметры, например:
-profile:v baseline
-qscale:v
-b:v 1000k
-crf 24
но время кодирования не падает ниже 10 секунд.
Я не знаком ни с командами FFmpeg, ни с параметрами, которые мне нужно использовать, и именно по этой причине я публикую здесь этот вопрос.
Качество видео должно быть нормальным, не обязательно должно быть идеальным.
В качестве примечания: я запускаю эти команды в Приложение для Android, в котором у меня есть исполняемый файл ffmpeg с использованием ProcessBuilder.
Ответ1 (Роберту Раунтри):
ArrayList l2 = new ArrayList();
//l2.add("ffmpeg");
l2.add("/data/data/" + packageName + "/ffmpeg");
l2.add("-y");
l2.add("-loop");
l2.add("1");
l2.add("-i");
l2.add("frame_%d.jpg");
// l2.add("-t");
// l2.add(strngs[3]);
l2.add("-r");
l2.add("1/2");
l2.add("-preset");
l2.add("superfast");
l2.add("-tune");
l2.add("zerolatency");
// l2.add("-pass");
// l2.add(Integer.valueOf(pass).toString());
l2.add("-vcodec");
l2.add("libx264");
l2.add("-b:v");
l2.add("200k");
l2.add("-bt");
l2.add("50k");
l2.add("-threads");
l2.add("0");
l2.add("-b_strategy");
l2.add("1");
// if(pass ==1){
// l2.add("-an");
// } else {
// l2.add("-acodec");
// l2.add("copy");
// }
l2.add("-f");
l2.add("mp4");
l2.add("-strict");
l2.add("-2");
// l2.add("-passlogfile");
// l2.add(strngs[4]);
// if(pass ==1){
// l2.add("/dev/null");
// } else {
// l2.add(strngs[5]);
// }
l2.add("video.mp4");
//return l2;
Подробнее здесь: https://stackoverflow.com/questions/171 ... s-to-video
Как очень быстро кодировать изображения JPEG в H264 (преобразовать изображения в видео) ⇐ Android
Форум для тех, кто программирует под Android
1771837670
Anonymous
У меня есть 30 изображений JPEG (.jpg) с разрешением 480 x 640.
Каждое изображение занимает около 20 КБ (все они занимают около 600 КБ).
Я использую команду [b]FFmpeg[/b] для кодирования этих изображений в видео в формате [b]H264[/b].
Мне это нужно, чтобы сделать очень быстро — около 1 секунды.
С помощью классической команды:
ffmpeg -y -f image2 -r 1/5 -i image_%d.jpg -c:v libx264 -r 30 video.mp4
занимает около [b]90 секунд[/b].
После добавления -preset ultrafast:
ffmpeg -y -f image2 -r 1/5 -i image_%d.jpg -c:v libx264 -preset ultrafast -r 30 video.mp4
кодирование занимает около [b]15 секунд[/b], что намного лучше, но все же недостаточно
Я пробовал и другие параметры, например:
-profile:v baseline
-qscale:v
-b:v 1000k
-crf 24
но время кодирования не падает ниже 10 секунд.
Я не знаком ни с командами FFmpeg, ни с параметрами, которые мне нужно использовать, и именно по этой причине я публикую здесь этот вопрос.
Качество видео должно быть нормальным, не обязательно должно быть идеальным.
В качестве примечания: я запускаю эти команды в Приложение для Android, в котором у меня есть исполняемый файл ffmpeg с использованием ProcessBuilder.
Ответ1 (Роберту Раунтри):
ArrayList l2 = new ArrayList();
//l2.add("ffmpeg");
l2.add("/data/data/" + packageName + "/ffmpeg");
l2.add("-y");
l2.add("-loop");
l2.add("1");
l2.add("-i");
l2.add("frame_%d.jpg");
// l2.add("-t");
// l2.add(strngs[3]);
l2.add("-r");
l2.add("1/2");
l2.add("-preset");
l2.add("superfast");
l2.add("-tune");
l2.add("zerolatency");
// l2.add("-pass");
// l2.add(Integer.valueOf(pass).toString());
l2.add("-vcodec");
l2.add("libx264");
l2.add("-b:v");
l2.add("200k");
l2.add("-bt");
l2.add("50k");
l2.add("-threads");
l2.add("0");
l2.add("-b_strategy");
l2.add("1");
// if(pass ==1){
// l2.add("-an");
// } else {
// l2.add("-acodec");
// l2.add("copy");
// }
l2.add("-f");
l2.add("mp4");
l2.add("-strict");
l2.add("-2");
// l2.add("-passlogfile");
// l2.add(strngs[4]);
// if(pass ==1){
// l2.add("/dev/null");
// } else {
// l2.add(strngs[5]);
// }
l2.add("video.mp4");
//return l2;
Подробнее здесь: [url]https://stackoverflow.com/questions/17117721/how-to-encode-jpeg-images-to-h264-very-fast-transform-images-to-video[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия