Commit d6c62919 authored by Antoine Cellerier's avatar Antoine Cellerier

Add option to specify which muxer we want to use in ffmpeg (ie:...

Add option to specify which muxer we want to use in ffmpeg (ie: #std{mux=ffmpeg{mux=flv}...) Still seems kind of broken as the resulting file can't be demuxed by vlc/libavformat. Looks like the video and audio codec aren't identified correctly in the ffmpeg muxer. Must be some error in mux.c i guess.
parent e8ff31e8
...@@ -193,6 +193,8 @@ vlc_module_begin(); ...@@ -193,6 +193,8 @@ vlc_module_begin();
add_submodule(); add_submodule();
set_description( _("FFmpeg muxer" ) ); set_description( _("FFmpeg muxer" ) );
set_capability( "sout mux", 2 ); set_capability( "sout mux", 2 );
add_string( "ffmpeg-mux", NULL, NULL, MUX_TEXT,
MUX_LONGTEXT, VLC_TRUE );
set_callbacks( E_(OpenMux), E_(CloseMux) ); set_callbacks( E_(OpenMux), E_(CloseMux) );
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE) #if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
......
...@@ -297,3 +297,6 @@ N_("<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]... ...@@ -297,3 +297,6 @@ N_("<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]...
#define SCALEMODE_TEXT N_("Scaling mode") #define SCALEMODE_TEXT N_("Scaling mode")
#define SCALEMODE_LONGTEXT N_("Scaling mode to use.") #define SCALEMODE_LONGTEXT N_("Scaling mode to use.")
#define MUX_TEXT N_("Ffmpeg mux")
#define MUX_LONGTEXT N_("Force use of ffmpeg muxer.")
...@@ -44,6 +44,10 @@ ...@@ -44,6 +44,10 @@
/* Version checking */ /* Version checking */
#if defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE) #if defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
static const char *ppsz_mux_options[] = {
"mux", NULL
};
/***************************************************************************** /*****************************************************************************
* mux_sys_t: mux descriptor * mux_sys_t: mux descriptor
*****************************************************************************/ *****************************************************************************/
...@@ -79,17 +83,28 @@ static offset_t IOSeek( void *opaque, offset_t offset, int whence ); ...@@ -79,17 +83,28 @@ static offset_t IOSeek( void *opaque, offset_t offset, int whence );
*****************************************************************************/ *****************************************************************************/
int E_(OpenMux)( vlc_object_t *p_this ) int E_(OpenMux)( vlc_object_t *p_this )
{ {
AVOutputFormat *file_oformat; AVOutputFormat *file_oformat;
sout_mux_t *p_mux = (sout_mux_t*)p_this; sout_mux_t *p_mux = (sout_mux_t*)p_this;
sout_mux_sys_t *p_sys; sout_mux_sys_t *p_sys;
AVFormatParameters params, *ap = &params; AVFormatParameters params, *ap = &params;
char *psz_mux;
/* Should we call it only once ? */ /* Should we call it only once ? */
av_register_all(); av_register_all();
config_ChainParse( p_mux, "ffmpeg-", ppsz_mux_options, p_mux->p_cfg );
/* Find the requested muxer */ /* Find the requested muxer */
file_oformat = psz_mux = var_GetNonEmptyString( p_mux, "ffmpeg-mux" );
guess_format(NULL, p_mux->p_access->psz_path, NULL); if( psz_mux )
{
file_oformat = guess_format( psz_mux, NULL, NULL );
}
else
{
file_oformat =
guess_format(NULL, p_mux->p_access->psz_path, NULL);
}
if (!file_oformat) if (!file_oformat)
{ {
msg_Err( p_mux, "unable for find a suitable output format" ); msg_Err( p_mux, "unable for find a suitable output format" );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment