Opened 12 years ago
Closed 11 years ago
#4126 closed defect (fixed)
FFMPEG is very slow when trying to use a http url as source
| Reported by: | Srikanth Kotagiri | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | ffmpeg |
| Version: | git-master | Keywords: | http |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Whenever I try to use a HTTP url as source for trancoding/muxing, the task completes successfully, but the time taken is an order of magnitude longer that just downloading the file and performing the operation locally.
I want to extract audio streams from sources online and I do not have the disk space locally to download the entire file. Is there any faster way to do this?
How to reproduce:
ffmpeg -i http://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.720p.mkv -vn test.wav ffmpeg version 2.4.2 Copyright (c) 2000-2014 the FFmpeg developers built on Oct 14 2014 15:31:40 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 1.100 / 56. 1.100 libavformat 56. 4.101 / 56. 4.101 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 1.100 / 5. 1.100 libswscale 3. 0.100 / 3. 0.100 libswresample 1. 1.100 / 1. 1.100
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.
Change History (7)
comment:1 by , 11 years ago
| Resolution: | → needs_more_info |
|---|---|
| Status: | new → closed |
comment:2 by , 11 years ago
| Keywords: | http mkv added; network performance removed |
|---|
comment:3 by , 11 years ago
There is indeed an issue there, but only when transcoding from a video to an audio file (even with "copy" codec). Note that wget is much slower than curl, which is consistent with ffmpeg download time when it is working properly. There is a 4x factor in time when trying to get the audio from a URL of a video file:
time wget http://ispikit.com/installers/P1040120.mp4
real 0m21.661s
user 0m0.013s
sys 0m0.061s
time curl http://ispikit.com/installers/P1040120.mp4 > hello.mp4
real 0m12.465s
user 0m0.011s
sys 0m0.043s
time ffmpeg -i http://ispikit.com/installers/P1040120.mp4 -codec copy hello_1.mp4
real 0m12.869s
user 0m0.046s
sys 0m0.041s
time ffmpeg -i http://ispikit.com/installers/P1040120.mp4 -acodec copy hello_1.aac
real 0m49.236s
user 0m0.060s
sys 0m0.043s
time ffmpeg -i P1040120.mp4 -codec copy hello_2.mp4
real 0m0.040s
user 0m0.025s
sys 0m0.014s
time ffmpeg -i P1040120.mp4 -acodec copy hello_2.aac
real 0m0.029s
user 0m0.021s
sys 0m0.007s
comment:4 by , 11 years ago
| Keywords: | audio added; mkv removed |
|---|---|
| Resolution: | needs_more_info |
| Status: | closed → reopened |
comment:5 by , 11 years ago
| Component: | avformat → ffmpeg |
|---|---|
| Keywords: | audio removed |
| Priority: | normal → important |
| Reproduced by developer: | set |
| Version: | unspecified → git-master |
Regression since 574dcb5b / 13f6917c
comment:6 by , 11 years ago
| Status: | reopened → open |
|---|
The command (often) works without -vn
$ ffmpeg -i http://samples.ffmpeg.org/MPEG-4/video.mp4 -f null -vn -
ffmpeg version N-72747-ga4557b7 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.7 (SUSE Linux)
configuration: --enable-gpl
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://samples.ffmpeg.org/MPEG-4/video.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: mp41
creation_time : 2008-12-15 20:31:58
Duration: 00:02:47.23, start: 0.000000, bitrate: 1333 kb/s
Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 1191 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc (default)
Metadata:
creation_time : 2008-12-15 20:31:58
Stream #0:1(eng): Data: none (rtp / 0x20707472), 27 kb/s
Metadata:
creation_time : 2008-12-15 20:32:08
Stream #0:2(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 97 kb/s (default)
Metadata:
creation_time : 2008-12-15 20:32:10
Stream #0:3(eng): Data: none (rtp / 0x20707472), 13 kb/s
Metadata:
creation_time : 2008-12-15 20:32:10
Stream #0:4(eng): Data: none (mp4s / 0x7334706D), 0 kb/s (default)
Metadata:
creation_time : 2008-12-15 20:32:11
Stream #0:5(eng): Data: none (mp4s / 0x7334706D) (default)
Metadata:
creation_time : 2008-12-15 20:32:11
Output #0, null, to 'pipe:':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: mp41
encoder : Lavf56.36.100
Stream #0:0(eng): Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s (default)
Metadata:
creation_time : 2008-12-15 20:32:10
encoder : Lavc56.41.100 pcm_s16le
Stream mapping:
Stream #0:2 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1e781c0] stream 2, offset 0x32a42c: partial file
http://samples.ffmpeg.org/MPEG-4/video.mp4: Invalid data found when processing input
size=N/A time=00:00:19.41 bitrate=N/A
video:0kB audio:3344kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
comment:7 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |



how much longer? ffmpeg has to read the entire file to extract the audio. it cannot just read the audio remotely and not download the video packets.
using wget it says ETA 28 minutes.