Bagaimana saya bisa menampilkan video transparan melalui MP4?

2

Saya memiliki video webm transparan yang saya hasilkan menggunakan versi yang sedikit dimodifikasi electron-recorderyang perlu saya overlay pada video MP4 dari smartphone. Saya sudah mencoba menggunakan overlayfilter tetapi selalu menempatkan latar belakang hitam pada hamparan alih-alih transparan. Saya yakin hamparan memiliki latar belakang transparan. Saya bisa memainkannya di halaman web dan latar belakang terlihat jelas.

Perintah apa yang saya perlukan agar ini berfungsi?

Ini adalah perintah yang saya gunakan untuk menghasilkan webmdari PNG transparan (diekstraksi dan dimodifikasi electron-recorderuntuk pengujian saya):cat *.png | ffmpeg -y -f image2pipe -r 30 -i - -c:v libvpx -pix_fmt yuva420p -metadata:s:v:0 alpha_mode="1" output.webm

Ini adalah output dari ffprobe overlay.webm:

ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-libvorbis --enable-libvpx --enable-libfaac --enable-libass --enable-ffplay --enable-libfdk-aac --enable-libopus --enable-libx265 --disable-lzma --enable-nonfree --enable-vda
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, matroska,webm, from 'overlay.webm':
  Metadata:
    encoder         : Lavf57.25.100
  Duration: 00:00:01.77, start: 0.000000, bitrate: 152 kb/s
    Stream #0:0: Video: vp8, yuv420p, 720x720, SAR 1:1 DAR 1:1, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      alpha_mode      : 1
Max Schmeling
sumber
Konfirmasikan bahwa hamparan memiliki saluran alfa. Pada halaman web, mungkin latar belakang sedang dikunci beberapa cara, atau menggunakan metode sidestream alfa yaitu video berukuran dua kali lipat dengan satu-setengah menjadi alfa. Lari ffplay in.webm -vf alphaextract. Jika Anda melihat output putih penuh atau ada kesalahan, maka tidak ada transparansi.
Gyan
Menarik. Saya mendapatkan ini: [Parsed_alphaextract_0 @ 0x7fc6afd22d20] Pesawat yang diminta tidak tersedia. [Parsed_alphaextract_0 @ 0x7fc6afd22d20] Gagal mengonfigurasikan panel input pada Parsed_alphaextract_0
Max Schmeling
Jadi, tidak ada alfa. Rekatkan pembacaan ffprobe in.webmke Q.
Gyan
Saya menempelkan output itu serta perintah yang saya gunakan untuk membuat overlay.
Max Schmeling
Ups, saya lupa FFmpeg hingga baru-baru ini tidak dapat mendekode saluran alpha di VP8, yang memang dimiliki video Anda. Anda harus meningkatkan ke versi ffmpeg lebih baru dari bulan Juli '16. Dapatkan dari sini .
Gyan

Jawaban:

3

Sampai saat ini, FFmpeg tidak dapat mendekodekan bidang alpha dalam aliran VP8 / 9 dengan alpha. Masih tidak bisa.

Tetapi jika Anda memiliki build terbaru (> 16 Juli) FFmpeg dengan libvpxkompilasi, maka Anda dapat menggunakan

ffmpeg -i base.mp4 -c:v libvpx -i overlay.webm -filter_complex overlay output.mp4
Gyan
sumber
3

Jika Anda ingin melakukan ini sekarang, Anda kemungkinan akan membutuhkan jawaban yang diterima dengan sedikit modifikasi -vp9pada libvpx:

ffmpeg -i base.mp4 -c:v libvpx-vp9 -i overlay.webm -filter_complex overlay output.mp4
nmu
sumber