Mam 1 obraz (jpg) i 1 plik audio (MP3) i chciałbym wydrukować to jako plik wideo (na przykład AVI).
Czy ktoś wie, jak użyć FFMPEG, aby dołączyć do tych dwóch? Chciałbym pokazać obraz na czas trwania dźwięku.
Jakieś pomysły?
Mam 1 obraz (jpg) i 1 plik audio (MP3) i chciałbym wydrukować to jako plik wideo (na przykład AVI).
Czy ktoś wie, jak użyć FFMPEG, aby dołączyć do tych dwóch? Chciałbym pokazać obraz na czas trwania dźwięku.
Jakieś pomysły?
Odpowiedzi:
Jeśli korzystasz z systemu Windows, możesz to zrobić również w programie Windows Movie Maker ... jeśli potrzebujesz instrukcji, zostaw komentarz
W przypadku FFmpeg użyj tego
ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30
-b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
vframes 14490 to liczba ramek, które należy zapętlić, aby uzyskać ciągły obraz dla całego pliku audio.mp3
Np .: przez 8 minut i 3 sekundy ((8m x 60s + 3s) x 30 fps = 14490 vf)
Zasoby stąd
Jest o wiele prostszy sposób niż sugerowany tutaj, który nie wymaga obliczania liczby ramek ani wprowadzania długości poszczególnych plików (szczególnie lepiej w przypadku przetwarzania wsadowego). W najnowszej wersji ffmpeg możesz użyć -shortest
opcji, która przestaje kodować, gdy kończy się najkrótszy strumień - w tym przypadku input.mp3 (ponieważ obraz zapętla się na zawsze, ma nieskończoną długość):
ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4
Używa 2 klatek na sekundę dla obrazu / wideo, co powinno być w porządku, ale możesz ustawić bardziej standardową 25, jeśli chcesz.
subanki prawie miały rację. Działający wiersz poleceń wygląda następująco;
ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
zastępuj pliki wyjściowe bez monitowania
Opcja „-loop_input” jest przestarzała, należy użyć opcji -loop 1. Zobacz dokumentację ffmpeg .
pliki wejściowe
Klatki na sekundę
Można również wyrazić jako: -r 30000/1001, co daje fps 29,97nnn
szybkość transmisji wideo; im wyższa liczba, tym lepsza jakość i większy rozmiar pliku.
Jak wyjaśniono powyżej; weź całkowity czas pliku audio w sekundach (np. 00:02:41 (2 minuty 41 sekund) to 161 całkowitych sekund (2 x 60) + 41). Następnie pomnóż całkowitą liczbę sekund przez liczbę klatek na sekundę określoną przez -r (np. 161 x 30 = 4830).
-vframe można zastąpić przez -t 161 (-t czas trwania zapisu lub transkodowania „czas trwania” sekund audio / wideo)
Użyj właściwego kodeka audio dla typu tworzonego pliku. W przypadku .mp4 powinien to być format AAC. Kodek libvo_aacenc był poprawnym kodekiem dla mojego systemu Windows 7.
szybkość transmisji dźwięku
To jest nazwa pliku wyjściowego. Może to być dowolna legalna nazwa pliku dla twojego systemu. Rozszerzenie pomoże ffmpeg określić właściwy kodek wideo, jeśli nie określisz go za pomocą -vcodec.
Ten prosty skrypt bash / cygwin, który AUTOMATYCZNIE koduje wszystkie pliki z rozszerzeniem $ AUDIO w katalogu do pliku wideo MP4 10FPS w katalogu z osadzonym obrazem folder.jpg,
przydatne do przesyłania na YouTube;)
AUDIO=m4a;
$'\n'; for a in `ls -1 *.$AUDIO `; do ffmpeg -i $a &2> $a.info ; done;
cat '' > do.sh
IFS=$'\n';
for a in `ls -1 *.$AUDIO`; do D=`grep Duration $a.info | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1 | head -n1 `; S=$(( $( echo $D | cut -d':' -f2 ) * 60 + 1 + ` echo $D | cut -d':' -f3 ` )) ; echo ffmpeg -loop_input -vframes $(( $S * 10 )) -i folder.jpg -i \"$a\" -y -r 10 -b 2500k -ab 384k -vcodec mpeg4 \"$a.mp4\" >> do.sh; done;
split -l5 do.sh
xa* &
Pobierz VirtualDub , a następnie wykonaj następujące czynności:
Otwórz obraz tak, jakbyś otworzył normalny plik wideo.
Obliczyć czas trwania dźwięku w sekundach i zaokrąglić w górę do najbliższej pełnej sekundy (np. 78,34 sek. To 79 sekund). Od tej chwili ta wartość nosi nazwę x.
Przejdź do „wideo> liczba klatek na sekundę” wybierz „zmień na liczbę klatek na sekundę (fps)” i wpisz „1 / x” jako wartość. Dodatkowo, jeśli chcesz mieć normalną liczbę klatek na sekundę w wynikowym pliku, np. 25 fps, wybierz „Konwertuj na fps” i wprowadź tam żądaną liczbę klatek na sekundę.
Wybierz „wideo> kompresja” i wybierz swój ulubiony smak. Może być konieczne dostosowanie rozmiaru obrazu za pomocą filtra zmiany rozmiaru.
Przejdź do „audio> audio z innego pliku” i tam wybierz swój dźwięk. W razie potrzeby wybierz kompresję dźwięku.
Zapisz plik.
Źródło: stephanV