Jedynie informacje, które podałeś, są tym, co mogę wymyślić.
Chodźmy na kawałki:
Ponieważ do wideo dodano tylko jeden obraz. Zastanawiam się, czy istnieje sposób na zmniejszenie rozmiaru wideo, np. Wymuszanie szybkości transmisji / sekundę = 1 zamiast 28?
Ponieważ jest to nieruchomy obraz, nie trzeba go zmieniać. po prostu nie ruszaj się.
Mówisz o klatkach na sekundę (fps), a nie bitrate. I masz rację w koncepcji. Beign tylko jedno zdjęcie 1 fps nie byłoby problemem.
Czy to rozsądny rozmiar dla MP4? Czy rozmiar obrazu ma duże znaczenie?
W tym przypadku rozmiar obrazu nie miałby znaczącej wagi, ponieważ mamy do czynienia tylko z jednym zdjęciem. Jeśli był to film wysokiej jakości, to jest inny problem.
Czy powinienem zmienić rozmiar jpg na 1080 * 720 i wprowadzić dodatkowe ustawienia w ffmpeg, aby wyświetlać jako 720p (jakie jest wtedy ustawienie ffmpeg :)?
Rozdzielczość, o której mówisz, to 1280x720.
Nie widzę sensu w -loop 1
opcji tutaj, to tylko spowolni proces. Czy użyłeś, -shortest
ponieważ plik ma więcej niż 1 strumień wejściowy? Jeśli nie, to nie ma powodu, aby z niego korzystać. Ponieważ używałeś -acodec copy
, będę musiał założyć, że nie chcesz go ponownie kodować.
W przypadku wyjścia 720p 1 kl./s bez ponownego kodowania i bez dotykania szybkości transmisji:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Zaznacz przypadek, że ma więcej niż jeden strumień wejściowy i chcesz, aby ffmpeg zakończył kodowanie w najkrótszym strumieniu:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Teraz, jeśli musisz zmienić bitrate (powiedzmy 1024k jako przykład);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Zobacz: Ogranicz wyjściową przepływność
-c: kopia = Skopiuj wejściowy strumień audio, abyśmy nie kodowali ponownie.
-b: v = Szybkość transmisji określona jako (nie do końca) stała.
-bufsize = Jest to przedział, w którym obliczana jest średnia przepływność. Oznacza to obraz o najniższej jakości stratności, ale dokładniejszy przepływność zgodnie z parametrami -b: v .
-s = Rzeczywisty rozmiar wyjścia wideo.
-framerate = Liczba klatek na sekundę, którą chcemy, aby dane wyjściowe wykorzystywały.
Pamiętaj, że jeśli nadal chcesz mieć mniejszy rozmiar wideo, będziesz musiał poświęcić jakość, aby to osiągnąć. Inne sposoby na to polegają na ponownym kodowaniu z kompresją stratną.
Z tego, co mówisz, informacje, które podajesz i co próbujesz zrobić, wydaje mi się, że Twoim celem jest osadzenie okładki albumu w formacie mp3. Jeśli taki jest twój cel, lepiej spełni twoje wymagania:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
-map_metadata = Specyfikator metadanych ffmpeg do pliku wyjściowego z infile. W tym przypadku ( zero ) globalne metadane.
-mapa 0 = Strumień wejściowy 1 (audio).
-mapa 1 = Strumień wejściowy 2 (obraz).
Jeśli nic nie odpowiada Twoim żądaniom, podaj więcej informacji.