Esse tipo de problema parece ser solucionável com a atualização do ffmpeg, mas estou paranóico em atualizar / alterar qualquer coisa em codecs no meu sistema e decidi usar os binários do windows do ffmpeg através do wine. Parece funcionar bem.
Invólucro de vinho Python:
Eu escrevi o seguinte wrapper do python que deve ser
-
colocado no mesmo diretório que
ffmpeg.exe
, -
com permissões de execução e
-
linkado para / usr / bin / wineffmpeg.
Código-fonte:
#!/usr/bin/env python
import subprocess
import sys
import os
#Robust against: ln ... --symbolic
base_dir = os.path.dirname(os.path.realpath(__file__))
ffmpegbin = os.path.join(base_dir, 'ffmpeg.exe')
def wine_path(path):
return subprocess.check_output(['winepath', '-w', path]).strip()
for i in range(1, len(sys.argv)):
if sys.argv[i][:8].lower() == 'linpath:':
sys.argv[i] = wine_path(sys.argv[i][8:].strip())
subprocess.call(['wine', ffmpegbin]+sys.argv[1:])
Ele passa todos os parâmetros de linha de comando textualmente, exceto se você atribuir um parâmetro na forma de linpath:/linux/path/to/x
. Em seguida, converte para Z:\wine\path\to\x
. Isso raramente seria necessário, uma vez que os caminhos relativos (que é mais frequentemente usado) denotados por /
parecem funcionar bem fora da caixa.
Aqui está uma execução bem sucedida:
wineffmpeg -i "1-02 Ein Junge überlebt.mp3" -
filter:a "atempo=2.0" -vn "converted/music.mp3"
ffmpeg version N-69672-g078be09 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --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-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
libavutil 54. 18.100 / 54. 18.100
libavcodec 56. 21.102 / 56. 21.102
libavformat 56. 19.100 / 56. 19.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 9.104 / 5. 9.104
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mp3, from '1-02 Ein Junge ├╝berlebt.mp3':
Duration: 00:05:22.20, start: 0.034531, bitrate: 57 kb/s
Stream #0:0: Audio: mp3, 32000 Hz, mono, s16p, 57 kb/s
Metadata:
encoder : LAME3.96r
fixme:msvcrt:MSVCRT__wsopen_s : pmode 0x01b6 ignored
Output #0, mp3, to 'converted/music.mp3':
Metadata:
TSSE : Lavf56.19.100
Stream #0:0: Audio: mp3 (libmp3lame), 32000 Hz, mono, s16p
Metadata:
encoder : Lavc56.21.102 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (mp3 (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
size= 944kB time=00:02:41.06 bitrate= 48.0kbits/s
video:0kB audio:944kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.023277%