[FFmpeg-trac] #5829(undetermined:new): ADPCM SWF wave decode error, but directly decode *.flv right
FFmpeg
trac at avcodec.org
Wed Sep 7 10:38:36 EEST 2016
#5829: ADPCM SWF wave decode error, but directly decode *.flv right
-------------------------------------+-------------------------------------
Reporter: Guiding.Li | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: ADPCM SWF | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
ADPCM SWF wave decode error, but directly decode *.flv right
% ./ffmpeg -i ~/program/swf_adpcm/mono_11k.flv -vn -acodec copy
mono_11k_bs.wav
% ./ffmpeg -i mono_11k_bs.wav mono_11k_pcm.wav
Got mono_11k_pcm.wav error.
% ./ffmpeg -i ~/program/swf_adpcm/mono_11k.flv -vn mono_11k_pcm_right.wav
Got mono_11k_pcm_right.wav right.
*.flv ------> right.wav
*.flv --> swf.wav --> error.wav
Also, use SWF ADPCM encode to a wav, then decode it to PCM, meet error.
PCM --> swf.wav --> PCM(error)
Root cause in my opinion:
SWF adpcm take block_align as once decoded frame_size.
When decode *.flv, we can get the right frame_size.
When decode swf.wav get the wrong frame_size.
How to reproduce:
{{{
CMD:
% ./ffmpeg -i ~/program/swf_adpcm/mono_11k.flv -vn -acodec copy
mono_11k_bs.wav
% ./ffmpeg -i mono_11k_bs.wav mono_11k_pcm.wav
% ./ffmpeg -i ~/program/swf_adpcm/mono_11k.flv -vn mono_11k_pcm_right.wav
Version:
From https://git.ffmpeg.org/ffmpeg
369ed11..ba7be8c master -> origin/master
8887daf..c32ce24 release/2.8 -> origin/release/2.8
b62191f..3512ed3 release/3.0 -> origin/release/3.0
4275b27..677ea4a release/3.1 -> origin/release/3.1
* [new tag] n3.0.3 -> n3.0.3
From https://git.ffmpeg.org/ffmpeg
* [new tag] n3.1.3 -> n3.1.3
Updating 369ed11..ba7be8c
Log:
ligd at bjdevel03 ffmpeg $./ffmpeg -i ~/program/swf_adpcm/mono_11k.flv -vn
-acodec copy mono_11k_bs.wav
ffmpeg version N-81571-gba7be8c Copyright (c) 2000-2016 the FFmpeg
developers
built with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --prefix=/home/ligd/git/
libavutil 55. 29.100 / 55. 29.100
libavcodec 57. 55.101 / 57. 55.101
libavformat 57. 48.102 / 57. 48.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 60.100 / 6. 60.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
[flv @ 0xa48b260] video stream discovered after head already parsed
[flv @ 0xa48b260] audio stream discovered after head already parsed
Input #0, flv, from '/home/ligd/program/swf_adpcm/mono_11k.flv':
Duration: 00:01:00.46, start: 0.000000, bitrate: 810 kb/s
Stream #0:0: Video: flv1, yuv420p, 640x352, 12 fps, 12 tbr, 1k tbn
Stream #0:1: Audio: adpcm_swf, 11025 Hz, mono, s16, 44 kb/s
[wav @ 0xa4e4b00] Using AVStream.codec to pass codec parameters to muxers
is deprecated, use AVStream.codecpar instead.
[wav @ 0xa4e4b00] requested bits_per_coded_sample (16) and actually stored
(4) differ
Output #0, wav, to 'mono_11k_bs.wav':
Metadata:
ISFT : Lavf57.48.102
Stream #0:0: Audio: adpcm_swf (FS[0][0] / 0x5346), 11025 Hz, mono, 44
kb/s
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Press [q] to stop, [?] for help
size= 327kB time=00:01:00.46 bitrate= 44.3kbits/s speed=1.73e+03x
video:0kB audio:327kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.027772%
ligd at bjdevel03 ffmpeg $
ligd at bjdevel03 ffmpeg $
ligd at bjdevel03 ffmpeg $./ffmpeg -i mono_11k_bs.wav mono_11k_pcm.wav
ffmpeg version N-81571-gba7be8c Copyright (c) 2000-2016 the FFmpeg
developers
built with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --prefix=/home/ligd/git/
libavutil 55. 29.100 / 55. 29.100
libavcodec 57. 55.101 / 57. 55.101
libavformat 57. 48.102 / 57. 48.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 60.100 / 6. 60.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, wav, from 'mono_11k_bs.wav':
Metadata:
encoder : Lavf57.48.102
Duration: 00:01:00.46, bitrate: 44 kb/s
Stream #0:0: Audio: adpcm_swf (FS[0][0] / 0x5346), 11025 Hz, 1
channels, s16, 44 kb/s
[wav @ 0xb44c400] Using AVStream.codec to pass codec parameters to muxers
is deprecated, use AVStream.codecpar instead.
Output #0, wav, to 'mono_11k_pcm.wav':
Metadata:
ISFT : Lavf57.48.102
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 11025 Hz, mono,
s16, 176 kb/s
Metadata:
encoder : Lavc57.55.101 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (adpcm_swf (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size= 1904kB time=00:01:28.42 bitrate= 176.4kbits/s speed=2.61e+03x
video:0kB audio:1904kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.004001%
}}}
Patches should be submitted to the ffmpeg-devel mailing list and not this
bug tracker.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/5829>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list