FFmpeg DeckLink Windows


0

Windows için decklink'i destekleyen en son statik ffmpeg yapısını indirdim.
Denedim ne zaman aşağıdaki komutu yürütün:

ffmpeg -y -i RTMPsource -s 720x576 -r 25000/1000 -pix_fmt uyvy422 -f decklink 'Decklink Video Yakalama'

Aşağıdaki hatayı aldım:

[NULL @ 0000000000d46e00] İstenen çıkış formatı 'decklink' uygun bir çıkış formatı değil

Belgelerde gördüğüm gibi : "Bu giriş aygıtını etkinleştirmek için ... Windows'da, IDL dosyalarını widl aracılığıyla çalıştırmanız gerekir"
Birisi lütfen bunun ne anlama geldiğini açıklayabilir: "IDL dosyalarını widl aracılığıyla çalıştırmanız gerekir" ve nasıl Bunu yapmak için?


@Anaksunaman İlk bağlantınızdaki cevap OP'nin zaten bildiği şeyi söylüyor. - Ivan, komut satırı çıktınızın tamamını gösterebilir misiniz lütfen?
slhck

OP'lerin sorusuna ilgili bağlantılar ve açıklamalarla güncellenmiş yanıt sağlandı.
Anaksunaman

Yanıtlar:


3

Belgelerde gördüğüm gibi: "Bu giriş aygıtını etkinleştirmek için ... Windows'ta IDL dosyalarını widl aracılığıyla çalıştırmanız gerekir". Birisi lütfen ne anlama geldiğini açıklayabilir: "IDL dosyalarını widl aracılığıyla çalıştırmanız gerekir" ve bunun nasıl yapılacağı?

Kısa cevap

Senin durumunda böyle bir şey yapmana gerek yok. Bu, DeckLink desteğiyle sıfırdan FFmpeg oluşturma sürecindeki bir adıma atıfta bulunmaktadır (bu, bağlantı kurduğunuz ikili dosyayı oluştururken sizin için yapıldı).

Sorun giderme

[NULL @ XXXXXXXXXXXXXXXX] Requested output format 'XYZ' is not a suitable output format genellikle FFmpeg komutunuzda yanlış bir şeyler olduğunu gösteren genel bir hatadır (yani "yanlış" seçenekleri veya seçeneklerin birleşimini belirttiniz).

Bu, muhtemelen farklı bir problemin olduğunu söyledi . Bağlanacağınız derlemenin --enable-decklink seçeneğini (listelendiği gibi) desteklemesi gerektiği gerçeğine rağmen, DeckLink desteğinin gerektirdiği başka bir seçenek ( --disable-w32threads ) eksik (en azından yamalar olmadan). Bu seçeneği destekleyen en son yapı görünüşte 10 Aralık 2016 yapımıydı ( ffmpeg-20161210-edb4f5d ).

Ne yazık ki, bu yapı artık kolay erişilebilir görünmüyor. Bir sonraki en iyi seçenek , eski Zeranoe 32-bit ve 64-bit derleme dizinlerinden hala mevcut olan v3.2 yapılarını (örneğin ffmpeg-3.2-win64-static.zip ) denemek olacaktır .

Not: Konfigürasyon seçenekleri (hangi FFmpeg seçeneğiyle oluşturulmuş) konfigürasyon başlığında listelenmiştir, komut satırına "ffmpeg" yazmanız yeterlidir.


Uzun cevap

Bir Arabirim Tanım Dili (IDL) şunun için bir yoldur:

[...] bir arayüzü, dilden bağımsız bir şekilde tanımlayarak, bir dili paylaşmayan yazılım bileşenleri arasında iletişimi sağlar.

Bu durumda, Black Magic Design ( DeckLink yakalama kartları serisini üreten ), DeckLink destekli FFmpeg oluştururken kullanılması gereken, görünüşe göre gerekli olan bir takım IDL dosyalarına sahip bir Yazılım Geliştirme Kiti (SDK) sunar.

IDL dosyaları çeşitli durumlarda kullanılabildiğinden, belirli bir araç zincirinde diğer uygulamalarla birlikte kullanılabilecek dosyalar oluşturmak için bir IDL derleyicisinden çalıştırılması gerekir. WIDL olan Şarap yerine kullanılabilecek Arayüz Tanımlama Dili derleyici, MIDL (Arabirim tanımı dili derleyici). widl, MinGW- w64 ile birlikte gelir ve Linux'ta kullanılabilir olduğundan, bunun en azından önerilen nedenlerin bir parçası olduğundan şüpheleniyorum.

Widl'in kullanım örneklerini bulamadığım halde (yukarıda bağlantı verilen man sayfasından başka), bu eski Zeranoe forum mesajı , midl'nin gerekli IDL dosyalarını örneğin wl'ye benzer şekilde işlemek için kullanılabileceğini öne sürüyor:

midl /h DeckLinkAPI.h DeckLinkAPI.idl

burada / h, midl için başlık anahtarıdır (karşılaştırılabilir anahtar, widl'de -h'dir). Sonuçta ortaya çıkan dosyalar daha sonra --extra-cflagsve --extra-ldflagsseçenekleriyle birlikte kullanılır .

Not: Bu çok daha yeni yazı , DeckLinkAPI.h, DeckLinkAPI_i.c ve DeckLinkAPIVersion.h (sonuncusu SDK'ya dönüşüm olmadan dahil edilmiştir) kullanımını gösterir. Bunların sadece gerekli dosyalar olup olmadığı benim için net değil. Gönderi aynı zamanda yukarıda belirtildiği gibi "--disable-w32threads" ile binaya atıfta bulunuyor.


Mükemmel cevap için teşekkür ederim! Lütfen şu soruyu da görebilir misiniz: superuser.com/questions/1260874/…
Ivan Kolesnikov

2

Decklink destekli ffmpeg dağıtılamaz, bu yüzden kendin yapman gerekir. Birkaç git veri havuzu sayesinde Windows 10'da yapmak zor değil (biri ffmpeg diğeri de decklink api dosyaları ve bash betiği için). [ Https://ianmorrish.wordpress.com/2019/04/02/ffmpeg-with-decklink-support-for-windows/] adresinde ekran görüntüleri içeren talimatlar gönderdim ancak aşağıdaki temel adımları ekledik:

  1. Linux isteğe bağlı bileşen için Windows Alt Sistemini etkinleştirme (Denetim masası, Programlar ve Özellikler, Windows özelliklerini aç veya kapat.)
  2. Windows Mağazası uygulamasına gidin ve Ubuntu'yu arayın ve yükleyin.
  3. Ubuntu'yu Windows komutundan başlatın, aşağıdaki komutları yazın (bazıları uzun zaman alacaktır)
  4. sudo apt-get update
  5. sudo apt-get yüklemek subversion ragel kıvırmak texinfo g ++ bison flex cvs yasm automake libtool autoconf gcc cmake git yapmak pkg-config zlib1g-dev mercurial unzip pax nasm gperf autogen bzip2 autoconf-4 arşiv p7zip-full python3
  6. mkdir ffmpeg
  7. cd ffmpeg
  8. git klonu https://github.com/rdp/ffmpeg-windows-build-helpers.git
  9. cd ffmpeg-windows-build-helpers
  10. sudo ./cross_compile_ffmpeg.sh –disable-nonfree = n
  11. Çok uzun bir süre (saat) bekleyin ve iyi bir sonuç elde ederseniz, dosyaları nerede bulacağınızla ilgili mesajlar olacak.
  12. cd / sandbox / cross_compilers / mingw-w64-x86_64 / x86_64-w64-mingw32 /
  13. cp bin / * / mnt / c / ffmpeg /

Şimdi dosyaları Windows Gezgini'nde c: \ ffmpeg altında görmelisiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.