Jak przekonwertować wideo za pomocą ffmpeg na format DNxHD / DNxHR?

12

Postępuję zgodnie z samouczkiem dotyczącym pracy z cinelerra-cv, na samym początku powiedziano, że pierwszym krokiem w pracy z cinelerra jest konwersja dowolnego klipu wideo do formatu dnxhd. Po prostu powiedziano, a nie wyjaśniono, jak to zrobić.

Po kilku badaniach natknąłem się na ffmpeg, ale nie mam pojęcia, jak go używać w odniesieniu do dnxhd, przy niewielkiej wiedzy, którą zgromadziłem na temat ffmpeg, zgaduję, jak to zrobić:

ffmpeg -i <video-clip> -vcodec dnxhd <video-clip-in-dnxhd>

jednak to nie działa, a przykłady, które widziałem przy konwersji do dnxhd z ffmpeg, nie rozumiem, wydawały się za każdym razem, mając różne tagi bez wyjaśnienia, dlaczego ich używać.

rekin
źródło
1
deb-indus.org/tuto/ffmpeg-howto.htm#Encoding_VC-3 sugerowałbyffmpeg -i <input_file> -vcodec dnxhd -b <bitrate> -an output.mov
Rinzwind
dzięki, widziałem to już wcześniej i pomyślałem: Czy muszę określać szybkość transmisji i czy nie musi ona mieć dźwięku (-an)? .... mam na myśli, czy można pracować tylko w cinelerra z wideoklipami dnxhd, które nie mają dźwięku?
sharkant
1
-b <int> : Set video bitrate in bit/s ( default = 200k ).zakładam, że musisz dodać bitrate, ponieważ 200k nie jest prawidłową opcją. Ale -an
spadłbym
czy szybkość transmisji zależy od pliku źródłowego lub pliku, na który chce się przekonwertować? .... mam na myśli, jeśli spróbuję użyć 200, czy to zadziała?
rekin
Nie. Musisz określić szybkość transmisji dla tego konkretnego kodera.
llogan 21.04.17

Odpowiedzi:

18

Jest to wybredny enkoder, więc musisz wybrać odpowiednie parametry, w tym:

  • częstotliwość wyświetlania klatek
  • format pikseli / przestrzeń kolorów
  • szerokość x wysokość / rozdzielczość / rozmiar ramki
  • bitrate

Zobacz prawidłowe parametry DNxHD poniżej, aby uzyskać zaakceptowane wartości.


Przykład DNxHD

Ten przykład zostanie skalowany do 1280 x 720, wybierz częstotliwość odświeżania 30000/1001 (aka „29,97”) i format pikselowy YUV 4: 2: 2 płaski.

ffmpeg -i input -c:v dnxhd -vf "scale=1280:720,fps=30000/1001,format=yuv422p" -b:v 110M -c:a pcm_s16le output.mov
  • Jeśli plik wejściowy jest już zgodny z niektórymi zaakceptowanymi parametrami, nie musisz ich ręcznie deklarować.

  • Pojemnikiem formatu wyjściowego dla DNxHD jest zazwyczaj MXF lub MOV.


Przykład DNxHR

DNxHR jest przeznaczony dla rozdzielczości większych niż 1080p, takich jak 2K, 4K i 8K.

Jeśli chcesz DNxHR, dodaj -profile:vopcję wyjścia, na przykład -profile:v dnxhr_hq.

Akceptowane są następujące wartości: dnxhd, dnxhr_444, dnxhr_hqx, dnxhr_hq, dnxhr_sq, dnxhr_lb.

  • DNxHR LB: dnxhr_lb- Niska przepustowość. 8-bit 4: 2: 2 ( yuv422p). Jakość offline.
  • DNxHR SQ: dnxhr_sq- Standardowa jakość. 8-bit 4: 2: 2 ( yuv422p). Nadaje się do formatu dostawy.
  • DNxHR HQ: dnxhr_hq- Wysoka jakość. 8-bit 4: 2: 2 ( yuv422p).
  • DNxHR HQX: dnxhr_hqx- Wysoka jakość. 10-bit 4: 2: 2 ( yuv422p10le). Dostawa w jakości UHD / 4K.
  • DNxHR 444: dnxhr_444- Jakość wykończenia. 10-bit 4: 4: 4 ( yuv444p10le). Dostawa w jakości kinowej.

Powyższa lista została zaadaptowana z kodeka DNxHR .


Prawidłowe parametry DNxHD

ffmpeg zakończy się niepowodzeniem, jeśli podasz niepoprawne wartości, ale może dostarczyć listę akceptowanych wartości.

Możesz wyświetlić listę za pomocą następującego polecenia „manekina”:

ffmpeg -f lavfi -i testsrc2 -c:v dnxhd -f null -

Ważne uwagi na temat liczby klatek na sekundę

  • Brakuje liczby klatek na liście generowanej z tego polecenia. ffmpegślepo zaakceptuje dowolną liczbę klatek na sekundę dla tego kodera, a oprogramowanie Avid podobno je zaakceptuje (niepotwierdzone), ale przepływność DNxHD powinna być dopasowana tylko do określonych częstotliwości klatek. Aby uzyskać maksymalną kompatybilność, zalecałem stosowanie tylko właściwej kombinacji szybkości transmisji / liczby klatek. Więc użyj powyższego polecenia, aby uzyskać prawidłowe bitrate i formaty pikseli akceptowane przez ffmpeg, i odnieś się do Listy Avid rozdzielczości DNxHD lub Białej księgi DNxHD (strona 9), aby uzyskać właściwe częstotliwości klatek.

  • Częstości klatek wymienione w powyższych linkach wykorzystują niedokładne zaokrąglone przybliżenia. Odpowiednie wartości są wymienione poniżej; skrócona nazwa znajduje się po lewej stronie, a właściwa wartość po prawej stronie.

    • 29,97 = 30000/1001 (lub użyj aliasu ntsc)
    • 59,94 = 60000/1001
    • 23,967 = 24000/1001 (lub użyj aliasu ntsc-film)

Więcej opcji

Aby uzyskać dodatkowe opcje specyficzne dla kodera i listę obsługiwanych formatów pikseli, patrz:

ffmpeg -h encoder=dnxhd

Błędy

ff_frame_thread_encoder_init failed
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

Oznacza to, że liczba klatek na sekundę, szerokość, wysokość, format pikseli i / lub szybkość transmisji są nieprawidłowe. Patrz prawidłowe parametry DNxHD powyżej dla akceptowanych wartości.

pixel format is incompatible with DNxHD profile

Wybierz odpowiedni format pikseli za pomocą filtra formatu . Zobacz przykład DNxHD powyżej.

Llogan
źródło