2015-12-17 2 views
5

Je rencontre un problème lorsque j'essaie d'extraire des miniatures d'un fichier vidéo à un horodatage spécifique. Généralement je n'ai eu aucun problème avec ceci, mais j'ai rencontré un ensemble de dossiers de film qui obtiennent une erreur au sujet de la gamme d'octet demandée (416 plage demandée non satisfiable). La chose étrange est que le serveur renvoie correctement la longueur du contenu dans la demande de contenu partielle, mais quand il demande au fichier vidéo, il demande une longueur qui dépasse cette longueur.ffmpeg chercher à calculer une plage d'octets erronée?

Ceci est un peu sur ma tête, donc je ne suis pas sûr de ce qui pourrait se passer ici. Toute idée serait géniale.

Le commandement:

/usr/bin/ffmpeg -y -ss 1400 -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4' -qscale:v 2 -f image2 -vframes 1 -filter:v 'scale=192:108' -loglevel debug /data/www/storage/test.jpg 2>&1 

L'erreur:

[https @ 0x22e1e00] header='HTTP/1.1 416 Requested Range Not Satisfiable' 
[https @ 0x22e1e00] http_code=416 
[https @ 0x22e1e00] HTTP error 416 Requested Range Not Satisfiable 

Source Taille du fichier:

1776706045 bytes 

contenu Source Durée:

2897.624271 

Contenu partiel Demande:

[https @ 0x22e1e00] header='HTTP/1.1 206 Partial Content' 
[https @ 0x22e1e00] http_code=206 
[https @ 0x22e1e00] header='x-amz-id-2: 4J1pgHExIUA0GxIxSBmGJjrRqliHbsIjXeuGzVfTlaaoVXbyZI5FQNma8fGaifcovkXfxJev5yU=' 
[https @ 0x22e1e00] header='x-amz-request-id: 78B3BDBB0356EF40' 
[https @ 0x22e1e00] header='Date: Wed, 16 Dec 2015 23:51:29 GMT' 
[https @ 0x22e1e00] header='x-amz-meta-content-length: 2898' 
[https @ 0x22e1e00] header='x-amz-meta-cb-modifiedtime: Tue, 15 Dec 2015 17:59:51 GMT' 
[https @ 0x22e1e00] header='Last-Modified: Wed, 16 Dec 2015 23:44:59 GMT' 
[https @ 0x22e1e00] header='ETag: "6341a8022630667a8070a83575e542e7-27"' 
[https @ 0x22e1e00] header='Accept-Ranges: bytes' 
[https @ 0x22e1e00] header='Content-Range: bytes 0-1776706044/1776706045' 
[https @ 0x22e1e00] header='Content-Type: video/mp4' 
[https @ 0x22e1e00] header='Content-Length: 1776706045' 
[https @ 0x22e1e00] header='Server: AmazonS3' 
[https @ 0x22e1e00] header='Connection: close' 

FFmpeg Demande:

request: GET /my-bucket/mymoviefile.mp4 HTTP/1.1 
User-Agent: Lavf/56.25.101 
Accept: */* 
Range: bytes=1781732960- 
Connection: close 
Host: s3-us-west-2.amazonaws.com 
Icy-MetaData: 1 

Connexion entière:

# /usr/bin/ffmpeg -y -ss 1400 -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4' -qscale:v 2 -f image2 -vframes 1 -filter:v 'scale=192:108' -loglevel debug /data/www/storage/test.jpg 2>&1 
ffmpeg version 2.6.4 Copyright (c) 2000-2015 the FFmpeg developers 
    built with gcc 4.9.2 (Debian 4.9.2-10) 
    configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu 
    libavutil  54. 20.100/54. 20.100 
    libavcodec  56. 26.100/56. 26.100 
    libavformat 56. 25.101/56. 25.101 
    libavdevice 56. 4.100/56. 4.100 
    libavfilter  5. 11.102/5. 11.102 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 3.100/53. 3.100 
Splitting the commandline. 
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'. 
Reading option '-ss' ... matched as option 'ss' (set the start time offset) with argument '1400'. 
Reading option '-i' ... matched as input file with argument 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4'. 
Reading option '-qscale:v' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '2'. 
Reading option '-f' ... matched as option 'f' (force format) with argument 'image2'. 
Reading option '-vframes' ... matched as option 'vframes' (set the number of video frames to output) with argument '1'. 
Reading option '-filter:v' ... matched as option 'filter' (set stream filtergraph) with argument 'scale=192:108'. 
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. 
Reading option '/data/www/storage/test.jpg' ... matched as output file. 
Finished splitting the commandline. 
Parsing a group of options: global . 
Applying option y (overwrite output files) with argument 1. 
Applying option loglevel (set logging level) with argument debug. 
Successfully parsed a group of options. 
Parsing a group of options: input file https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4. 
Applying option ss (set the start time offset) with argument 1400. 
Successfully parsed a group of options. 
Opening an input file: https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4. 
[https @ 0x22e1e00] request: GET /my-bucket/mymoviefile.mp4 HTTP/1.1 
User-Agent: Lavf/56.25.101 
Accept: */* 
Range: bytes=0- 
Connection: close 
Host: s3-us-west-2.amazonaws.com 
Icy-MetaData: 1 


[https @ 0x22e1e00] header='HTTP/1.1 206 Partial Content' 
[https @ 0x22e1e00] http_code=206 
[https @ 0x22e1e00] header='x-amz-id-2: 4J1pgHExIUA0GxIxSBmGJjrRqliHbsIjXeuGzVfTlaaoVXbyZI5FQNma8fGaifcovkXfxJev5yU=' 
[https @ 0x22e1e00] header='x-amz-request-id: 78B3BDBB0356EF40' 
[https @ 0x22e1e00] header='Date: Wed, 16 Dec 2015 23:51:29 GMT' 
[https @ 0x22e1e00] header='x-amz-meta-content-length: 2898' 
[https @ 0x22e1e00] header='x-amz-meta-cb-modifiedtime: Tue, 15 Dec 2015 17:59:51 GMT' 
[https @ 0x22e1e00] header='Last-Modified: Wed, 16 Dec 2015 23:44:59 GMT' 
[https @ 0x22e1e00] header='ETag: "6341a8022630667a8070a83575e542e7-27"' 
[https @ 0x22e1e00] header='Accept-Ranges: bytes' 
[https @ 0x22e1e00] header='Content-Range: bytes 0-1776706044/1776706045' 
[https @ 0x22e1e00] header='Content-Type: video/mp4' 
[https @ 0x22e1e00] header='Content-Length: 1776706045' 
[https @ 0x22e1e00] header='Server: AmazonS3' 
[https @ 0x22e1e00] header='Connection: close' 
[https @ 0x22e1e00] header='' 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] ISO: File Type Major Brand: mp42 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] Before avformat_find_stream_info() pos: 1647960 bytes read:1652200 seeks:0 
[h264 @ 0x22e92c0] no picture 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] All info found 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] After avformat_find_stream_info() pos: 1862326 bytes read:1878504 seeks:0 frames:16 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4': 
    Metadata: 
    major_brand  : mp42 
    minor_version : 1 
    compatible_brands: isommp41avc1 
    creation_time : 2015-11-18 02:34:41 
    Duration: 00:48:17.70, start: 0.000000, bitrate: 4905 kb/s 
    Stream #0:0(und), 15, 1/2997: Video: h264 (High) (avc1/0x31637661), yuv420p(tv, left), 1920x1080 (1920x1088) [SAR 1:1 DAR 16:9], 1001/60000, 9994 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 59.94 tbc (default) 
    Metadata: 
     creation_time : 2015-11-18 02:34:41 
     handler_name : ?Apple Video Media Handler 
    Stream #0:1(und), 1, 1/48000: Audio: aac (LC) (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default) 
    Metadata: 
     creation_time : 2015-11-18 02:34:41 
     handler_name : ?Apple Sound Media Handler 
Successfully opened the file. 
Parsing a group of options: output file /data/www/storage/test.jpg. 
Applying option qscale:v (use fixed quality scale (VBR)) with argument 2. 
Applying option f (force format) with argument image2. 
Applying option vframes (set the number of video frames to output) with argument 1. 
Applying option filter:v (set stream filtergraph) with argument scale=192:108. 
Successfully parsed a group of options. 
Opening an output file: /data/www/storage/test.jpg. 
Successfully opened the file. 
detected 2 logical cores 
[Parsed_scale_0 @ 0x22cd4c0] Setting 'w' to value '192' 
[Parsed_scale_0 @ 0x22cd4c0] Setting 'h' to value '108' 
[Parsed_scale_0 @ 0x22cd4c0] Setting 'flags' to value '0x4' 
[Parsed_scale_0 @ 0x22cd4c0] w:192 h:108 flags:'0x4' interl:0 
[graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'video_size' to value '1920x1080' 
[graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'pix_fmt' to value '0' 
[graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'time_base' to value '1/2997' 
[graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'pixel_aspect' to value '1/1' 
[graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'sws_param' to value 'flags=2' 
[graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'frame_rate' to value '2997/100' 
[graph 0 input from stream 0:0 @ 0x22ccfe0] w:1920 h:1080 pixfmt:yuv420p tb:1/2997 fr:2997/100 sar:1/1 sws_param:flags=2 
[format @ 0x2798640] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] 
[format @ 0x2798640] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' 
[AVFilterGraph @ 0x22cda60] query_formats: 5 queried, 4 merged, 0 already done, 0 delayed 
[Parsed_scale_0 @ 0x22cd4c0] picking yuvj420p out of 3 ref:yuv420p alpha:0 
[swscaler @ 0x22c3c80] deprecated pixel format used, make sure you did set range correctly 
[Parsed_scale_0 @ 0x22cd4c0] w:1920 h:1080 fmt:yuv420p sar:1/1 -> w:192 h:108 fmt:yuvj420p sar:1/1 flags:0x4 
[mjpeg @ 0x2854e20] intra_quant_bias = 96 inter_quant_bias = 0 
[mjpeg @ 0x28716c0] intra_quant_bias = 96 inter_quant_bias = 0 
[mjpeg @ 0x2795320] intra_quant_bias = 96 inter_quant_bias = 0 
Output #0, image2, to '/data/www/storage/test.jpg': 
    Metadata: 
    major_brand  : mp42 
    minor_version : 1 
    compatible_brands: isommp41avc1 
    encoder   : Lavf56.25.101 
    Stream #0:0(und), 0, 100/2997: Video: mjpeg, yuvj420p(pc, left), 192x108 [SAR 1:1 DAR 16:9], 100/2997, q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc (default) 
    Metadata: 
     creation_time : 2015-11-18 02:34:41 
     handler_name : ?Apple Video Media Handler 
     encoder   : Lavc56.26.100 mjpeg 
Stream mapping: 
    Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) 
Press [q] to stop, [?] for help 
[https @ 0x22e1e00] request: GET /my-bucket/mymoviefile.mp4 HTTP/1.1 
User-Agent: Lavf/56.25.101 
Accept: */* 
Range: bytes=1781732960- 
Connection: close 
Host: s3-us-west-2.amazonaws.com 
Icy-MetaData: 1 


[https @ 0x22e1e00] header='HTTP/1.1 416 Requested Range Not Satisfiable' 
[https @ 0x22e1e00] http_code=416 
[https @ 0x22e1e00] HTTP error 416 Requested Range Not Satisfiable 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] stream 0, offset 0x6a331660: partial file 
https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4: Invalid data found when processing input 
[output stream 0:0 @ 0x22d7500] EOF on sink link output stream 0:0:default. 
No more output streams to write to, finishing. 
frame= 0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A 
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown 
Input file #0 (https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4): 
    Input stream #0:0 (video): 0 packets read (0 bytes); 0 frames decoded; 
    Input stream #0:1 (audio): 0 packets read (0 bytes); 
    Total: 0 packets (0 bytes) demuxed 
Output file #0 (/data/www/storage/test.jpg): 
    Output stream #0:0 (video): 0 frames encoded; 0 packets muxed (0 bytes); 
    Total: 0 packets (0 bytes) muxed 
Output file is empty, nothing was encoded (check -ss/-t/-frames parameters if used) 
0 frames successfully decoded, 0 decoding errors 
[AVIOContext @ 0x27ab100] Statistics: 1878504 bytes read, 0 seeks 

FFprobe Résultat:

# /usr/bin/ffprobe -show_format -show_streams -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4' 
ffprobe version 2.6.4 Copyright (c) 2007-2015 the FFmpeg developers 
    built with gcc 4.9.2 (Debian 4.9.2-10) 
    configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu 
    libavutil  54. 20.100/54. 20.100 
    libavcodec  56. 26.100/56. 26.100 
    libavformat 56. 25.101/56. 25.101 
    libavdevice 56. 4.100/56. 4.100 
    libavfilter  5. 11.102/5. 11.102 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 3.100/53. 3.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4': 
    Metadata: 
    major_brand  : mp42 
    minor_version : 1 
    compatible_brands: isommp41avc1 
    creation_time : 2015-11-18 02:34:41 
    Duration: 00:48:17.70, start: 0.000000, bitrate: 4905 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv), 1920x1080 [SAR 1:1 DAR 16:9], 9994 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 59.94 tbc (default) 
    Metadata: 
     creation_time : 2015-11-18 02:34:41 
     handler_name : ?Apple Video Media Handler 
    Stream #0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default) 
    Metadata: 
     creation_time : 2015-11-18 02:34:41 
     handler_name : ?Apple Sound Media Handler 
[STREAM] 
index=0 
codec_name=h264 
codec_long_name=H.264/AVC/MPEG-4 AVC/MPEG-4 part 10 
profile=High 
codec_type=video 
codec_time_base=1001/60000 
codec_tag_string=avc1 
codec_tag=0x31637661 
width=1920 
height=1080 
has_b_frames=1 
sample_aspect_ratio=1:1 
display_aspect_ratio=16:9 
pix_fmt=yuv420p 
level=40 
color_range=tv 
color_space=unknown 
color_transfer=unknown 
color_primaries=unknown 
chroma_location=left 
timecode=N/A 
refs=3 
is_avc=1 
nal_length_size=4 
id=N/A 
r_frame_rate=2997/100 
avg_frame_rate=2997/100 
time_base=1/2997 
start_pts=0 
start_time=0.000000 
duration_ts=8684300 
duration=2897.664331 
bit_rate=9994429 
max_bit_rate=N/A 
bits_per_raw_sample=8 
nb_frames=86843 
nb_read_frames=N/A 
nb_read_packets=N/A 
DISPOSITION:default=1 
DISPOSITION:dub=0 
DISPOSITION:original=0 
DISPOSITION:comment=0 
DISPOSITION:lyrics=0 
DISPOSITION:karaoke=0 
DISPOSITION:forced=0 
DISPOSITION:hearing_impaired=0 
DISPOSITION:visual_impaired=0 
DISPOSITION:clean_effects=0 
DISPOSITION:attached_pic=0 
TAG:creation_time=2015-11-18 02:34:41 
TAG:language=und 
TAG:handler_name=Apple Video Media Handler 
[/STREAM] 
[STREAM] 
index=1 
codec_name=aac 
codec_long_name=AAC (Advanced Audio Coding) 
profile=LC 
codec_type=audio 
codec_time_base=1/48000 
codec_tag_string=mp4a 
codec_tag=0x6134706d 
sample_fmt=fltp 
sample_rate=48000 
channels=2 
channel_layout=stereo 
bits_per_sample=0 
id=N/A 
r_frame_rate=0/0 
avg_frame_rate=0/0 
time_base=1/48000 
start_pts=0 
start_time=0.000000 
duration_ts=139085965 
duration=2897.624271 
bit_rate=192002 
max_bit_rate=N/A 
bits_per_raw_sample=N/A 
nb_frames=135828 
nb_read_frames=N/A 
nb_read_packets=N/A 
DISPOSITION:default=1 
DISPOSITION:dub=0 
DISPOSITION:original=0 
DISPOSITION:comment=0 
DISPOSITION:lyrics=0 
DISPOSITION:karaoke=0 
DISPOSITION:forced=0 
DISPOSITION:hearing_impaired=0 
DISPOSITION:visual_impaired=0 
DISPOSITION:clean_effects=0 
DISPOSITION:attached_pic=0 
TAG:creation_time=2015-11-18 02:34:41 
TAG:language=und 
TAG:handler_name=Apple Sound Media Handler 
[/STREAM] 
[FORMAT] 
filename=https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4 
nb_streams=2 
nb_programs=0 
format_name=mov,mp4,m4a,3gp,3g2,mj2 
format_long_name=QuickTime/MOV 
start_time=0.000000 
duration=2897.695000 
size=1776706045 
bit_rate=4905156 
probe_score=100 
TAG:major_brand=mp42 
TAG:minor_version=1 
TAG:compatible_brands=isommp41avc1 
TAG:creation_time=2015-11-18 02:34:41 
[/FORMAT] 

Répondre

0

J'ai observé le même BUG et diggi ng autour du code source de ffmpeg a confirmé cela. Le problème est qu'au lieu d'utiliser Content-Length comme taille de fichier, ffmpeg utilise incorrectement la dernière valeur dans Content-Range.

Une solution existe, avec un impact potentiel sur les performances, est d'ajouter simplement -seekable 0

+0

ne fonctionne pas pour moi. Travailler avec un fichier avi et obtenir le code http 416, ce qui conduit ffmpeg à 'cinepak_decode échoué» – tyleha