
Recherche avancée
Médias (39)
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
ED-ME-5 1-DVD
11 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
1,000,000
27 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Demon Seed
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Four of Us are Dying
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Corona Radiata
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (42)
-
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (5922)
-
AVCodecContext settings for H264 (1080i)
23 septembre 2013, par mooseI'm trying to configure x264 for 1080i capturing. Most of these settings below are found in different examples. However, compiled together they don't work. ffmpeg API reports no error, but
avcodec_encode_video()
always returns zero.Some of the numbers are strange to me... for example,
gop_size
. Isn't 250 too high ?Event you can't offer the final answer, I'm still interested in any kind of comment on this subject.
pCodecContext->codec_type = AVMEDIA_TYPE_VIDEO;
pCodecContext->codec_id = CODEC_ID_H264;
pCodecContext->coder_type = FF_CODER_TYPE_AC;
pCodecContext->flags |= CODEC_FLAG_LOOP_FILTER | CODEC_FLAG_INTERLACED_ME | CODEC_FLAG_INTERLACED_DCT;
pCodecContext->me_cmp |= 1;
pCodecContext->partitions |= X264_PART_I8X8 | X264_PART_I4X4 | X264_PART_P8X8 | X264_PART_B8X8;
pCodecContext->me_method = ME_UMH;
pCodecContext->me_subpel_quality = 8;
pCodecContext->me_range = 16;
pCodecContext->bit_rate = 10 * 1024 * 1024; // 10 Mbps??
pCodecContext->width = 1920;
pCodecContext->height = 1080;
pCodecContext->time_base.num = 1; // 25 fps
pCodecContext->time_base.den = 25; // 25 fps
pCodecContext->gop_size = 250; // 250
pCodecContext->keyint_min = 25;
pCodecContext->scenechange_threshold = 40;
pCodecContext->i_quant_factor = 0.71f;
pCodecContext->b_frame_strategy = 1;
pCodecContext->qcompress = 0.6f;
pCodecContext->qmin = 10;
pCodecContext->qmax = 51;
pCodecContext->max_qdiff = 4;
pCodecContext->max_b_frames = 3;
pCodecContext->refs = 4;
pCodecContext->directpred = 3;
pCodecContext->trellis = 1;
pCodecContext->flags2 |= CODEC_FLAG2_WPRED | CODEC_FLAG2_MIXED_REFS | CODEC_FLAG2_8X8DCT | CODEC_FLAG2_FASTPSKIP; // wpred+mixed_refs+dct8x8+fastpskip
pCodecContext->weighted_p_pred = 2; // not implemented with interlaced ??
pCodecContext->crf = 22;
pCodecContext->pix_fmt = PIX_FMT_YUV420P;
pCodecContext->thread_count = 0; -
audio extracted from flv file via ffmpeg is of shorter duration than the actual flv video [closed]
11 janvier 2013, par user1961143I have extracted audio from flv file via ffmpeg using this command :-
ffmpeg -i 164_29.flv v19.mp3
The flv videos duration is 3 minutes but the audio is of 2 mins 20 seconds only. On searching i found that the silent pieces of audio are removed when generating audio from ffmpeg. But i need the audio file to be of exactly same duration as flv video as later i need to put this audio in the flv video itself. Please help as this is urgent for our project. I am running the FFMpeg via .net windows service, so in case you know any other tool which can extract the audio of same duration as video and can be run via .net, it would be useful too.
Console output :
C :\Users\ritika.thakur>ffmpeg -i 164_29.flv v19.mp3
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version —disable-pthreads —enable-runtime-cpudetect —enable-avisynth —enable-bzlib —enable-frei0r —enable-libass —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut -enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger -enable-libspeex —enable-libtheora —enable-libutvideo —enable-libvo-aacenc —enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx —enable-libx264 —enale-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '164_29.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
Duration : 00:03:04.08, start : 0.000000, bitrate : 283
kb/s
Stream #0:0 : Video : flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1 : Audio : nellymoser, 22050 Hz, mono, flt
Output #0, mp3, to 'v19.mp3' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
TSSE : Lavf54.37.100
Stream #0:0 : Audio : mp3, 22050 Hz, mono, fltp
Stream mapping :
Stream #0:1 -> #0:0 (nellymoser -> libmp3lame)
Press [q] to stop, [?] for help
size= 567kB time=00:03:04.13 bitrate= 25.2kbits/s video:0kB audio:567kB subtitle:0 global headers:0kB muxing overhead 0.051503%This is the output of console for both video and audio file separately :-
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.C :\Users\ritika.thakur>ffmpeg -i v19.mp3
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version3
—disable-pthreads —enable-runtime-cpudetect —enable-avisynth —enable-bzlib
— enable-frei0r —enable-libass —enable-libopencore-amrnb —enable-libopencore-
amrwb —enable-libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut -enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger -
enable-libspeex —enable-libtheora —enable-libutvideo —enable-libvo-aacenc —
enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx —enable-libx264 —enab
le-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
[mp3 @ 0056e780] max_analyze_duration 5000000 reached at 5015510
Input #0, mp3, from 'v19.mp3' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
encoder : Lavf54.37.100
Duration : 00:02:25.14, start : 0.000000, bitrate : 32 kb/s
Stream #0:0 : Audio : mp3, 22050 Hz, mono, s16, 32 kb/s
At least one output file must be specifiedC :\Users\ritika.thakur>ffmpeg -i 164_29.flv
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version3
—disable-pthreads —enable-runtime-cpudetect —enable-avisynth —enable-bzlib
— enable-frei0r —enable-libass —enable-libopencore-amrnb —enable-libopencore-
amrwb —enable-libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut -enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger -
enable-libspeex —enable-libtheora —enable-libutvideo —enable-libvo-aacenc —
enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx —enable-libx264 —enab
le-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '164_29.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
Duration : 00:03:04.08, start : 0.000000, bitrate : 283 kb/s
Stream #0:0 : Video : flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1 : Audio : nellymoser, 22050 Hz, mono, flt
At least one output file must be specifiedIf you see the duration of video is of 3:04 but audio extracted from it is of 2:25 only.
Actually i am using ffmpeg overlay to show two videos side by side in our debate project for the client. Now ffmpeg takes audio from first video by default. But we want the audio from both videos together as a debate going on. Hence I thought of a solution to extract audio from both videos and merge them and than apply them to the overlayed video. This will all work perfectly only if I get the complete audio from the video file i.e. of equal duration.
For more information i am writing here the overlay command we are using :-**ffmpeg -i 164_29.flv -vf "[in] scale=359:320, pad=2*iw+6:ih
[left]; movie=164_30.flv, scale=359:320 [right]; [left][right]
overlay=365:0 [out]" -b:v 3600k -y a1.flv**
**This is the console output of this overlay command:-**C :\Users\ritika.thakur>ffmpeg -i 164_29.flv -vf "[in] scale=359:320, pad=2*iw+6
:ih [left] ; movie=164_30.flv, scale=359:320 [right] ; [left][right] overlay=365:0
[out]" -b:v 3600k -y a1.flv
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version3
—disable- pthreads —enable-runtime-cpudetect —enable- avisynth
—enable-bzlib —enable
-frei0r
—enable-libass —enable-libopencore-amrnb —enable-libopencore-amrwb
—enable- libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut
—enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger
— enable-
libspeex —enable-libtheora —enable- libutvideo
—enable-libvo-aacenc —
enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx
—enable-libx264 —enab
le-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '164_29.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
Duration : 00:03:04.08, start : 0.000000, bitrate : 283 kb/s
Stream #0:0 : Video : flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1 : Audio : nellymoser, 22050 Hz, mono, flt
Output #0, flv, to 'a1.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
encoder : Lavf54.37.100
Stream #0:0 : Video : flv1 ([2][0][0][0] / 0x0002), yuv420p, 724x320, q=2-31,
3600 kb/s, 1k tbn, 1k tbc
Stream #0:1 : Audio : mp3 ([2][0][0][0] / 0x0002), 22050 Hz, mono, fltp
Stream mapping :
Stream #0:0 -> #0:0 (flv -> flv)
Stream #0:1 -> #0:1 (nellymoser -> libmp3lame)
Press [q] to stop, [?] for help
frame= 83 fps=0.0 q=4.1 size= 343kB time=00:00:07.01 bitrate= 401.2kbits/s
frame= 149 fps=149 q=2.3 size= 861kB time=00:00:14.87 bitrate= 473.9kbits/s
frame= 223 fps=148 q=2.0 size= 1492kB time=00:00:22.00 bitrate= 555.4kbits/s
frame= 308 fps=153 q=2.0 size= 2195kB time=00:00:28.64 bitrate= 627.8kbits/s
frame= 391 fps=156 q=2.0 size= 2858kB time=00:00:34.06 bitrate= 687.4kbits/s
frame= 478 fps=159 q=2.0 size= 3541kB time=00:00:39.55 bitrate= 733.4kbits/s
frame= 547 fps=156 q=2.0 size= 4293kB time=00:00:46.80 bitrate= 751.5kbits/s
frame= 645 fps=161 q=2.0 size= 4896kB time=00:00:51.63 bitrate= 776.8kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 16 times
frame= 731 fps=162 q=2.0 size= 5418kB time=00:00:56.61 bitrate= 784.0kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 49 times
frame= 794 fps=158 q=2.0 size= 5802kB time=00:01:02.37 bitrate= 762.1kbits/s
frame= 886 fps=160 q=2.0 size= 6363kB time=00:01:07.00 bitrate= 778.0kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 29 times
frame= 954 fps=158 q=2.0 size= 6785kB time=00:01:13.31 bitrate= 758.2kbits/s
frame= 1056 fps=162 q=2.0 size= 7377kB time=00:01:16.94 bitrate= 785.4kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 30 times
frame= 1130 fps=161 q=2.0 size= 7789kB time=00:01:22.19 bitrate= 776.3kbits/s
frame= 1217 fps=162 q=2.0 size= 8372kB time=00:01:27.68 bitrate= 782.1kbits/s
frame= 1306 fps=163 q=2.0 size= 9074kB time=00:01:32.86 bitrate= 800.5kbits/s
frame= 1393 fps=163 q=1.6 size= 9700kB time=00:01:38.41 bitrate= 807.3kbits/s
frame= 1475 fps=163 q=2.0 size= 10278kB time=00:01:44.03 bitrate= 809.4kbits/s
frame= 1568 fps=164 q=2.0 size= 10825kB time=00:01:48.52 bitrate= 817.1kbits/s
frame= 1658 fps=165 q=2.0 size= 11439kB time=00:01:53.44 bitrate= 826.0kbits/s
frame= 1734 fps=165 q=2.0 size= 12027kB time=00:01:58.31 bitrate= 832.7kbits/s
frame= 1792 fps=162 q=2.0 size= 12579kB time=00:02:03.41 bitrate= 835.0kbits/s
frame= 1851 fps=160 q=2.0 size= 13284kB time=00:02:10.74 bitrate= 832.3kbits/s
frame= 1929 fps=160 q=2.0 size= 13922kB time=00:02:16.85 bitrate= 833.3kbits/s
frame= 2010 fps=160 q=2.0 size= 14652kB time=00:02:23.39 bitrate= 837.1kbits/s
frame= 2102 fps=161 q=2.0 size= 15329kB time=00:02:28.86 bitrate= 843.6kbits/s
frame= 2200 fps=162 q=2.0 size= 15963kB time=00:02:34.08 bitrate= 848.7kbits/s
frame= 2292 fps=163 q=2.0 size= 16554kB time=00:02:38.96 bitrate= 853.1kbits/s
frame= 2378 fps=163 q=2.0 size= 17157kB time=00:02:44.50 bitrate= 854.4kbits/s
frame= 2468 fps=164 q=2.0 size= 17826kB time=00:02:49.50 bitrate= 861.5kbits/s
frame= 2564 fps=165 q=2.0 size= 18489kB time=00:02:54.43 bitrate= 868.3kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 15 times
frame= 2647 fps=165 q=2.0 size= 19079kB time=00:02:59.53 bitrate= 870.6kbits/s
frame= 2728 fps=165 q=2.0 Lsize= 19703kB time=00:03:04.13 bitrate= 876.6kbits/
s video:19006kB audio:567kB subtitle:0 global headers:0kB muxing overhead 0.663315%Everything is working fine except that we want audio from both videos playing together in final overlayed file. I would be highly grateful if you can help in this and let me know if its possible to do via ffmpeg or not.
-
java.lang.ExceptionInInitializerError in FFmpeg Test
22 janvier 2013, par Mehul RanparaI have a demo called FFMpegTest of Android which i downloaded from here..https://github.com/appunite/AndroidFFmpeg..and i also have Library file of FFMpeg which is in this demo and i am using this Library in FFmpegTest..Now when i running..it gives java.lang.ExceptionInInitializerError.. Anyone have an idea about this..please share with me..Thanx in Advance..
which is in...VideoActivity.java
public class VideoActivity extends Activity implements OnClickListener,FFmpegListener, OnSeekBarChangeListener, OnItemSelectedListener
{
private FFmpegPlayer mpegPlayer;
private static boolean isSurfaceView = true;
protected boolean mPlay = false;
private View controlsView;
private View loadingView;
private SeekBar seekBar;
public View videoView;
private Button playPauseButton;
private boolean mTracking = false;
private View streamsView;
private Spinner languageSpinner;
private int languageSpinnerSelectedPosition = 0;
private Spinner subtitleSpinner;
private int subtitleSpinnerSelectedPosition = 0;
private StreamAdapter languageAdapter;
private StreamAdapter subtitleAdapter;
private FFmpegStreamInfo audioStream = null;
private FFmpegStreamInfo subtitleStream = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFormat(PixelFormat.RGB_565);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DITHER);
super.onCreate(savedInstanceState);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
this.getWindow().setBackgroundDrawable(null);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
if (isSurfaceView)
VideoActivity.this.setContentView(R.layout.video_surfaceview);
else
VideoActivity.this.setContentView(R.layout.video_view);
seekBar = (SeekBar) this.findViewById(R.id.seek_bar);
seekBar.setOnSeekBarChangeListener(this);
playPauseButton = (Button) this.findViewById(R.id.play_pause);
playPauseButton.setOnClickListener(this);
controlsView = this.findViewById(R.id.controls);
streamsView = this.findViewById(R.id.streams);
loadingView = this.findViewById(R.id.loading_view);
languageSpinner = (Spinner) this.findViewById(R.id.language_spinner);
subtitleSpinner = (Spinner) this.findViewById(R.id.subtitle_spinner);
languageAdapter = new StreamAdapter(this,android.R.layout.simple_spinner_item,new ArrayList<ffmpegstreaminfo>(), StreamAdapterType.AUDIO);
languageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
languageSpinner.setAdapter(languageAdapter);
languageSpinner.setOnItemSelectedListener(this);
subtitleAdapter = new StreamAdapter(this,android.R.layout.simple_spinner_item,new ArrayList<ffmpegstreaminfo>(), StreamAdapterType.SUBTITLE);
subtitleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
subtitleSpinner.setAdapter(subtitleAdapter);
subtitleSpinner.setOnItemSelectedListener(this);
try
{
videoView = this.findViewById(R.id.video_view);
//VideoActivity.this.mpegPlayer = new FFmpegPlayer((FFmpegDisplay)videoView, VideoActivity.this);
this.mpegPlayer = new FFmpegPlayer((FFmpegDisplay)videoView, this);
this.mpegPlayer.setMpegListener(this);
setDataSource();
//Too
}
catch (Exception e)
{
e.printStackTrace();
}
}
private static enum StreamAdapterType
{
AUDIO, SUBTITLE
};
private static class StreamAdapter extends ArrayAdapter<ffmpegstreaminfo>
{
private final StreamAdapterType adapterType;
public StreamAdapter(Context context, int textViewResourceId,List<ffmpegstreaminfo> objects, StreamAdapterType adapterType)
{
super(context, textViewResourceId, objects);
this.adapterType = adapterType;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
TextView view = (TextView) super.getView(position, convertView, parent);
FFmpegStreamInfo item = getItem(position);
Locale locale = item.getLanguage();
String formatter;
if (StreamAdapterType.AUDIO.equals(adapterType))
{
formatter = getContext().getString(R.string.language_spinner_drop_down);
}
else
{
formatter = getContext().getString(R.string.subtitle_spinner_drop_down);
}
String languageName = locale == null ? getContext().getString(R.string.unknown) : locale.getDisplayLanguage();
String text = String.format(formatter, languageName);
view.setText(text);
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
CheckedTextView view = (CheckedTextView) super.getDropDownView(position, convertView, parent);
FFmpegStreamInfo item = getItem(position);
Locale locale = item.getLanguage();
String languageName = locale == null ? getContext().getString(R.string.unknown) : locale.getDisplayLanguage();
view.setText(languageName);
return view;
}
}
@Override
protected void onPause() {
super.onPause();
};
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy()
{
super.onDestroy();
this.mpegPlayer.setMpegListener(null);
this.mpegPlayer.stop();
stop();
}
private void setDataSource()
{
Log.d("url", "checin");
HashMap params = new HashMap();
// set font for ass
File assFont = new File(Environment.getExternalStorageDirectory(),"Roboto.ttf");
params.put("ass_default_font_path", assFont.getAbsolutePath());
Intent intent = getIntent();
String url = intent.getStringExtra(AppConstants.VIDEO_PLAY_ACTION_EXTRA_URL);
Log.d("url", url);
if (url == null)
{
throw new IllegalArgumentException(String.format("\"%s\" did not provided", AppConstants.VIDEO_PLAY_ACTION_EXTRA_URL));
}
if (intent.hasExtra(AppConstants.VIDEO_PLAY_ACTION_EXTRA_ENCRYPTION_KEY))
{
params.put("aeskey", intent.getStringExtra(AppConstants.VIDEO_PLAY_ACTION_EXTRA_ENCRYPTION_KEY));
}
this.playPauseButton.setBackgroundResource(android.R.drawable.ic_media_play);
this.playPauseButton.setEnabled(true);
mPlay = false;
mpegPlayer.setDataSource(url, params, null, audioStream,subtitleStream);
}
@Override
public void onClick(View v)
{
int viewId = v.getId();
switch (viewId)
{
case R.id.play_pause:
resumePause();
return;
default:
throw new RuntimeException();
}
}
@Override
public void onFFUpdateTime(int currentTimeS, int videoDurationS, boolean isFinished)
{
if (!mTracking)
{
seekBar.setMax(videoDurationS);
seekBar.setProgress(currentTimeS);
}
if (isFinished)
{
new AlertDialog.Builder(this)
.setTitle(R.string.dialog_end_of_video_title)
.setMessage(R.string.dialog_end_of_video_message)
.setCancelable(true).show();
}
}
@Override
public void onFFDataSourceLoaded(FFmpegError err, FFmpegStreamInfo[] streams)
{
if (err != null) {
String format = getResources().getString(
R.string.main_could_not_open_stream);
String message = String.format(format, err.getMessage());
Builder builder = new AlertDialog.Builder(VideoActivity.this);
builder.setTitle(R.string.app_name)
.setMessage(message)
.setOnCancelListener(
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
VideoActivity.this.finish();
}
}).show();
return;
}
playPauseButton.setBackgroundResource(android.R.drawable.ic_media_play);
playPauseButton.setEnabled(true);
this.controlsView.setVisibility(View.VISIBLE);
this.streamsView.setVisibility(View.VISIBLE);
this.loadingView.setVisibility(View.GONE);
this.videoView.setVisibility(View.VISIBLE);
languageAdapter.clear();
subtitleAdapter.clear();
for (FFmpegStreamInfo streamInfo : streams) {
CodecType mediaType = streamInfo.getMediaType();
if (FFmpegStreamInfo.CodecType.AUDIO.equals(mediaType)) {
languageAdapter.add(streamInfo);
} else if (FFmpegStreamInfo.CodecType.SUBTITLE.equals(mediaType)) {
subtitleAdapter.add(streamInfo);
}
}
}
private void displaySystemMenu(boolean visible) {
if (Build.VERSION.SDK_INT >= 14) {
displaySystemMenu14(visible);
} else if (Build.VERSION.SDK_INT >= 11) {
displaySystemMenu11(visible);
}
}
@SuppressWarnings("deprecation")
@TargetApi(11)
private void displaySystemMenu11(boolean visible) {
if (visible) {
this.videoView.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
} else {
this.videoView.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
}
}
@TargetApi(14)
private void displaySystemMenu14(boolean visible) {
if (visible) {
this.videoView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
} else {
this.videoView
.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
}
public void resumePause() {
this.playPauseButton.setEnabled(false);
if (mPlay) {
mpegPlayer.pause();
} else {
mpegPlayer.resume();
displaySystemMenu(true);
}
mPlay = !mPlay;
}
@Override
public void onFFResume(NotPlayingException result) {
this.playPauseButton
.setBackgroundResource(android.R.drawable.ic_media_pause);
this.playPauseButton.setEnabled(true);
displaySystemMenu(false);
mPlay = true;
}
@Override
public void onFFPause(NotPlayingException err) {
this.playPauseButton
.setBackgroundResource(android.R.drawable.ic_media_play);
this.playPauseButton.setEnabled(true);
mPlay = false;
}
private void stop() {
this.controlsView.setVisibility(View.GONE);
this.streamsView.setVisibility(View.GONE);
this.loadingView.setVisibility(View.VISIBLE);
this.videoView.setVisibility(View.INVISIBLE);
}
@Override
public void onFFStop() {
}
@Override
public void onFFSeeked(NotPlayingException result)
{
// if (result != null)
// throw new RuntimeException(result);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
{
if (fromUser)
{
mpegPlayer.seek(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mTracking = true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mTracking = false;
}
private void setDataSourceAndResumeState() {
int progress = seekBar.getProgress();
setDataSource();
mpegPlayer.seek(progress);
mpegPlayer.resume();
}
@Override
public void onItemSelected(AdapterView<?> parentView,
View selectedItemView, int position, long id) {
FFmpegStreamInfo streamInfo = (FFmpegStreamInfo) parentView
.getItemAtPosition(position);
if (parentView == languageSpinner) {
if (languageSpinnerSelectedPosition != position) {
languageSpinnerSelectedPosition = position;
audioStream = streamInfo;
setDataSourceAndResumeState();
}
} else if (parentView == subtitleSpinner) {
if (subtitleSpinnerSelectedPosition != position) {
subtitleSpinnerSelectedPosition = position;
subtitleStream = streamInfo;
setDataSourceAndResumeState();
}
} else {
throw new RuntimeException();
}
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// if (parentView == languageSpinner) {
// audioStream = null;
// } else if (parentView == subtitleSpinner) {
// subtitleStream = null;
// } else {
// throw new RuntimeException();
// }
// play();
}
}
</ffmpegstreaminfo></ffmpegstreaminfo></ffmpegstreaminfo></ffmpegstreaminfo>and this is my logcat :-
01-22 15:29:15.302: E/AndroidRuntime(1560): FATAL EXCEPTION: main
01-22 15:29:15.302: E/AndroidRuntime(1560): java.lang.ExceptionInInitializerError
01-22 15:29:15.302: E/AndroidRuntime(1560): at java.lang.Class.newInstanceImpl(Native Method)
01-22 15:29:15.302: E/AndroidRuntime(1560): at java.lang.Class.newInstance(Class.java:1319)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.app.ActivityThread.access$600(ActivityThread.java:123)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.os.Looper.loop(Looper.java:137)
01-22 15:29:15.302: E/AndroidRuntime(1560): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-22 15:29:15.302: E/AndroidRuntime(1560): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 15:29:15.302: E/AndroidRuntime(1560): at java.lang.reflect.Method.invoke(Method.java:511)
01-22 15:29:15.302: E/AndroidRuntime(1560): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-22 15:29:15.302: E/AndroidRuntime(1560): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-22 15:29:15.302: E/AndroidRuntime(1560): at dalvik.system.NativeStart.main(Native Method)
01-22 15:29:15.302: E/AndroidRuntime(1560): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load ffmpeg: findLibrary returned null
01-22 15:29:15.302: E/AndroidRuntime(1560): at java.lang.Runtime.loadLibrary(Runtime.java:365)
01-22 15:29:15.302: E/AndroidRuntime(1560): at java.lang.System.loadLibrary(System.java:535)
01-22 15:29:15.302: E/AndroidRuntime(1560): at roman10.ffmpegTest.VideoBrowser.<clinit>(VideoBrowser.java:37)
01-22 15:29:15.302: E/AndroidRuntime(1560): ... 15 more
</clinit>