
Beim Konvertieren einer WMV-Datei in eine MP4-Datei heißt es
[mp4 @ 0x989c160] Track 1: Tag konnte nicht gefunden werden, Codec wird derzeit im Container nicht unterstützt.
Und
Header für Ausgabedatei Nr. 0 konnte nicht geschrieben werden (falsche Codec-Parameter?): Vorgang nicht zulässig.
Aber die Konvertierung der WMV-Datei in eine MKV-Datei ist problemlos möglich. Sie fragen sich, warum?
Nachfolgend sind die Ergebnisse beider Fälle aufgeführt.
Die Konvertierung von der WMV-Datei in eine MP4-Datei funktioniert nicht
$ 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
Die Konvertierung von der WMV-Datei in eine MKV-Datei ist problemlos möglich:
$ 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
Antwort1
Codec wird derzeit im Container nicht unterstützt
Das ist Ihr Fehler.
Versuchen Sie, einen anderen Audio-Codec anzugeben, z. B. mit -c:a aac
. MP4 nimmt Windows Media Audio nicht in seinen Container auf. Sie müssen einen passenden Audio-Codec auswählen, z. B. AAC. Im Moment versuchen Sie nur, den Bitstream zu kopieren, und das schlägt fehl – wie die Fehlermeldung zeigt.
Das gleiche Problem nicht übereinstimmender Codecs gilt auch für andere Container, obwohl MKV viel offener für andere Codecs ist als MP4, sodass Sie fast alle Codecs innerhalb eines MKV-Containers verwenden können. DiesnichtFunktioniert für MP4.
Generell sollten Sie jedoch für maximale Kompatibilität versuchen, sich an die gängigsten Formate für Container zu halten, z. B.
- AVI: MPEG-4-Video, MP3-Audio
- WMV: Windows Media Video und Audio
- MKV, MOV, MP4: h.264, AAC-Audio (wobei MKV eigentlich alles akzeptiert, hier liegt die Einschränkung auf der Seite des Wiedergabegeräts)
Antwort2
Versuchen Sie einfach Folgendes:
ffmpeg -y -i 1.wmv -b:v 2000k 1.mp4
ffmpeg sollte automatisch das am besten geeignete Audioformat auswählen und libx264 für das Video verwenden. Die 2000k-Zahl weist es im Wesentlichen an, mit derselben Bitrate wie die ursprüngliche Videodatei zu kodieren.
Antwort3
Docker
Ich habe ein ähnliches Problem mit der Konvertierung von .wma (Audiodateien) in .mp4 (Video mit statischem Bild) und dem Hochladen des Ergebnisses auf YouTube – ich werde die funktionierende Docker-Lösung für späteres Lesen aufheben.
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'
Speichern Sie den unten stehenden Code in docker-composer.yml
der Datei. Ich gehe davon aus, dass sich das mp3
Verzeichnis (mit der Datei myAudio.wma) im selben Verzeichnis befindet. Und führen Sie es aus docker compose run convert
.