[FFmpeg-user] new error
juan carlos Rebate
nerus492 at gmail.com
Wed Aug 10 18:16:15 EEST 2016
2016-08-10 16:08 GMT+02:00 Moritz Barsnick <barsnick at gmx.net>:
> On Tue, Aug 09, 2016 at 19:47:21 +0200, juan carlos Rebate wrote:
>
> Can we take this discussion away from all the debate, and get
> technical? Juan Carlos asked:
>
> > ffmpeg -i video.avi mime_type video/mp4 -listen 1 http://ip:80
> [and yes, he forgot to quote the missing dash]
>
> So I attempted:
> $ ffmpeg -f lavfi -i testsrc=d=1 -c:v libx264 -mime_type
> application/foobar -listen 1 -f flv http://127.0.0.1:8999
> ffmpeg version N-81308-g369ed11 Copyright (c) 2000-2016 the FFmpeg
> developers
> built with icc (ICC) 14.0.3 20140422
> configuration: --prefix=/usr/new/tools/video/install/ffmpeg/2016-08-09
> --cc=icc --cxx=icpc --enable-gpl --enable-version3 --enable-nonfree
> --disable-shared --enable-gnutls --enable-libcdio --enable-libfreetype
> --enable-libx264 --enable-libvpx --enable-libmp3lame --enable-openal
> --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtwolame
> --enable-libopenjpeg --enable-librtmp --enable-libass --enable-libv4l2
> --enable-libvidstab --enable-libfdk-aac --enable-libsmbclient
> --enable-libzvbi --enable-libtesseract --enable-libzmq
> libavutil 55. 28.100 / 55. 28.100
> libavcodec 57. 51.100 / 57. 51.100
> libavformat 57. 46.100 / 57. 46.100
> libavdevice 57. 0.102 / 57. 0.102
> libavfilter 6. 50.100 / 6. 50.100
> libswscale 4. 1.100 / 4. 1.100
> libswresample 2. 1.100 / 2. 1.100
> libpostproc 54. 0.100 / 54. 0.100
> Input #0, lavfi, from 'testsrc=d=1':
> Duration: N/A, start: 0.000000, bitrate: N/A
> Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 320x240
> [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
> [http @ 0xbce0dc0] Error setting option mime_type to value
> application/foobar.
> http://127.0.0.1:8999: Invalid argument
>
> If I omit "-mime_type application/foobar", the http protocol works as
> expected.
>
> The error message does come from the http protocol (format?) as can be
> seen from the context ("[http @ ...]"). The message text comes from the
> generic option parser.
>
> I believe the cause is that the "mime_type" option is flagged
> "AV_OPT_FLAG_READONLY" - actually the only such option within all of
> ffmpeg.
>
> libavformat/http.c:137:
> { "mime_type", "export the MIME type", OFFSET(mime_type),
> AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT |
> AV_OPT_FLAG_READONLY },
>
> Such an option is described as such:
> * The option may not be set through the AVOptions API, only read.
>
> Removing the "AV_OPT_FLAG_READONLY" flag in http.c does allow the
> option to be given on the command line without error, but the http
> protocol doesn't do anything with it. It is indeed a read-only option.
>
> The documentation says:
> mime_type
> Export the MIME type.
>
> But I think it's only designed for the http demuxer protocol, and it's
> not useful for the command line, because it takes a string argument,
> but you're not actually allowed to set it. So the documentation must be
> misleading here.
>
> And yes, I do understand that the mime_type is not the Content-Type.
> It's probably an extracted interpretation of the Content-Type on the
> HTTP receiving end, I guess. But the documentation is misleading anyway.
>
> I looked at the alternatives:
>
> headers
> Set custom HTTP headers, can override built in default headers. The
> value must be a string encoding the headers.
>
> This does not work for the listen mode. That may be a bug.
>
> content_type
> Set a specific content type for the POST messages.
>
> This does not work for the listen mode (and it obviously isn't
> documented to do so).
>
> So, I don't currently see any way to set the Content-Type header for
> listen mode, apart from expanding the code. My really easy suggestion
> for a code change to support this:
>
> --- ./libavformat/http.c.orig 2016-06-17 19:20:02.000000000 +0200
> +++ ./libavformat/http.c 2016-08-10 15:50:17.000000000 +0200
> @@ -355,7 +355,7 @@
> case 200:
> reply_code = 200;
> reply_text = "OK";
> - content_type = "application/octet-stream";
> + content_type = s->content_type ? s->content_type :
> "application/octet-stream";
> break;
> case AVERROR_HTTP_SERVER_ERROR:
> case 500:
>
> (Works for me(TM).)
> I might put this (plus a doc change) up for review on ffmpeg-devel,
> unless someone quickly tells me it's nonsense. ;-)
>
> Moritz
>
> P.S.: I'm not sure whether changing the Content-Type was juan carlos's
> intention, he always forgets to write precisely what he wanted to
> achieve. Let's just pretent it was *my* intention now.
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>
Noritz thank you, finally someone understands, ffmpeg etá full of errors,
and the documentation is wrong, what I try to specify the type of content to
what the receiver grip, I repeat that I can not send all the complete output
by existing limits in list system
They say cut junk information, but that I did already, all relevant
information is error only, most of the documentaion is outdated or
erroneous for
example
http://ffmpeg.org/ffmpeg.html#Description
no sense indicate buffer size for a simple conversion of video,I am seeing this
absurd nonsense I can understand that the whole project is riddled with
flaws
More information about the ffmpeg-user
mailing list