FFmpeg tidak dapat mengonversi mov dengan kanal alfa ke webm dengan kanal alfa

1

Saya mencoba untuk mengkonversi mov dengan saluran alpha ke webm dengan saluran alpha oleh ffmpeg. Namun, yang saya dapatkan adalah video webm tanpa saluran alpha . Metode saya didasarkan pada tautan tersebut:

Kode yang saya gunakan:

ffmpeg -i input.mov -c:v libvpx-vp9 output.webm

Dan hasilnya di sini:

ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libspeex --enable-videotoolbox
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'overlap_1.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2019-01-17T08:43:07.000000Z
  Duration: 00:00:04.00, start: 0.000000, bitrate: 34346 kb/s
    Stream #0:0(eng): Video: qtrle (rle  / 0x20656C72), bgra(progressive), 1080x1080, 32249 kb/s, SAR 1:1 DAR 1:1, 24 fps, 24 tbr, 24 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2019-01-17T08:43:07.000000Z
      handler_name    : Apple Video Media Handler
      encoder         : Animation
      timecode        : 00:00:00:00
    Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2019-01-17T08:43:07.000000Z
      handler_name    : Time Code Media Handler
      timecode        : 00:00:00:00
File 'overlap_C1.webm' already exists. Overwrite ? [y/N] y
Stream mapping:
  Stream #0:0 -> #0:0 (qtrle (native) -> vp9 (libvpx-vp9))
Press [q] to stop, [?] for help
[libvpx-vp9 @ 0x7ffdb8018200] v1.7.0
Output #0, webm, to 'overlap_C1.webm':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf58.20.100
    Stream #0:0(eng): Video: vp9 (libvpx-vp9), yuva420p, 1080x1080 [SAR 1:1 DAR 1:1], q=-1--1, 200 kb/s, 24 fps, 1k tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2019-01-17T08:43:07.000000Z
      handler_name    : Apple Video Media Handler
      timecode        : 00:00:00:00
      encoder         : Lavc58.35.100 libvpx-vp9
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=   96 fps=1.6 q=0.0 Lsize=     145kB time=00:00:03.95 bitrate= 299.9kbits/s speed=0.0649x    
video:70kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 106.879829%

Menurut output, kita tahu bahwa :

  • codec video : vp9
  • format piksel : yuva420p
  • format file : webm

Itu tampak OK tetapi ketika saya mencoba untuk memutar video ini dengan IINA (pemutar video yang hebat) dan Chrome kemudian video menunjukkan warna hitam bukan saluran alpha. Tidak Ada Saluran Alpha!

Dan saya mencoba codec vp8 lalu saya mendapat efek yang sama dengan video.m saya tidak tahu apa yang terjadi pada saya. Ini adalah situasi saya :

  • sistem: macOS mojave 10.14.2
  • libvpx: aktifkan
  • xcode: terinstal

Semoga ada yang bisa memberi saya saran, terima kasih!

Albert Leung
sumber
Dan Anda telah memverifikasi bahwa video WebM / VP9 lainnya dengan saluran alpha diputar dengan baik di Chrome?
slhck
oh, saya tidak berharap untuk memverifikasi ini! Saya sudah mencoba sesuatu dan ternyata tidak masalah! Terima kasih untuk mengingatkan saya akan hal itu! Terima kasih banyak!
Albert Leung
Senang Anda menyelesaikannya!
slhck

Jawaban:

1

Saya pikir pertanyaannya sudah terpecahkan . Saya membuat kesalahan saat mengonfirmasi apakah video webm memiliki saluran alpha. Ini adalah hasil saya bermain mov dengan saluran alpha dan webm dengan saluran alpha dengan 2 perangkat lunak.

IINA (pemutar video menatap 17034 pada Github)

  • mov: latar belakang dengan kotak hitam dan putih
  • webm: latar belakang dengan warna hitam

Chrome (versi71, stabil)

  • mov: nonsupport
  • webm: latar belakang dengan warna hitam

Sejauh ini, latar belakang hitam membuat saya berpikir bahwa video webm tidak memiliki saluran alpha.

Lalu saya menemukan tampilan situs web bagaimana Chrome mendukung video webm dengan saluran alpha. Hal yang sangat menarik adalah saya dapat mengubah warna latar belakang video webm, lalu saya memeriksa kode html, mereka menggunakan CSS untuk mengontrol warna latar belakang. Bagaimana cara yang bagus untuk mengonfirmasi apakah video webm memiliki saluran alfa!

Jadi saya melakukan langkah-langkah ini untuk mengonfirmasi video webm saya:

  1. buka video webm dengan Chrome
  2. masukkan alat pengembang
  3. tambahkan kode CSS ke tag video

    style = "background-color: rgb (0,255,0)"

  4. jika video webm memiliki saluran alfa, latar belakang video akan berubah menjadi HIJAU , atau itu tidak akan terjadi apa-apa. Dan beruntung video webm saya memiliki saluran alpha!

Terima kasih, semoga ini membantu.

Albert Leung
sumber