Tak jak w temacie
Jak wyłączyć w FFMPEG jego własną chamską kompresje plików, która nie wynika z kodu programu. Dzieje się to na etapie łączenia plików (jako pierwsze zadanie) lub stabilizacji plików (jako pierwsze zadanie). Tracę na jakości plików poprzez zmniejszenie się nawet z 16k do 7k birate plików (w częściach) wejściowych.
Jak więc bez strat mam połączyć pliki czy dokonywać na nich stabilizacji, aby ich birate się nie zmieniał?
Dodam, że efekt nie dotyka każdego filmu - tylko większości. Nie które wychodzą z pojedynku cało i np. na wejściowe 16,2k birate mają wyjściowe 16k birate.. Co nie jest żadną widoczną stratą.
Lecz strata z 16k do 7k jest już widoczna na szczegółowości i szczególnie filmach kręconych w nocy i w złym świetle.
Załączam kod wrappera c#:
try
{
temporalny = "Megazord" + idak + ".trf";
temporalny2 = "Terazord" + idak + ".trf";
converter = new FFMpegConverter();
poEtapie1 = d + idak + "_Stab_PoEtapie1.mp4";
poEtapie2 = d + idak + "_Stab_PoEtapie2.mp4";
po2Etapie1 = d + idak + "_Stab_Po_DRUGIM_Etapie1.mp4";
po2Etapie2 = d + idak + "_Stab_Po_DRUGIM_Etapie2.mp4";
smartLog("Rownostab (plik " + s + ") wywoluje pierwszy etap - wektorowanie. Po nim bedzie nazywac sie " + poEtapie1 + " a plik jego wektorow to " + temporalny + "! ");
converter.ConvertMedia(s,
null, // autodetect by input file extension
poEtapie1,
null, // autodetect by output file extension
new NReco.VideoConverter.ConvertSettings()
{
CustomOutputArgs = " -vf vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result="+temporalny+" -f null -"
}
);
}
catch(Exception ex)
{
smartLog("Rownostab [etap 1] wysypal sie na " + ex.Message + " i stacktrace " + ex.StackTrace + " .");
return;
}
Taka sama sytuacja ma miejsce, jeżeli pierwszym zadaniem jest łączenie plików:
try
{
// juz juz juz
smartLog("Zaczynam etap Laczenie plikow.");
labelAktualneZadanie.Invoke(new Action(() =>
{
labelAktualneZadanie.Text = "Łączenie plików";
}));
string newvid = deepDir + "Polaczone.mp4";
lastOutputName = newvid;
smieci.Add(lastOutputName);
smartLog("LastOutputName = " + lastOutputName);
converter.ConcatMedia(movies, newvid, Format.mp4, set);
smartLog("Zakonczylem etap Laczenie plikow.");
}
catch (Exception ex)
{
smartLog("Etap łączenie plików - nastepil wyjatek o tresci " + ex.Message + " i stacktrace " + ex.StackTrace + " .");
Console.Write("Blad ffmpeg? " + ex.Message);
MessageBox.Show(ex.Message);
}
Pomoże ktoś?? :(((