How to get media bitrate with Libvlc - libvlc

I'm using libvlc to play video files while downloading them. My problem is that libvlc_media_player_get_length returns nothing.
Also I thought about calculating an approximation using the bitrate and the file size, but I don't find how to get the bitrate with libvlc.
Is there a function for that ?
Thanks

I finaly find this way:
libvlc_media_stats_t stats;
if (libvlc_media_get_stats(vlcmedia, &stats))
{
long p=libvlc_media_player_get_time(vlcmediaplayer);
if (p)
bitrate=stats.i_read_bytes/p;
}

libvlc_media_tracks_get returns one or more structures containing track information.
If the track type is audio or video there is libvlc_audio_track_t.i_bitrate or libvlc_video_track_t.i_bitrate accordingly.
This API was added at version 2.1.0 of LibVLC, see http://git.videolan.org/?p=vlc.git;a=commit;h=cd5345a00009f2fc571c23509a025331ad24fc87.
VLC 2.1.0 was released in September 2013.

Related

libvlcsharp - iOS transcode not accepting media option parameters

I've been using the Xamarin libVLCSharp player for a while on iOS and Android and it works well. I've added a transcoding feature, but for some reason my libVLCSharp code works fine to transcode on Android (change codec, bitrate, fps), but the same transcode media options on iOS (iPhone 12 pro, iOS 14.4.2) produce no changes in the output video file compared to the input video file. I have attached the sample video file which I am attempting to transcode.
Here is my C# code (which contains the transcode media options that works on Android, but not iOS):
Core.Initialize();
_vlc = new LibVLC();
_player = new LibVLCSharp.Shared.MediaPlayer(_vlc);
_media = new Media(_vlc, _source, FromType.FromPath);
_media.AddOption ($":sout=#transcode{{vcodec=h264,vb=700000,acodec=aac,ab=96,channels=2,samplerate=44100,scodec=none}}:std{{access=file,mux=ts,dst={destination}}}");
var result = _player.Play(_media);
Any help or pointers on why this transcoding command is not producing any change in the output media file compared to the original would be greatly appreciated!
iOS Logfile
https://drive.google.com/file/d/1C0UGzE7hqCJYozTvubyK1BKWcZvG18VY/view
Sample file I'm using to test transcoding:
https://drive.google.com/file/d/1MvJKJnu2ii6XMANuWRkHLqmu78e9x03q/view
Try with
$":sout=#transcode{venc={module=avcodec{codec=h264_videotoolbox}, vcodec=h264},venc={module=vpx{quality-mode=2},vcodec=VP80},samplerate=44100,soverlay}:file{dst={destination},mux=ts}"
Feel free to remove unnecessary options, but from my findings this exact string should work.

iOS - Convert Audio Format (opus to mp3)

Recently I started to develop application that work with .opus file (Audio Format).
I am working with external SDK that can processor a mp3/wav file, unfortunately my local file is a .opus file and I need to convert it to mp3/wav format in order to process the file.
I read and research a lot around the network to find a solution,
I found the FFmpegWrapper library that can convert two type of Audio Format but when I try to convert .opus to .mp3/ , I get this error: opus codec not supported in WAVE format
I do not know what can be done, I'll be happy to help.
Any information about how to convert .Opus format to any other format will be appreciated.
Thanks
Have you tried using this pod: https://github.com/chrisballinger/Opus-iOS
You can use it to convert your Opus-encoded file to wav, then feed it into your SDK.

how to decode amr files using c#.net

I need to decode amr format to pcm format, which is later converted to mp3 using c#.net. But I am hardly finding any library to do so. It seems with NAudio it is not possible. Is there any c# based open source library which can be used to decode this format files?. Presently I am working on windows server 2012(64 bit).
NAudio Code:
public void Decode()
{
.....
var result= new MediaFoundationReader("..\\sample.amr");
// later converted to mp3 here
}
It looks you two guys are doing the same thing: How to convert amr files to mp3 using C#
You typically need to have a [third party] AMR decoder installed and integrated into Windows API (ACM, DirectShow, Media Foundation). Then you will use your favorite library around this API, such as NAudio.
Example of AMR decoder: MONOGRAM AMR Pack.
You're unlikely to find a C# decoder for AMR files. I'd recommend just finding a command-line utility that you can call to convert to PCM. For example, it looks like sox can be used to decode AMR.

wx.Sound : wav file unsupported

I'm doing a game with wx.python and when I try to add a background music using wx.Sound I got the following error:
Python error:
Sound file 'images/game.wav' is in unsupported format.
This is the code I use. I've seen this code many times on the web but none had
the same problem:
sound = wx.Sound("images/game.wav")
sound.Play(wx.SOUND_ASYNC)
Sounds like you need to save the WAV file in a different format. WAV files are not all created equal.
http://en.wikipedia.org/wiki/WAV#WAV_file_compression_codecs_compared
Why not use wx.media or maybe the mplayer widget? I have a tutorial on each of these:
http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/
http://www.blog.pythonlibrary.org/2010/04/20/wxpython-creating-a-simple-mp3-player/

Cloudfront issue streaming certain video files with VP6F and MPEG audio

Greetings fellow amazonians
We have certain f4v files from webtvinteractive.com that are not working from a streaming distribution. The cloudfront diagnostic tool indicates the file is not found but from a download distribution they play all ok fine ??
When inspecting the codec the only difference we see is that the audio is encoded as MPEG audio layer 1/2/3 (mpga) instead of AAC (mp4a)
Also noticed that VP6F is used but that is a Abobe proprietary codec so it should stream all ok from Flash Media Server
Here is the test tool url:
http://d1k5ny0m6d4zlj.cloudfront.net/diag/CFStreamingDiag.html
s3dbhkulzq9ndp.cloudfront.net
teaser.f4v (ok)
EM2_H264.f4v (NOT ok)
StreamLen Response: 0 ??
Received an answer from AWS team member
Posted by: RonS#AWS
Posted on: Oct 10, 2011 7:29 AM
https://forums.aws.amazon.com/message.jspa?messageID=284676
Hi, I downloaded both of your video objects and ran flvcheck (http://help.adobe.com/en_US/FlashMediaServer/3.5_AdminGuide/WS5b3ccc516d4fbf351e63e3d119f29261b7-7ffc.html) against them.
The teaser.f4v is apparently OK according to flvcheck, but EM2_H264 gets this:
11-10-10 07:10:25 Error: -26 File appears to be FLV with wrong extension. EM2_H264.f4v
If I rename the file to have a .flv extension, I get "Found backward timestamp".
I suspect the FMS software we're using will have the same complaints about that file that flvcheck does.
flvcheck is available for download here (you'll need to register with Adobe): http://www.adobe.com/products/flashmediaserver/tool_downloads/

Resources