Hi,
I'm trying to decode a vp8 encoded video with alpha channel. I clone ffmpeg
from git and configured with the following options:
./configure --prefix="${HOME}/ffmpeg_build_git" --pkg-config-flags=--static
--extra-cflags=-I"${HOME}/ffmpeg_build_git/include"
--extra-ldflags=-L"${HOME}/ffmpeg_build_git/lib"
--bindir="${HOME}/ffmpeg_build_git/bin" --enable-gpl --enable-yasm
--enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx
--enable-nonfree --disable-doc --enable-vaapi --enable-vda --enable-vdpau
--enable-decoder=h264_vdpau --enable-hardcoded-tables
--enable-hwaccel=h264_vaapi --enable-hwaccel=h264_vdpau --enable-libx264
After that I run the command:
./ffmpeg -i ~/Desktop/png/filmato_01_alfa.png -c:v libvpx -pix_fmt yuva420p
-metadata:s:v:0 alpha_mode="1" output.webm
to encode a vp8 video, I obtain the following output:
ffmpeg version N-81641-ga50ca6b Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --prefix=/home/qmax/ffmpeg_build_git
--pkg-config-flags=--static
--extra-cflags=-I/home/qmax/ffmpeg_build_git/include
--extra-ldflags=-L/home/qmax/ffmpeg_build_git/lib
--bindir=/home/qmax/ffmpeg_build_git/bin --enable-gpl --enable-yasm
--enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx
--enable-nonfree --disable-doc --enable-vaapi --enable-vda --enable-vdpau
--enable-decoder=h264_vdpau --enable-hardcoded-tables
--enable-hwaccel=h264_vaapi --enable-hwaccel=h264_vdpau --enable-libx264
libavutil 55. 29.100 / 55. 29.100
libavcodec 57. 55.101 / 57. 55.101
libavformat 57. 48.103 / 57. 48.103
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 62.100 / 6. 62.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Input #0, png_pipe, from '/home/qmax/Desktop/png/filmato_01_alfa.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgba(pc), 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25
tbn, 25 tbc
[libvpx @ 0x2d2ace0] v1.3.0
[webm @ 0x2d29080] Using AVStream.codec to pass codec parameters to muxers is
deprecated, use AVStream.codecpar instead.
Output #0, webm, to 'output.webm':
Metadata:
encoder : Lavf57.48.103
Stream #0:0: Video: vp8 (libvpx), yuva420p, 1280x720 [SAR 1:1 DAR 16:9],
q=-1--1, 200 kb/s, 25 fps, 1k tbn, 25 tbc
Metadata:
alpha_mode : 1
encoder : Lavc57.55.101 libvpx
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> vp8 (libvpx))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=0.0 Lsize= 69kB time=00:00:00.00
bitrate=562384.0kbits/s speed=0.00144x
video:34kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: 101.311569%
I would use ffmpeg to decode this video when i run:
~/ffmpeg_build_git/bin/ffmpeg -i ./output.webm -f null - -benchmark
ffmpeg version N-81641-ga50ca6b Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --prefix=/home/qmax/ffmpeg_build_git
--pkg-config-flags=--static
--extra-cflags=-I/home/qmax/ffmpeg_build_git/include
--extra-ldflags=-L/home/qmax/ffmpeg_build_git/lib
--bindir=/home/qmax/ffmpeg_build_git/bin --enable-gpl --enable-yasm
--enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx
--enable-nonfree --disable-doc --enable-vaapi --enable-vda --enable-vdpau
--enable-decoder=h264_vdpau --enable-hardcoded-tables
--enable-hwaccel=h264_vaapi --enable-hwaccel=h264_vdpau --enable-libx264
libavutil 55. 29.100 / 55. 29.100
libavcodec 57. 55.101 / 57. 55.101
libavformat 57. 48.103 / 57. 48.103
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 62.100 / 6. 62.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Input #0, matroska,webm, from './output.webm':
Metadata:
encoder : Lavf57.48.103
Duration: 00:00:00.04, start: 0.000000, bitrate: 14059 kb/s
Stream #0:0: Video: vp8, yuv420p, 1280x720, SAR 1:1 DAR 16:9, 25 fps, 25
tbr, 1k tbn, 1k tbc (default)
Metadata:
alpha_mode : 1
[null @ 0x27019e0] Using AVStream.codec to pass codec parameters to muxers is
deprecated, use AVStream.codecpar instead.
Output #0, null, to 'pipe:':
Metadata:
encoder : Lavf57.48.103
Stream #0:0: Video: wrapped_avframe, yuv420p, 1280x720 [SAR 1:1 DAR 16:9],
q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc (default)
Metadata:
alpha_mode : 1
encoder : Lavc57.55.101 wrapped_avframe
Stream mapping:
Stream #0:0 -> #0:0 (vp8 (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed= 5.8x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: unknown
bench: utime=0.004s
bench: maxrss=18300kB
The input stream has yuv420p pixel format rather than yuva420p.
By analyzing the source code in libavcodec/libvpxdec.c in the function
vpx_decode there is a reference to the alpha channel that is set in:
planes[3] =
ctx->has_alpha_channel ? img_alpha->planes[VPX_PLANE_Y] : NULL;
linesizes[3] =
ctx->has_alpha_channel ? img_alpha->stride[VPX_PLANE_Y] : 0;
________________________________
Le informazioni contenute in questo messaggio e negli eventuali allegati sono
confidenziali e ad uso esclusivo del destinatario indicato. Qualora non fossero
a Lei destinati o abbia ricevuto questa comunicazione per errore, La preghiamo
di tener presente che qualsiasi divulgazione, distribuzione o duplicazione
delle informazioni in essa contenute è strettamente proibita e può essere
illegale. La informiamo che deve darci tempestiva comunicazione della ricezione
del messaggio e distruggerlo immediatamente. I contenuti possono essere
soggetti ad accordi di non- divulgazione e riservatezza. Le opinioni e i punti
di vista espressi in questo messaggio di posta elettronica sono propri
dell'autore e potrebbero non corrispondere a opinioni e punti di vista di
Quixant. Nessuna informazione contenuta in questo messaggio può essere
interpretata come modifica dei termini di qualsiasi accordo contrattuale
scritto, esistente tra Quixant Plc (comprese le sue controllate) e qualsiasi
persona fisica o giuridica.
_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".