Menší úprava části videa bez nutnosti překódování

=>
  string(1602) "Modelová situace: mám hotový  mp4/mkv()např hevc,h264) soubor s videem (tedy zdrojové klipy nemám , ani verzi v vyšším rozlišení) o délce 4800 sec a chci v části 3020-3030s  přepsat jiným videem (například aktualizace inforgrafiky), část 3230-3240 uplně smazat a na pozici 2720 vložit jiný 20sec klip

Jde to udělat tak,anichž by celé 4800s muselo procházet/ecodovat celé?

Tím myslím něco na způsob ffmpeg -c copy.

Jde to udělat na úrovni kodeku  nebo kontejneru? a který kontejner to umí? Napadá mě mkv, umí nějak slepit /navinout části klipů nebo nejdebože do jedné timeline vložit víc videí(tím by dotaz odpadl skoro) , pokud i tohle,musí mít stejné rozlišení fps, kodek? Nebo i stejné parametry enkodéru

Pokud je potřeba znát parametry enko´déru, dají se kompletně zjistit z mkv  a z mp4? Co znám,tak mkv obashuje nějaká metadata kde jsou argumenty x264, ale umíto i mp4? Jdou pak parametry enkodéru nějak rekonstruovat?


Pokud ano, je k tomu potřeba znát třeba parametry příkazové řádky ffmpeg,x26*?

Pozn: toleruje se nepřesnost kvůli klíčovým snímkům nebo GOP.(že to bude třeba useklé dřív nebo to část nahrazená později, jde o proof of koncept - dá se řešit že nahrazující klipy by obsahovaly i orig.video v reálu) Vím že někdy může dojít k časové nepřesnosti: buď při zrychleném seeku a nebo při  vytváření odvozeného klipu( úsek 3-8s z 20sec klipu)  a ještě v případě podmínky zakázaní re-encodování.(ta zde v dotazu  platí taky)

« Poslední změna: 18. 03. 2023, 05:59:56 od Petr Krčmář »


Re:Menší úprava části videosouboru bez nutnosti encodingu celého"
« Odpověď #1 kdy: 17. 03. 2023, 22:58:20 »
Já bych tu část co se má editovat přes AVIDEMUX vystříhnul v místě keyframeů. Následně to video upravil a pak zase přes AVIDEMUX složil ...

e3k

  • ***
  • 236
    • Zobrazit profil
    • E-mail
Re:Menší úprava části videa bez nutnosti překódování
« Odpověď #2 kdy: 18. 03. 2023, 09:57:27 »
toto som riesil cez ffmpeg. da sa to ale treba sa pri strihani trafit do iframu. podstatny je argument -ss ktory definuje zaciatok:
   
Kód: [Vybrat]
ffmpeg -ss 00:01:13 -i jazz.mp4 -to 00:05:39 -vcodec copy -acodec copy jazzff.mp4
na zistenie I-Framov som si spravil davno script:
Kód: [Vybrat]
#!/bin/bash
#getiframes.sh displays the timestamps of I-frames in a video file.
#can be used with the -ss option of ffmpeg
#Usage: ./getiframes.sh <video_file_name>

ffprobe -show_frames $1|grep -B 14 pict_type=I|grep pkt_pts_time=|awk -F'=' '{print $2}'|xargs -I{} date -d@"{}" -u +%H:%M:%S.%N