1

ffmpegを使用してmp3からPCMデータを取得しようとしていますが、ファイルはデータベースgridfsに保存されているため、パイプを使用してffmpegにデータを与えようとしていますが、ffmpegが正しく処理するファイルが1つあります。入力としてのファイル名、およびファイルをパイプとして指定すると誤って:(理由は何ですか?

ffmpeg -i - -f s16le -acodec pcm_s16le output.raw < testMp3s/test-corrupt.mp3 

与える

ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun  9 2012 13:50:13 with gcc 4.7.0 20120505 (prerelease)
configuration: --prefix=/usr --enable-libmp3lame --enable-libvorbis --enable-libxvid --        enable-libx264 --enable-libvpx --enable-libtheora --enable-libgsm --enable-libspeex -- enable-postproc --enable-shared --enable-x11grab --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libschroedinger --enable-libopenjpeg --enable-librtmp --enable-libpulse --enable-libv4l2 --enable-gpl --enable-version3 --enable-runtime-cpudetect --  disable-debug --disable-static
libavutil      51. 54.100 / 51. 54.100
libavcodec     54. 23.100 / 54. 23.100
libavformat    54.  6.100 / 54.  6.100
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
[mp3 @ 0x16d7100] Unknown attached picture mimetype: JPG, skipping.
[mp3 @ 0x16d7100] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x16d7100] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'pipe:':
Metadata:
album           : FreshNewMusik.Com
encoded_by      : iTunes 10.6.3
title           : No Lie (Freestyle)
artist          : Lil Wayne
album_artist    : Lil Wayne
genre           : Hip-Hop/Rap
TT3             : twitter.com/jakejarvis
date            : 2012
Duration: N/A, start: 0.000000, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16, 320 kb/s

まだ

ffmpeg -i testMp3s/test-corrupt.mp3 -f s16le -acodec pcm_s16le output.raw 

与える

ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun  9 2012 13:50:13 with gcc 4.7.0 20120505 (prerelease)
configuration: --prefix=/usr --enable-libmp3lame --enable-libvorbis --enable-libxvid --    enable-libx264 --enable-libvpx --enable-libtheora --enable-libgsm --enable-libspeex --enable-postproc --enable-shared --enable-x11grab --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libschroedinger --enable-libopenjpeg --enable-librtmp --enable-libpulse --enable-libv4l2 --enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-debug --disable-static
libavutil      51. 54.100 / 51. 54.100
libavcodec     54. 23.100 / 54. 23.100
libavformat    54.  6.100 / 54.  6.100
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
[mp3 @ 0xf33100] Unknown attached picture mimetype: JPG, skipping.
[mp3 @ 0xf33100] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0xf33100] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'testMp3s/test-corrupt.mp3':
Metadata:
album           : FreshNewMusik.Com
encoded_by      : iTunes 10.6.3
title           : No Lie (Freestyle)
artist          : Lil Wayne
album_artist    : Lil Wayne
genre           : Hip-Hop/Rap
TT3             : twitter.com/jakejarvis
date            : 2012
Duration: 00:02:33.86, start: 0.000000, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16, 320 kb/s

パイプで期間を取得するにはどうすればよいですか? (データは Python アプリのメモリ上で利用可能です)

4

1 に答える 1

7
[mp3 @ 0xf33100] Estimating duration from bitrate, this may be inaccurate

実際のファイルが与えられると、ffmpegはstatを使用してファイルのサイズを取得できます。期間はサイズ/ビットレートです。しかし、stdioを取得すると、予想されるデータ量を判断する方法がありません。実際、ストリームを取得している場合、明確に定義された期間さえない可能性があります。私が覚えているように、MP3はファイルの先頭にあるid3タグで期間を提供できます。そのため、一部のファイルには期間が表示されます。

于 2012-08-16T12:55:07.710 に答える