[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