FFmpeg "Pipe: 0: Ungültige Daten gefunden, wenn TGA-Dateien verarbeitet werden"
2251
Walker Knapp
Bei der Verwendung von FFmpeg zur Verarbeitung von TGA-Dateien in eine MP4-Datei ist ein Problem aufgetreten. Dies ist eine Version von dem, was ich mache, um das Problem zu veranschaulichen.
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (GCC) configuration: --enable-gpl --enable-version3 --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Splitting the commandline. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'. Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '60'. Reading option '-codec' ... matched as option 'codec' (codec name) with argument 'targa'. Reading option '-i' ... matched as input url with argument 'pipe:0'. Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '60'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'tblend=average,framestep=2,tblend=average,framestep=2,tblend=average,framestep=2,setpts=0.125'. Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'h264'. Reading option '-preset' ... matched as AVOption 'preset' with argument 'slow'. Reading option '-crf' ... matched as AVOption 'crf' with argument '18'. Reading option 'Z:\path\to\final.mp4' ... matched as output url. Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Applying option y (overwrite output files) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url pipe:0. Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 60. Applying option codec (codec name) with argument targa. Successfully parsed a group of options. Opening an input file: pipe:0. [pipe @ 0000000000727f40] Setting default whitelist 'crypto' [AVIOContext @ 0000000001fcb3e0] Statistics: 1048576 bytes read, 0 seeks pipe:0: Invalid data found when processing input
Irgendeine Idee, was ich falsch mache? Vielen Dank!
Die tatsächliche Implementierung:
Ich habe ein externes Programm, das TGA-Dateien ausgibt, und ich möchte Java verwenden, um diese Dateien zu lesen, an FFmpeg zu senden und dann die Dateien zu löschen.
Was macht Java mit den Dateien - einfach weiterleiten, wie sie sind? Fügen Sie dann -f image2pipe vor '-i' hinzu und ersetzen Sie das erste -r 60 durch '-framerate 60'
Gyan vor 7 Jahren
0
Ja, es wird nur ein FileInputStream geöffnet und dann mit ByteStream.copy () in die Pipe geschoben. Und mit den Änderungen heißt es jetzt "Ausgabedatei # 0 enthält keinen Stream"
Walker Knapp vor 7 Jahren
0
Führen Sie den Befehl mit "-report" aus und laden Sie die generierte Protokolldatei hoch.
Gyan vor 7 Jahren
0
https://pastebin.com/VMDzmVTw
Walker Knapp vor 7 Jahren
0
Fügen Sie "-probesize 100M -analyzeduration 100M" vor "-i" hinzu und entfernen Sie "-f h264".
Gyan vor 7 Jahren
0
Hat sich nicht verändert https://pastebin.com/i3LtUWSZ
Walker Knapp vor 7 Jahren
0
Wie groß sind die TGAs?
Gyan vor 7 Jahren
0
Ungefähr 6 Megabytes
Walker Knapp vor 7 Jahren
0
1 Antwort auf die Frage
2
Gyan
Aufgrund des Fehlens eines TARGA-Parsers können nur TGAs mit fester Dateigröße (dh keine RLE-Komprimierung) in ffmpeg geleitet werden.