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:
- Transparansi alfa dalam video Chrome oleh Google
- Konversikan mov dengan Alpha ke VP9 Webm dengan Alpha Menggunakan ffmpeg
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!
video
ffmpeg
conversion
Albert Leung
sumber
sumber
Jawaban:
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)
Chrome (versi71, stabil)
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:
tambahkan kode CSS ke tag video
style = "background-color: rgb (0,255,0)"
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.
sumber