Skocz do zawartości

FFMPEG kodowanie MTS do ProRes


Najrad
 Udostępnij

Rekomendowane odpowiedzi

Czy ktoś wie jak przekodować jednym poleceniem kilkanaście plików MTS ( AVCHD z kamery) do Prores-a za pomocą FFMpega? Radzę sobie z pojedynczym plikiem, ale nie mam pojęcia jak zmusić program do konwersji wszystkich plików w danym katalogu. Programu używam od trzech dni, zainteresowałem się nim ze względu na bardzo dobrą konwersję 50i do 50p. Będę wdzięczny za wszelkie sugestie

Odnośnik do komentarza
Udostępnij na innych stronach

@314TeR

Polecenie które mogę wpisać w terminalu. Program ma służyć do konwersji MTS 50i na ProRes 50p. Jak wspominałem robi to rewelacyjnie. Używam polecenia:

 

/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/00023.MTS -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/0023.mov

 

które powoduje, że klip 00023.MTS ( 50i) znajdujący się na dysku MACMEDIA w folderze "avchd" jest konwertowany do Proresa 50p lekko wyostrzany, oraz delikatnie odszumiany i zapisany na tym samym dysku w folderze "proRes" jako 0023.mov ( 50p Prores422). Chciałbym móc to samo zrobić ze wszystkimi plikami MTS które znajdują się we wspomnianym folderze i za pomocą jednego polecenia zrobić to grupowo. Szukam, ale nie mogę znaleźć nic do OSX. Nie jestem zaawansowanym użytkownikiem FFMPEG - w zasadzie zainstalowałem 3 dni temu, właśnie ze względu na jakość konwersji.

@pablo1975

Chodzi o jakość konwersji. Zwykłe przekodowanie dam radę zrobić Compressor-em

Odnośnik do komentarza
Udostępnij na innych stronach

Nie możesz porównać jakości z Compressora do MPEG StremClipa :) po prostu spróbuj oba podane programy są free. Oba napisane są na bazie FFMpeg'a.

z FFMPega ( bo o niego chodzi) mam bitrate o 1/3 wyższy. Używam MPEGStreamClipa do kodowania innych rzeczy :)

Poza tym MPEGStreamClip wczytuje MTS-y wyświetla alert, ale wczytuje i zapisuje. Niestety jak wczytam większą ilość klipów to przy eksporcie je łączy. Pewnie gdzieś jest jakaś opcja, która mi umknęła. 

Odnośnik do komentarza
Udostępnij na innych stronach

OK. sprawdziłem. StreamClip zdecydowanie gorzej wykonuje zamianę 50i na 50p. Klip jest niepłynny - podobny do 25p w odbiorze - podczas gdy po konwersji FFMPEG-iem mam wrażenie jakby to było kręcone 50p. Pliki będą importowane do FCPX - słusznie domniemywasz. Poza tym mam już workflow do grupowej konwersji z zamianą 50i na 50p w Compressorze ( droplet) niemniej parametry z FFMPEG mnie więcej niż zadowalają. Compressor sam w sobie za szybki nie jest, a jak dołożę mu jeszcze lekki unsharp i odszumianie to... zostaje FFMPEG. Mam też inną opcję... MTSMerger do połączenia w całość wszystkich MTS-ów i tak stworzony klip do FFMPEG-a. Niestety dostanę na wyjściu jeden plik, a lepiej pracuje mi się na wielu klipach niż jednym klocu.

Odnośnik do komentarza
Udostępnij na innych stronach

 

Zrób taki plik skryptu:

 

#!/bin/bash
for x in *.MTS
do
/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/$x -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/$x.mov
done

Działa, ale nie do końca. Jak w folderze "avchd" jest jeden plik to wszystko przebiega jak należy, ale jak są dwa, to dostaje pytanie czy nadpisać plik:

iMac-Najrad:~ najrad$ for x in *.MTS
> do
> /usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/$x -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/$x.mov
> done
ffmpeg version N-78305-gb3b0ece Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.0.2 (clang-700.1.81)
  configuration: --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
  libavutil      55. 17.100 / 55. 17.100
  libavcodec     57. 24.101 / 57. 24.101
  libavformat    57. 24.100 / 57. 24.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 28.100 /  6. 28.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mpegts, from '/Volumes/MACMEDIA/avchd/00001.MTS':
  Duration: 00:00:16.22, start: 0.888889, bitrate: 40045 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
File '/Volumes/MACMEDIA/avchd/00002.MTS' already exists. Overwrite ? [y/N] 

po potwierdzeniu "y" kodowany i przenoszony jest tylko pierwszy plik :

Output #0, mpegts, to '/Volumes/MACMEDIA/avchd/00002.MTS':
  Metadata:
    encoder         : Lavf57.24.100
    Stream #0:0: Video: mpeg2video (Main), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc
    Metadata:
      encoder         : Lavc57.24.101 mpeg2video
    Side data:
      unknown side data type 10 (24 bytes)
    Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
    Metadata:
      encoder         : Lavc57.24.101 mp2
Output #1, mov, to '/Volumes/MACMEDIA/proRes/*.MTS.mov':
  Metadata:
    encoder         : Lavf57.24.100
    Stream #1:0: Video: prores (apcn / 0x6E637061), yuv422p10le, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 50 fps, 12800 tbn, 50 tbc
    Metadata:
      encoder         : Lavc57.24.101 prores
    Stream #1:1: Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
      encoder         : Lavc57.24.101 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
  Stream #0:1 -> #0:1 (ac3 (native) -> mp2 (native))
  Stream #0:0 -> #1:0 (h264 (native) -> prores (native))
  Stream #0:1 -> #1:1 (ac3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
frame=    9 fps=0.0 q=12.5 q=-0.0 size=     312kB time=00:00:00.57 bitrate=4438.frame=   18 fps= 16 q=31.0 q=-0.0 size=     385kB time=00:00:00.92 bitrate=3398.frame=   27 fps= 16 q=31.0 q=-0.0 size=     461kB time=00:00:01.28 bitrate=2949.frame=   36 fps= 16 q=31.0 q=-0.0 size=     489kB time=00:00:01.66 bitrate=2406.frame=   45 fps= 16 q=31.0 q=-0.0 size=     562kB time=00:00:02.01 bitrate=2284.frame=   54 fps= 16 q=31.0 q=-0.0 size=     634kB time=00:00:02.36 bitrate=2193.frame=   62 fps= 16 q=24.8 q=-0.0 size=     831kB time=00:00:02.65 bitrate=2564.frame=   70 fps= 16 q=31.0 q=-0.0 size=     986kB time=00:00:03.00 bitrate=2686.frame=   78 fps= 16 q=31.0 q=-0.0 size=    1146kB time=00:00:03.32 bitrate=2821.frame=   87 fps= 16 q=31.0 q=-0.0 size=    1314kB time=00:00:03.68 bitrate=2924.frame=   95 fps= 16 q=31.0 q=-0.0 size=    1417kB time=00:00:03.96 bitrate=2925.frame=  103 fps= 16 q=31.0 q=-0.0 size=    1556kB time=00:00:04.35 bitrate=2928.frame=  111 fps= 16 q=31.0 q=-0.0 size=    1691kB time=00:00:04.64 bitrate=2985.frame=  119 fps= 16 q=31.0 q=-0.0 size=    1786kB time=00:00:04.92 bitrate=2969.frame=  127 fps= 16 q=31.0 q=-0.0 size=    1939kB time=00:00:05.31 bitrate=2990.frame=  135 fps= 16 q=31.0 q=-0.0 size=    2094kB time=00:00:05.60 bitrate=3063.frame=  143 fps= 16 q=31.0 q=-0.0 size=    2220kB time=00:00:05.88 bitrate=3089.frame=  151 fps= 16 q=31.0 q=-0.0 size=    2423kB time=00:00:06.27 bitrate=3165.frame=  159 fps= 16 q=31.0 q=-0.0 size=    2586kB time=00:00:06.56 bitrate=3229.frame=  167 fps= 16 q=31.0 q=-0.0 size=    2643kB time=00:00:06.84 bitrate=3161.frame=  175 fps= 16 q=31.0 q=-0.0 size=    2716kB time=00:00:07.23 bitrate=3077.frame=  184 fps= 16 q=31.0 q=-0.0 size=    2788kB time=00:00:07.58 bitrate=3011.frame=  192 fps= 16 q=31.0 q=-0.0 size=    2812kB time=00:00:07.90 bitrate=2915.frame=  201 fps= 16 q=31.0 q=-0.0 size=    2894kB time=00:00:08.25 bitrate=2871.frame=  209 fps= 16 q=31.0 q=-0.0 size=    3019kB time=00:00:08.54 bitrate=2894.frame=  217 fps= 16 q=31.0 q=-0.0 size=    3157kB time=00:00:08.89 bitrate=2907.frame=  225 fps= 16 q=31.0 q=-0.0 size=    3330kB time=00:00:09.21 bitrate=2959.frame=  233 fps= 16 q=31.0 q=-0.0 size=    3508kB time=00:00:09.50 bitrate=3024.frame=  241 fps= 16 q=31.0 q=-0.0 size=    3607kB time=00:00:09.85 bitrate=2998.frame=  249 fps= 16 q=31.0 q=-0.0 size=    3746kB time=00:00:10.17 bitrate=3016.frame=  258 fps= 16 q=31.0 q=-0.0 size=    3880kB time=00:00:10.52 bitrate=3018.frame=  265 fps= 16 q=31.0 q=-0.0 size=    3970kB time=00:00:10.81 bitrate=3007.frame=  274 fps= 16 q=31.0 q=-0.0 size=    4140kB time=00:00:11.16 bitrate=3037.frame=  282 fps= 16 q=31.0 q=-0.0 size=    4269kB time=00:00:11.48 bitrate=3044.frame=  291 fps= 16 q=31.0 q=-0.0 size=    4354kB time=00:00:11.84 bitrate=3012.frame=  299 fps= 16 q=31.0 q=-0.0 size=    4397kB time=00:00:12.12 bitrate=2969.frame=  307 fps= 16 q=31.0 q=-0.0 size=    4545kB time=00:00:12.51 bitrate=2976.frame=  315 fps= 16 q=31.0 q=-0.0 size=    4724kB time=00:00:12.80 bitrate=3023.frame=  323 fps= 16 q=31.0 q=-0.0 size=    4872kB time=00:00:13.08 bitrate=3049.frame=  331 fps= 16 q=31.0 q=-0.0 size=    5091kB time=00:00:13.47 bitrate=3095.frame=  339 fps= 16 q=31.0 q=-0.0 size=    5319kB time=00:00:13.76 bitrate=3166.frame=  347 fps= 16 q=31.0 q=-0.0 size=    5503kB time=00:00:14.04 bitrate=3208.frame=  355 fps= 16 q=31.0 q=-0.0 size=    5711kB time=00:00:14.43 bitrate=3241.frame=  363 fps= 16 q=31.0 q=-0.0 size=    5932kB time=00:00:14.78 bitrate=3286.frame=  372 fps= 16 q=31.0 q=-0.0 size=    6187kB time=00:00:15.10 bitrate=3355.frame=  380 fps= 16 q=31.0 q=-0.0 size=    6390kB time=00:00:15.39 bitrate=3400.frame=  389 fps= 16 q=31.0 q=-0.0 size=    6581kB time=00:00:15.74 bitrate=3424.frame=  397 fps= 16 q=31.0 q=-0.0 size=    6655kB time=00:00:16.09 bitrate=3386.frame=  405 fps= 16 q=31.0 q=-0.0 size=    6727kB time=00:00:16.22 bitrate=3396.frame=  405 fps= 16 q=31.0 Lq=-0.0 size=    6736kB time=00:00:16.22 bitrate=3401.2kbits/s speed=0.636x    
video:587678kB audio:3802kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Odnośnik do komentarza
Udostępnij na innych stronach

Po zatwierdzeniu polecenia "y" dochodzi do nadpisania pliku 00002 w folderze "avchd" plikiem 00001 i to z dużą kompresją, tak że tracę bezpowrotnie   plik 00002.

Przy większej ilości plików w folderze "avchd" pierwszy jest kodowany do prores i przenoszony do folderu "proRes" z nazwą "*.MTS.mov" a reszta plików jest nadpisywana plikiem pierwszym i dodatkowo kodowana do MTS ze sporą kompresją ( z pliku ok 40megabajtów zostaje utworzony plik ok 7megabajtów z rozszerzeniem MTS)

 

 

-------------------

mogę zrobić takiego kloca:

#!/bin/bash
/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/00001.MTS -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/0001.mov
#!/bin/bash
/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/00002.MTS -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/0002.mov

i tak dalej powielając polecenie aż do pliku np nr 200 ( więcej na karcie i tak nigdy nie miałem niż 160 plików). na trzech testowych plikach działa, niemniej na pewno jest jakaś pojedyncza poprawna komenda :(

Odnośnik do komentarza
Udostępnij na innych stronach

OK. sprawdziłem. StreamClip zdecydowanie gorzej wykonuje zamianę 50i na 50p. Klip jest niepłynny - podobny do 25p w odbiorze - podczas gdy po konwersji FFMPEG-iem mam wrażenie jakby to było kręcone 50p. Pliki będą importowane do FCPX - słusznie domniemywasz. Poza tym mam już workflow do grupowej konwersji z zamianą 50i na 50p w Compressorze ( droplet) niemniej parametry z FFMPEG mnie więcej niż zadowalają. Compressor sam w sobie za szybki nie jest, a jak dołożę mu jeszcze lekki unsharp i odszumianie to... zostaje FFMPEG. Mam też inną opcję... MTSMerger do połączenia w całość wszystkich MTS-ów i tak stworzony klip do FFMPEG-a. Niestety dostanę na wyjściu jeden plik, a lepiej pracuje mi się na wielu klipach niż jednym klocu.

Chcesz konwerować bo myslisz że nie da sie bez konwersji zaiportować mpeg do FCP

Odnośnik do komentarza
Udostępnij na innych stronach

Trochę się nie rozumiemy. Nie potrzebuję "takiego sobie" 50p , bo z tym poradzi sobie przyzwoicie i FCPX - sposobem o którym wspominasz - i Compressor i AdobeMediaEncoder i pewnie kilka jeszcze innych programów. Potrzebuję najlepszego z możliwych 50p, a jak na razie te z FFMPEG są najlepsze ( subiektywna opinia). Jak do tego skryptu wrzucę materiał 50p to wynikowy klip wychodzi 100 klatek/sek :) Czy jest coś złego w tym, że chcę używać tego softu? Poza tym żeby wciągnąć MTS do FCPX nie trzeba już niczego konwertować i zmieniać rozszerzeń. Od wersji 10.2 -bodajże - pliki mts są obsługiwane bez potrzeby konwersji.

Odnośnik do komentarza
Udostępnij na innych stronach

Trzeba by poprawić składnie podstawiania zmiennych $x z *.MTS... 
 
Bez jakiego materiału testowego nie jestem więcej w stanie wymyślić w głowie... 
 
Ewentualnie zrób inaczej... Wszystkie pliki w folderze IN z skryptem, a wyjście ustaw do folderu OUT. Wtedy nic nigdzie nie powinno nadpisywać. 
 

#!/bin/bash
for x in *
do
/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/IN/$x -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/OUT/$x
done
Odnośnik do komentarza
Udostępnij na innych stronach

Spróbuję. A jest coś złego w tym klocku który wymyśliłem:

#!/bin/bash
/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/00001.MTS -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/0001.mov
#!/bin/bash
/usr/local/bin/ffmpeg -i /Volumes/MACMEDIA/avchd/00002.MTS -vf "yadif=1:0 , unsharp=5:5:1.0:5:5:0.0 , hqdn3d=4.0:3.0:6.0:4.5" -acodec pcm_s16le -vcodec prores -profile:v 2 /Volumes/MACMEDIA/proRes/0002.mov

i tak aż do pliku 00200 ? Bo nie wiem czy dłubać dalej :) Powieliłem to polecenie na razie 10 razy , zmieniając oczywiście w kolejnych wpisach numerację plików i działa jak trzeba. Edytuję materiały z 3 kamer i każda z nich zapisuje na karcie klipy o takiej samej numeracji, więc klocek jest dla mnie uniwersalny

Odnośnik do komentarza
Udostępnij na innych stronach

 

 

Jakość obrazu jest bardzo dobra i ponieważ mamy taką ciekawą sytuację, że obraz został zarejestrowany pierwotnie w 50i - to podczas konwersji do 50p zachodzi cyfrowy proces odwrócenia tego co pierwotnie było kompresją optyczną. Ponieważ skanowanie z przeplotem w AVCHD zapisało nam 50 obrazów ale z co druga linią nastąpiła jakby pierwotna kompresja "optyczna" o połowę a następnie koder w kamerze z tego co zostało zrobił strumień danych z bitrate 24Mbps. Mieliśmy więc jakby dwustopniowa kompresję danych o obrazie. Jeśli teraz odwracamy ten proces wraca do nas informacja którą ja czysto subiektywnie (na zasadzie porównawczej) oceniam jako zapis z kamery z bitrate 35-40Mbps przy pełnym 50p. Oczywiście jest to nieco oszukane 50p bo wszystko to co w tym strumieniu danych jest powyżej progu zapisu 24Mbps zostało jakby "zgadnięte" przez algorytm Yadif, ale zgadywanie jest na tyle proste i skuteczne że ludzkie oko tego nie zauważy. Okazuje się więc że chcąc mieć pełne 50p nie koniecznie musimy wysyłać na złom stare, ale dobre kamery które maja tylko 50i

To cytat z gościa, który spowodował, że tak uparcie zinteresowałem się właśnie FFMPG, pomimo iż posiadam na stanie Compressor, MpegStreamClip, Handbrake, a także dostęp do AdobeM.Encoder.

Odnośnik do komentarza
Udostępnij na innych stronach

18 Euro nie jest jakąś szaloną kwotą której nie można by wydać... Pytanie czy ten iFFmpeg potrafi zrobić to co chcesz. 

 

W sumie to i mnie mocno zainteresowaliście, bo mam kilkaset GB starych nagrań jeszcze z kamery DV, a to jest właśnie 50i. Mógłbym to zrzucić do jakiegoś bardziej zjadliwego formatu aby pozbyć się przeplotu, bo faktem jest że do jakiego programu tego materiału nie wrzucałem to widać było usuwanie mniej lub bardziej udolne przeplotu. 

Odnośnik do komentarza
Udostępnij na innych stronach

Nie mam pojęcia - zaraz "wezmę" wersję TRY. W moim przypadku kluczowe było ustawienie Yadif 1:0 bo na samym 1 błędnie interpretował klatkę dominującą w shakowanym GH2. Powiem tylko, że z ciekawości wrzuciłem do tego skryptu plik 720p i dostałem fajny klip 720p 100kl/sek. Efekt slowmotion znacznie lepszy niż robiony FCPX+opticalflow, więc generalnie warto było :) Co chciałbyś osiągnąć docelowo z materiału DV ? 

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie
 Udostępnij

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystanie z tej witryny, wymaga zakceptowanie naszych warunków Warunki użytkowania.