@ -26,13 +26,13 @@
static int usage ( const char * argv0 , int ret )
{
fprintf ( stderr , " %s [-b bytespersec] input_url output_url \n " , argv0 ) ;
fprintf ( stderr , " %s [-b bytespersec] [-d duration] input_url output_url \n " , argv0 ) ;
return ret ;
}
int main ( int argc , char * * argv )
{
int bps = 0 , ret , i ;
int bps = 0 , duration = 0 , ret , i ;
const char * input_url = NULL , * output_url = NULL ;
int64_t stream_pos = 0 ;
int64_t start_time ;
@ -46,6 +46,9 @@ int main(int argc, char **argv)
if ( ! strcmp ( argv [ i ] , " -b " ) & & i + 1 < argc ) {
bps = atoi ( argv [ i + 1 ] ) ;
i + + ;
} else if ( ! strcmp ( argv [ i ] , " -d " ) & & i + 1 < argc ) {
duration = atoi ( argv [ i + 1 ] ) ;
i + + ;
} else if ( ! input_url ) {
input_url = argv [ i ] ;
} else if ( ! output_url ) {
@ -63,6 +66,15 @@ int main(int argc, char **argv)
fprintf ( stderr , " Unable to open %s: %s \n " , input_url , errbuf ) ;
return 1 ;
}
if ( duration & & ! bps ) {
int64_t size = avio_size ( input ) ;
if ( size < 0 ) {
av_strerror ( ret , errbuf , sizeof ( errbuf ) ) ;
fprintf ( stderr , " Unable to get size of %s: %s \n " , input_url , errbuf ) ;
goto fail ;
}
bps = size / duration ;
}
ret = avio_open2 ( & output , output_url , AVIO_FLAG_WRITE , NULL , NULL ) ;
if ( ret ) {
av_strerror ( ret , errbuf , sizeof ( errbuf ) ) ;