Форматы файлов экрана записи ffmpeg - PullRequest
0 голосов
/ 31 марта 2020

Добрый день, я сейчас пишу bash скрипт, который записывает экран при определенных условиях. Проблема в том, что только avi работает как расширение файла для записи экрана. Этот сценарий будет использоваться на Raspberry Pi, и в настоящее время я получаю на приличной виртуальной машине всего 10-20 кадров в секунду (цель будет около 30 кадров в секунду). Я думаю .avi не подходит для моего проекта. Но .mpeg и .mp4 не работают для записи. Я попытался записать с помощью .avi, а затем преобразовать его в .mp4, но у меня ограниченная память и слишком большой размер .avi. В настоящее время я использую следующую команду:

ffmpeg -f x11grab -y -r 30 -s 960x750 -i :0.0+0,100 -vcodec huffyuv ./Videos/out_$now.avi
//$now is the current date and time

Поэтому я хотел бы знать, нужны ли мне какие-то специальные пакеты из ffmpeg для записи, например, .mp4, или есть ли другие форматы файлов, доступные для записи экрана ffmpeg.

Редактировать: Я обнаружил, что код c libx264 для mp4 работает, но частота кадров падает до тех пор, пока они не достигнут 5 кадров в секунду, что, безусловно, слишком мало. Записанное видео выглядело как быстрая версия записанного экрана.

С mpeg4 для mpeg я достиг более 30 кадров в секунду, но качество видео было очень плохим.

Кажется, что даже мой большой AVI-файлы выглядят так, как будто они воспроизводятся быстро. Есть ли что-то, что я делаю неправильно?

Есть ли хороший средний способ, где я получаю отличное качество видео, хороший fps (20+) и файл, который не слишком большой?

Редактировать 2: я попытался записать его с .avi и преобразовать его потом. Простое преобразование с ffmpeg -i test.avi -c:a aac -b:a 128k -c:v libx264 -crf 23 output.mp4 привело к таким же кадрам кадров, как если бы я записывал с .mp4. Но когда я вырезал небольшой фрагмент начала видео и назвал выходной файл .mp4, размер стал намного меньше. Но когда я начал обрезку в 0:00:00 (поэтому попытался просто преобразовать), он просто изменил формат файла, не преобразовывая его (таким образом, размер остался прежним). Есть идеи?

...