2015-11-16 3 views
0

Я хочу, чтобы расшифровать файл wma типа использовать FFmpeg, скомпилирован с вариантамиFFmpeg не может найти AV_CODEC_ID_WMAV2

--enable-decoder=wmav1 --enable-decoder=wmav2, --enable-encoder=wmav1, --enable-encoder=wmav2 --enable-demuxer=xwma

и исходного кода я использовать его как это:

 av_register_all(); 
     //avcodec_register_all(); 

     if ((ret = avformat_open_input(&fmt_ctx, src_filename, 0, 0)) < 0) { 
      LOG("Could not open source file %s, ret:%d", src_filename, ret); 
      return; 
     } 

     if ((ret = avformat_find_stream_info(fmt_ctx, 0)) < 0) { 
      LOG("Could not find stream information---ret:%d", ret); 
      return; 
     } 

и avformat_find_stream_info fail with ret:-541478725

a й добавить ffmpeg -i <inputfile> журнал командной строки:

D:\Downloads\ffmpeg-static\bin>ffmpeg.exe -i ring.wma 
ffmpeg version N-76684-g1fe82ab Copyright (c) 2000-2015 the FFmpeg developers 
    built with gcc 5.2.0 (GCC) 
    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av 
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab 
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca -- 
enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l 
ibilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enab 
le-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --en 
able-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --ena 
ble-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc 
--enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enabl 
e-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg -- 
enable-lzma --enable-decklink --enable-zlib 
    libavutil  55. 6.100/55. 6.100 
    libavcodec  57. 15.100/57. 15.100 
    libavformat 57. 14.100/57. 14.100 
    libavdevice 57. 0.100/57. 0.100 
    libavfilter  6. 15.100/6. 15.100 
    libswscale  4. 0.100/4. 0.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Guessed Channel Layout for Input Stream #0.0 : stereo 
Input #0, asf, from 'ring.wma': 
    Metadata: 
    WMFSDKNeeded : 0.0.0.0000 
    DeviceConformanceTemplate: L3 
    WMFSDKVersion : 11.0.6001.7001 
    IsVBR   : 0 
    PeakValue  : 18081 
    AverageLevel : 1915 
    Duration: 00:00:07.80, start: 0.000000, bitrate: 206 kb/s 
    Stream #0:0: Audio: wmav2 (a[1][0][0]/0x0161), 44100 Hz, 2 channels, fltp, 
192 kb/s 

какие-либо советы?

И какая опция должна быть включена, когда я хочу декодировать файл специального типа?

спасибо.

+0

Можете ли вы предоставить вывод командной строки ffmpeg -i filename? Вероятно, вам не хватает других демультиплексоров/парсеров/*, необходимых для чтения этого файла. Работает ли он с полной сборкой ffmpeg, а не с вашей сборкой? –

+0

Я добавляю журнал команд, но я нашел его с помощью 'flac'' mp3' 'aac' файла, этот код отлично работает с файлом' flac', любым предложением? – chaoqi

ответ

1

Вам необходимо --enable-demuxer = asf. xwma - это крайний формат, который на самом деле не используется очень сильно, wma-звук обычно упаковывается в контейнер asf. Эти файлы будут иметь расширение «.wma».

+0

спасибо, это работа. Есть ли какая-нибудь подсказка, что, когда я хочу декодировать файл, как мне добавить элемент 'muxer',' demuxer', 'encoder',' decoder'? – chaoqi

+0

Ищите эти строки в выводе «ffmpeg -i file»: Input # 0, asf, from «ring.wma»: «and» Stream # 0: 0: Audio: wmav2 (a [1] [0] [ 0]/0x0161), 44100 Гц, 2 канала, fltp, 192 кбит/с ». Первый элемент после« Входной номер »является демультиплексором (« asf »), а первый элемент после« Поток № : » («wmav2»). Для кодирования найдите те же строки в разделе «ffmpeg -i input output.extension». –

+0

Большое вам спасибо. – chaoqi

Смежные вопросы