2016-07-30 14 views
0

Im Versuch, eine Datei zu verarbeiten und führen Sie den folgenden BefehlFFmpeg ‚Unable Optionswert‚(null)‘als Sample-Format analysieren‘

ffmpeg -i input.webm output.webm 

Ich tue es mit der ffmpeg-Bibliothek von videoconverter.js. Ich versuche zu verstehen, was falsch ist oder wie ich es beheben kann.

ich am Ende dieses bekommen:

Worker has received command 
Received command: -i input.webm output.webm. Processing with 268435456 bits. 
ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers 
    built on Jun 9 2014 20:24:32 with emcc (Emscripten GCC-like replacement) 1.12.0 (commit 6960d2296299e96d43e694806f5d35799ef8d39c) 
    configuration: --cc=emcc --prefix=/Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist --extra-cflags='-I/Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist/include -v' --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic --disable-ffplay --disable-ffprobe --disable-ffserver --disable-asm --disable-doc --disable-devices --disable-pthreads --disable-w32threads --disable-network --disable-hwaccels --disable-parsers --disable-bsfs --disable-debug --disable-protocols --disable-indevs --disable-outdevs --enable-protocol=file --enable-libvpx --enable-gpl --extra-libs='/Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist/lib/libx264.a /Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist/lib/libvpx.a' 
    libavutil  52. 66.100/52. 66.100 
    libavcodec  55. 52.102/55. 52.102 
    libavformat 55. 33.100/55. 33.100 
    libavdevice 55. 10.100/55. 10.100 
    libavfilter  4. 2.100/4. 2.100 
    libswscale  2. 5.102/2. 5.102 
    libswresample 0. 18.100/0. 18.100 
    libpostproc 52. 3.100/52. 3.100 
[vp8 @ 0xed8c00] Warning: not compiled with thread support, using thread emulation 
Guessed Channel Layout for Input Stream #0.0 : mono 
Input #0, matroska,webm, from 'input.webm': 
    Metadata: 
    encoder   : Chrome 
    Duration: N/A, start: 0.000000, bitrate: N/A 
    Stream #0:0(eng): Audio: opus, 48000 Hz, mono (default) 
    Stream #0:1(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default) 
[abuffer @ 0xedd670] Unable to parse option value "(null)" as sample format 
    Last message repeated 1 times 
    Last message repeated 1 times 
[abuffer @ 0xedd670] Error setting option sample_fmt to value (null). 
[graph 1 input from stream 0:0 @ 0xedd600] Error applying options to the filter. 
Error opening filters! 
Finished processing (took 673ms) 

Das Endergebnis wird gestoppt wegen 'Unable Optionswert "(null)" als Sample-Format zu analysieren.' Wie würde ich das lösen?

+0

Sieht nicht wie eine programmspezifische Frage aus, so ist es hier offtopic. Ich empfehle [su] für 'ffmpeg' cli Werkzeugnutzungsfragen. – LordNeckbeard

+0

@LordNeckbeard Der normale Build von ffmpeg hat das Problem nicht. Die Javascript emscripten Version tut es. – Akshat

Antwort

0

Ihr Build ffmpeg verwendet die Version 2.2.1, die alt und nicht unterstützt wird. Es ist zu alt, um die Opus-Dekodierung nativ zu unterstützen (diese Version benötigt zum Decodieren von Opus libopus). Upgrade auf einen Build, der vom Entwicklungszweig abgeleitet wurde ("git master") oder zumindest die neueste Version verwenden.

Sie sollten auch eine moderne libvpx verwenden, wenn möglich. Beachten Sie, dass Sie mit dem letzten FFmpeg entfernen müssen, da VP9 jetzt der Standard-Videoencoder für Webm ist und den Bitstromfilter vp9_superframe erfordert (er wird automatisch angewendet). Alternativ können Sie die VP8-Codierung mit -c:v libvpx erzwingen.

Erwägen, libopus (bevorzugt) oder libvorbis Unterstützung für Webm hinzuzufügen; Andernfalls verwenden Sie den sehr fehlerhaften und experimentellen FFmpeg-nativen Vorbis-Encoder.

+0

Disable-asm und disable-pthreads werden benötigt, um die Javascript-Version zu erstellen. Es ist ein emscripten Build. Ich werde versuchen, mit '--disable-bsfs' umzubauen. Sie können das Build-Skript hier sehen: https://github.com/bgrins/videoconverter.js/blob/master/build/build_all_codecs.sh. Ich habe versucht, mit -c Kopie, es hat das gleiche Problem, ich denke, es braucht einen Decoder zur Verfügung, um eine remux zu tun. – Akshat

+0

@Akshat Antwort aktualisiert. Ihre Version ist zu alt, um die Opus-Dekodierung nativ zu unterstützen. – LordNeckbeard