FFMPEG Podział MP4 o tej samej jakości

51

Mam jeden duży plik MP4. Próbuję podzielić go na mniejsze pliki.

ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4

Myślałem, że użycie -sameq zachowałoby te same ustawienia jakości. Nie mogę jednak zrozumieć, co to robi.

Chcę zachować tę samą jakość (audio / wideo) i kompresję przy dzielonych plikach. Jednak to ustawienie powoduje, że podzielone pliki są znacznie większe.

Jakie flagi należy ustawić, aby zachować tę samą jakość i atrybuty w podzielonych plikach, zachowując ten sam stosunek jakości do rozmiaru?

Na przykład, jeśli mój oryginalny plik ma około 12 GB i 1920 x 1080 z przepływnością 10617 kb / s oraz szybkością klatek 23 klatek / s i 6-kanałowym dźwiękiem przy 317 kb / s, chciałbym, aby podzielone pliki były takie same tylko w jednej trzeciej tego rozmiaru ( jeśli podzielę to na trzy części).

Chris Weber
źródło
3
Informacja dla każdego, kto to czyta: Nie używaj -sameq, to nie oznacza „tej samej jakości” .
Zaz

Odpowiedzi:

81

Jeśli chcesz po prostu podzielić wideo bez ponownego kodowania, użyj copykodeka do audio i wideo. Spróbuj tego:

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4

Zauważ, że tworzy to tylko pierwszy podział. Następnego można dokonać za pomocą polecenia rozpoczynającego się od ffmpeg -ss 00:50:00.

Można to zrobić za pomocą jednego polecenia:

ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 -ss 00:50:00 -c copy smallfile2.mp4

Spowoduje to utworzenie pliku smallfile1.mp4, kończącego się po 50 minutach w filmie largefile.mp4 i smallfile2.mp4, zaczynającego się za 50 minut i kończącego się na końcu dużego pliku.mp4.

fideli
źródło
2
Korzystając z tej metody w pliku MP4, pierwsze dwie sekundy każdego utworzonego pliku otrzymuję jako zamrożoną ramkę (dźwięk odtwarzany normalnie). Jakiś znany powód tego?
Ron Harlev,
Brzmi jak błąd. Zaktualizuj do najnowszej wersji ffmpeg.
Robert
@Robert Aktualizowałem wiele razy od 2010 roku. Dzięki.
fideli
@RonHarlev To jest obecnie oczekiwane zachowanie. Bez ponownego kodowania możesz wycinać filmy tylko w „klatkach kluczowych”. Ramki pomiędzy kluczowymi ramkami same w sobie nie zawierają wystarczającej ilości informacji, aby zbudować pełny obraz. Zobacz: trac.ffmpeg.org/wiki/Seeking#Seekingwhiledoingacodeccopy
Philip Thrasher
3

Alternatywny sposób z tym jest:

// create a 2-min clip
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4

/**
* -i  input file
* -ss start time in seconds or in hh:mm:ss
* -to end time in seconds or in hh:mm:ss
* -c codec to use 
*/

Jakość pliku pozostaje taka sama, ponieważ używamy -c copydo kopiowania oryginalnych strumieni audio + wideo na wyjście.

Odsyłacz, lista najczęściej używanych poleceń FFmpeg: DigitalFortress

Niket Pathak
źródło