
Al convertir un archivo WMV a un archivo MP4, dice
[mp4 @ 0x989c160] pista 1: no se pudo encontrar la etiqueta, el códec no es compatible actualmente con el contenedor
y
No se pudo escribir el encabezado para el archivo de salida n.º 0 (¿parámetros de códec incorrectos?): Operación no permitida.
Pero convertir el archivo WMV a un archivo MKV está bien. ¿Preguntarse por qué?
A continuación se presentan los resultados de ambos casos.
La conversión del archivo wmv a un archivo mp4 no funciona
$ ffmpeg -i "1.wmv" -c:v libx264 -crf 23 -c:a copy "1.mp4"
ffmpeg version git-2012-06-03-169dae8 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 3 2012 09:14:54 with gcc 4.6.3
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-x11grab
libavutil 51. 56.100 / 51. 56.100
libavcodec 54. 23.100 / 54. 23.100
libavformat 54. 6.101 / 54. 6.101
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 77.100 / 2. 77.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, asf, from '1.wmv':
Metadata:
WMFSDKVersion : 9.00.00.3267
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: 01:40:50.70, start: 0.000000, bitrate: 2100 kb/s
Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, s16, 128 kb/s
Stream #0:1(eng): Video: wmv3 (Main) (WMV3 / 0x33564D57), yuv420p, 640x480, 1974 kb/s, 29.97 tbr, 1k tbn, 1k tbc
[buffer @ 0x98c28c0] w:640 h:480 pixfmt:yuv420p tb:1/1000 sar:0/1 sws_param:flags=2
[buffersink @ 0x9894320] No opaque field provided
[libx264 @ 0x98b0ec0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x98b0ec0] profile High, level 3.0
[libx264 @ 0x98b0ec0] 264 - core 125 r2200 999b753 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[mp4 @ 0x989c160] track 1: could not find tag, codec not currently supported in container
Output #0, mp4, to '1.mp4':
Metadata:
WMFSDKVersion : 9.00.00.3267
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.6.101
Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x480, q=-1--1, 30k tbn, 29.97 tbc
Stream #0:1(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, 128 kb/s
Stream mapping:
Stream #0:1 -> #0:0 (wmv3 -> libx264)
Stream #0:0 -> #0:1 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted
La conversión del archivo wmv a un archivo mkv está bien:
$ ffmpeg -i "1.wmv" -c:v libx264 -crf 23 -c:a copy "1.mkv"
ffmpeg version git-2012-06-03-169dae8 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 3 2012 09:14:54 with gcc 4.6.3
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-x11grab
libavutil 51. 56.100 / 51. 56.100
libavcodec 54. 23.100 / 54. 23.100
libavformat 54. 6.101 / 54. 6.101
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 77.100 / 2. 77.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, asf, from '1.wmv':
Metadata:
WMFSDKVersion : 9.00.00.3267
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: 01:40:50.70, start: 0.000000, bitrate: 2100 kb/s
Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, s16, 128 kb/s
Stream #0:1(eng): Video: wmv3 (Main) (WMV3 / 0x33564D57), yuv420p, 640x480, 1974 kb/s, 29.97 tbr, 1k tbn, 1k tbc
File '1.mkv' already exists. Overwrite ? [y/N] y
w:640 h:480 pixfmt:yuv420p tb:1/1000 sar:0/1 sws_param:flags=2
[buffersink @ 0xa0a2760] No opaque field provided
[libx264 @ 0xa0b6ec0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0xa0b6ec0] profile High, level 3.0
[libx264 @ 0xa0b6ec0] 264 - core 125 r2200 999b753 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to '1.mkv':
Metadata:
WMFSDKVersion : 9.00.00.3267
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.6.101
Stream #0:0(eng): Video: h264, yuv420p, 640x480, q=-1--1, 1k tbn, 29.97 tbc
Stream #0:1(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, 128 kb/s
Stream mapping:
Stream #0:1 -> #0:0 (wmv3 -> libx264)
Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 325 fps=106 q=29.0 size= 411kB time=00:00:09.20 bitrate= 366.0kbits/s
Respuesta1
El códec no es compatible actualmente con el contenedor.
Ese es tu error.
Intente especificar otro códec de audio como -c:a aac
. MP4 no lleva Windows Media Audio en su contenedor. Tienes que elegir un códec de audio que coincida, como AAC. En este momento, todo lo que debe hacer es intentar copiar el flujo de bits y eso falla, como lo indica el mensaje de error.
El mismo problema de códecs no coincidentes se aplica a otros contenedores, aunque MKV está mucho más abierto a otros códecs que MP4, por lo que puede usar casi cualquier códec dentro de un contenedor MKV. Esto hacenoFunciona para MP4.
Sin embargo, en general, para obtener la máxima compatibilidad, intente ceñirse a los formatos más comunes para contenedores, por ejemplo
- AVI: vídeo MPEG-4, audio MP3
- WMV: vídeo y audio de Windows Media
- MKV, MOV, MP4: h.264, audio AAC (aunque MKV realmente acepta cualquier cosa, aquí la limitación está en el lado del dispositivo de reproducción)
Respuesta2
intenta simplemente hacer:
ffmpeg -y -i 1.wmv -b:v 2000k 1.mp4
ffmpeg debería elegir automáticamente el formato de audio más apropiado y usar libx264 para el video, 2000k esencialmente le dice que codifique con la misma tasa de bits que el archivo de video original.
Respuesta3
Estibador
Tengo un problema similar con la conversión de .wma (archivos de audio) a .mp4 (vídeo con imagen estática) y subo el resultado a youtube. Dejaré la solución acoplable funcional para lecturas futuras.
version: '3.7'
services:
convert:
image: jrottenberg/ffmpeg
volumes:
- ./mp3:/data
# for WMV
command: ' -loop 1 -framerate 2 -i "/data/image.jpeg" -i "/data/myAudio.WMA" -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a aac -b:a 128k -shortest -pix_fmt yuv420p "/data/myVideoForYT.mp4" -stats'
# for .mp3
#command: ' -loop 1 -framerate 2 -i "/data/image.jpeg" -i "/data/myAudio.mp3" -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p "/data/myVideoForYT.mp4" -stats'
Guarde el siguiente código dentro del docker-composer.yml
archivo, supongo que mp3
el directorio (con el archivo myAudio.wma) estará en el mismo directorio. Y pásalo por ahí docker compose run convert
.