Ticket #2218 (closed defect: fixed)
Forcing input codec for flv broken
| Reported by: | ami_stuff | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avformat |
| Version: | git-master | Keywords: | flv regression |
| Cc: | donmoir@… | Blocked By: | |
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
attached file decodes incorrectly on big-endian because pcm_s16be is used instead of pcm_s16ble (see "libavformat/flvdec.c")
no idea if this is a bug in squeeze (creates broken files) or in ffmpeg
(also seeking does not work in ffplay - works fine with mplayer)
http://www.datafilehost.com/download-6e96d20a.html
ffplay seeking_fail.flv
ffplay version 0.9.1.git-7df9937 Copyright (c) 2003-2012 the FFmpeg developers
built on Feb 11 2012 18:08:56 with gcc 4.5.0
libavutil 51. 35.101 / 51. 35.101
libavcodec 54. 0.100 / 54. 0.100
libavformat 54. 0.100 / 54. 0.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 60.100 / 2. 60.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
[flv @ 0x10e403e0] max_analyze_duration 5000000 reached at 5063000
Input #0, flv, from 'seeking_fail.flv':
Metadata:
creationdate : Sun Jul 15 18:01:39 2012
[...]
Encoded_With : Sorenson Squeeze
Encoded_By :
Duration: 00:03:46.53, start: 0.000000, bitrate: 354 kb/s
Codec 0x10001 is not in the full list.
Stream #0:0: Audio: pcm_s16be, 22050 Hz, 1 channels, s16, 352 kb/s
Codec 0x10001 is not in the full list.
Seek to 45% ( 0:01:41) of total duration ( 0:03:46) B f=0/0
seeking_fail.flv: error while seeking= 0B f=0/0
7.10 A-V: 0.000 fd= 0 aq= 322KB vq= 0KB sq= 0B f=0/0
Change History
comment:1 Changed 4 months ago by cehoyos
- Keywords flv added
- Status changed from new to open
- Version changed from unspecified to git-master
- Component changed from undetermined to avformat
comment:2 Changed 4 months ago by cehoyos
- Priority changed from normal to wish
- Type changed from defect to enhancement
I think an option to invert "native" endian pcm_s16 format 0 audio is possible.
comment:3 Changed 4 months ago by DonMoir
As far as I can tell, you can't seek by audio stream with any flv even if it includes video.
Since above file is audio only, it fails seeking.
comment:5 Changed 4 months ago by cehoyos
- Keywords regression added
- Priority changed from wish to important
- Type changed from enhancement to defect
- Reproduced by developer set
The obvious (and only possible) work-around to force the audio codec is broken since 86e107a.
$ ffmpeg -acodec pcm_s16be -i seeking_fail.flv out.wav
ffmpeg version N-42179-gaf392ef Copyright (c) 2000-2012 the FFmpeg developers
built on Feb 1 2013 11:05:15 with gcc 4.7.1 20120723 [gcc-4_7-branch revision 189773]
configuration:
libavutil 51. 63.100 / 51. 63.100
libavcodec 54. 32.100 / 54. 32.100
libavformat 54. 14.100 / 54. 14.100
libavdevice 54. 0.100 / 54. 0.100
libavfilter 3. 0.101 / 3. 0.101
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
[pcm_s16be @ 0x2a9f5a0] PCM channels out of bounds
[flv @ 0x2a991c0] max_analyze_duration 5000000 reached at 5063000
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, flv, from 'seeking_fail.flv':
Metadata:
creationdate : Sun Jul 15 18:01:39 2012
dc_title : Land Down Under
Artist : Men At Work
Encoded_With : Sorenson Squeeze
Encoded_By :
Duration: 00:03:46.53, start: 0.000000, bitrate: 354 kb/s
Stream #0:0: Audio: pcm_s16be, 22050 Hz, mono, s16, 352 kb/s
[graph 0 input from stream 0:0 @ 0x2a9b420] tb:1/1000 samplefmt:s16 samplerate:22050 chlayout:0x4
Output #0, wav, to 'out.wav':
Metadata:
creationdate : Sun Jul 15 18:01:39 2012
dc_title : Land Down Under
Artist : Men At Work
Encoded_With : Sorenson Squeeze
Encoded_By :
encoder : Lavf54.14.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 22050 Hz, mono, s16, 352 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16be -> pcm_s16le)
Press [q] to stop, [?] for help
size= 9756kB time=00:03:46.53 bitrate= 352.8kbits/s
video:0kB audio:9756kB subtitle:0 global headers:0kB muxing overhead 0.000460%
(The test assumes the opposite case: flv file written on big-endian, played on little-endian.)



See r12184