Recherche avancée

Médias (2)

Mot : - Tags -/documentation

Autres articles (63)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • Configuration spécifique pour PHP5

    4 février 2011, par

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

Sur d’autres sites (7619)

  • On-demand and seamless transcoding of individual HLS segments

    5 janvier 2024, par Omid Ariyan

    Background

    


    I've been meaning to implement on-demand transcoding of certain video formats such as ".mkv", ".wmv", ".mov", etc. in order to serve them on a media management server using ASP.NET Core 6.0, C# and ffmpeg.

    


    My Approach

    


    The approach I've decided to use is to serve a dynamically generated .m3u8 file which is simply generated using a segment duration of choice e.g. 10s and the known video duration. Here's how I've done it. Note that the resolution is currently not implemented and discarded :

    


    public string GenerateVideoOnDemandPlaylist(double duration, int segment)
{
   double interval = (double)segment;
   var content = new StringBuilder();

   content.AppendLine("#EXTM3U");
   content.AppendLine("#EXT-X-VERSION:6");
   content.AppendLine(String.Format("#EXT-X-TARGETDURATION:{0}", segment));
   content.AppendLine("#EXT-X-MEDIA-SEQUENCE:0");
   content.AppendLine("#EXT-X-PLAYLIST-TYPE:VOD");
   content.AppendLine("#EXT-X-INDEPENDENT-SEGMENTS");

   for (double index = 0; (index * interval) < duration; index++)
   {
      content.AppendLine(String.Format("#EXTINF:{0:#.000000},", ((duration - (index * interval)) > interval) ? interval : ((duration - (index * interval)))));
      content.AppendLine(String.Format("{0:00000}.ts", index));
   }

   content.AppendLine("#EXT-X-ENDLIST");

   return content.ToString();
}

[HttpGet]
[Route("stream/{id}/{resolution}.m3u8")]
public IActionResult Stream(string id, string resolution)
{
   double duration = RetrieveVideoLengthInSeconds();
   return Content(GenerateVideoOnDemandPlaylist(duration, 10), "application/x-mpegURL", Encoding.UTF8);
}


    


    Here's an example of how the .m3u8 file looks like :

    


    #EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-INDEPENDENT-SEGMENTS
#EXTINF:10.000000,
00000.ts
#EXTINF:3.386667,
00001.ts
#EXT-X-ENDLIST


    


    So the player would ask for 00000.ts, 00001.ts, etc. and the next step is to have them generated on demand :

    


    public byte[] GenerateVideoOnDemandSegment(int index, int duration, string path)&#xA;{&#xA;   int timeout = 30000;&#xA;   int totalWaitTime = 0;&#xA;   int waitInterval = 100;&#xA;   byte[] output = Array.Empty<byte>();&#xA;   string executable = "/opt/homebrew/bin/ffmpeg";&#xA;   DirectoryInfo temp = Directory.CreateDirectory(System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetRandomFileName()));&#xA;   string format = System.IO.Path.Combine(temp.FullName, "output-%05d.ts");&#xA;&#xA;   using (Process ffmpeg = new())&#xA;   {&#xA;      ffmpeg.StartInfo.FileName = executable;&#xA;&#xA;      ffmpeg.StartInfo.Arguments = String.Format("-ss {0} ", index * duration);&#xA;      ffmpeg.StartInfo.Arguments &#x2B;= String.Format("-y -t {0} ", duration);&#xA;      ffmpeg.StartInfo.Arguments &#x2B;= String.Format("-i \"{0}\" ", path);&#xA;      ffmpeg.StartInfo.Arguments &#x2B;= String.Format("-c:v libx264 -c:a aac ");&#xA;      ffmpeg.StartInfo.Arguments &#x2B;= String.Format("-segment_time {0} -reset_timestamps 1 -break_non_keyframes 1 -map 0 ", duration);&#xA;      ffmpeg.StartInfo.Arguments &#x2B;= String.Format("-initial_offset {0} ", index * duration);&#xA;      ffmpeg.StartInfo.Arguments &#x2B;= String.Format("-f segment -segment_format mpegts {0}", format);&#xA;&#xA;      ffmpeg.StartInfo.CreateNoWindow = true;&#xA;      ffmpeg.StartInfo.UseShellExecute = false;&#xA;      ffmpeg.StartInfo.RedirectStandardError = false;&#xA;      ffmpeg.StartInfo.RedirectStandardOutput = false;&#xA;&#xA;      ffmpeg.Start();&#xA;&#xA;      do&#xA;      {&#xA;         Thread.Sleep(waitInterval);&#xA;         totalWaitTime &#x2B;= waitInterval;&#xA;      }&#xA;      while ((!ffmpeg.HasExited) &amp;&amp; (totalWaitTime &lt; timeout));&#xA;&#xA;      if (ffmpeg.HasExited)&#xA;      {&#xA;         string filename = System.IO.Path.Combine(temp.FullName, "output-00000.ts");&#xA;&#xA;         if (!File.Exists(filename))&#xA;         {&#xA;            throw new FileNotFoundException("Unable to find the generated segment: " &#x2B; filename);&#xA;         }&#xA;&#xA;         output = File.ReadAllBytes(filename);&#xA;      }&#xA;      else&#xA;      {&#xA;         // It&#x27;s been too long. Kill it!&#xA;         ffmpeg.Kill();&#xA;      }&#xA;   }&#xA;&#xA;   // Remove the temporary directory and all its contents.&#xA;   temp.Delete(true);&#xA;&#xA;   return output;&#xA;}&#xA;&#xA;[HttpGet]&#xA;[Route("stream/{id}/{index}.ts")]&#xA;public IActionResult Segment(string id, int index)&#xA;{&#xA;   string path = RetrieveVideoPath(id);&#xA;   return File(GenerateVideoOnDemandSegment(index, 10, path), "application/x-mpegURL", true);&#xA;}&#xA;</byte>

    &#xA;

    So as you can see, here's the command I use to generate each segment incrementing -ss and -initial_offset by 10 for each segment :

    &#xA;

    ffmpeg -ss 0 -y -t 10 -i "video.mov" -c:v libx264 -c:a aac -segment_time 10 -reset_timestamps 1 -break_non_keyframes 1 -map 0 -initial_offset 0 -f segment -segment_format mpegts /var/folders/8h/3xdhhky96b5bk2w2br6bt8n00000gn/T/4ynrwu0q.z24/output-%05d.ts&#xA;

    &#xA;

    The Problem

    &#xA;

    Things work on a functional level, however the transition between segments is slightly glitchy and especially the audio has very short interruptions at each 10 second mark. How can I ensure the segments are seamless ? What can I improve in this process ?

    &#xA;

  • Marketing Touchpoints : Examples, KPIs, and Best Practices

    11 mars 2024, par Erin

    The customer journey is rarely straightforward. Rather, each stage comprises numerous points of contact with your brand, known as marketing touchpoints. And each touchpoint is equally important to the customer experience. 

    This article will explore marketing touchpoints in detail, including how to analyse them with attribution models and which KPIs to track. It will also share tips on incorporating these touchpoints into your marketing strategy. 

    What are marketing touchpoints ? 

    Marketing touchpoints are the interactions that take place between brands and customers throughout the latter’s journey, either online or in person. 

    Omni-channel digital marketing illustration

    By understanding how customers interact with your brand before, during and after a purchase, you can identify the channels that contribute to starting, driving and closing buyer journeys. Not only that, but you’ll also learn how to optimise the customer experience. This can also help you : 

    • Promote customer loyalty through increased customer satisfaction
    • Improve your brand reputation and foster a more positive perception of your brand, supported by social proof 
    • Build brand awareness among prospective customers 
    • Reconnect with current customers to drive repeat business

    According to a 2023 survey, social media and video-sharing platforms are the leading digital touchpoints among US consumers.

    With the customer journey divided into three stages — awareness, consideration, and decision — we can group these interactions into three touchpoint segments, depending on whether they occur before, during or after a purchase. 

    Touchpoints before a purchase

    Touchpoints before a purchase are those initial interactions between potential customers and brands that occur during the awareness stage — before they’ve made a purchase decision. 

    Here are some key touchpoints at the pre-purchase stage : 

    • Customer reviews, forums, and testimonials 
    • Social media posts
    • Online ads 
    • Company events and product demos
    • Other digital touchpoints, like video content, blog posts, or infographics
    • Peer referral 

    In PwC’s 2024 Global Consumer Insights Pulse Survey, 54% of consumers listed search engines as their primary source of pre-purchase information, followed by Amazon (35%) and retailer websites (33%). 

    Here are the survey’s findings in Western Europe, specifically : 

    Social channels are another major pre-purchase touchpoint ; 25% of social media users aged 18 to 44 have made a purchase through a social media app over the past three months. 

    Touchpoints during a purchase

    Touchpoints during a purchase occur when the prospective customer has made their purchase decision. It’s the beginning of a (hopefully) lasting relationship with them. 

    It’s important to involve both marketing and sales teams here — and to keep track of conversion metrics

    Here are the main touchpoints at this stage : 

    • Company website pages 
    • Product pages and catalogues 
    • Communication between customers and sales reps 
    • Product packaging and labelling 
    • Point-of-sale (POS) — the final touchpoint the prospective customer will reach before making the final purchasing decision 

    Touchpoints after a purchase

    You can use touchpoints after a purchase to maintain a positive relationship and keep current customers engaged. Examples of touchpoints that contribute to a good post-purchase experience for the customer include the following : 

    • Thank-you emails 
    • Email newsletters 
    • Customer satisfaction surveys 
    • Cross-selling emails 
    • Renewal options 
    • Customer loyalty programs

    Email marketing remains significant across all touchpoint segments, with 44% of CMOs agreeing that it’s essential to their marketing strategy — and it also plays a particularly important role in the post-purchase experience. For 61.1% of marketing teams, email open rates are higher than 20%.

    Sixty-nine percent of consumers say they’ve stopped doing business with a brand following a bad experience, so the importance of customer service touchpoints shouldn’t be overlooked. Live chat, chatbots, self-service resources, and customer service teams are integral to the post-purchase experience.

    Attribution models : Assigning value to marketing touchpoints 

    Determining the most effective touchpoints — those that directly contribute to conversions — is a process known as marketing attribution. The goal here is to identify the specific channels and points of contact with prospective customers that result in revenue for the company.

    Illustration of the marketing funnel stages

    You can use these insights to understand — and maximise — marketing return on investment (ROI). Otherwise, you risk allocating your budget to the wrong channels. 

    It’s possible to group attribution models into two categories — single-touch and multi-touch — depending on whether you assign value to one or more contributing touchpoints.

    Single-touch attribution models, where you’re giving credit for the conversion to a single touchpoint, include the following :

    • First-touch attribution : This assigns credit for the conversion to the first interaction a customer had with a brand ; however, it fails to consider lower-funnel touchpoints.
    • Last-click attribution : This focuses only on bottom-of-funnel marketing and credits the last interaction the customer had with a brand before completing a purchase.
    • Last non-direct : Credits the touchpoint immediately preceding a direct touchpoint with all the credit.

    Multi-touch attribution models are more complex and distribute the credit for conversion across multiple relevant touchpoints throughout the customer journey :

    • Linear attribution : The simplest multi-touch attribution model assigns equal values to all contributing touchpoints.
    • Position-based or U-shaped attribution : This assigns the greatest value to the first and last touchpoint — with 40% of the conversion credit each — and then divides the remaining 20% across all the other touchpoints.
    • Time-decay attribution : This model assigns the most credit to the customer’s most recent interactions with a brand, assuming that the touchpoints that occur later in the journey have a bigger impact on the conversion.

    Consider the following when choosing the most appropriate attribution model for your business :

    • The length of your typical sales cycle
    • Your marketing goals : increasing awareness, lead generation, driving revenue, etc.
    • How many stages and touchpoints make up your sales funnel

    Sometimes, it even makes sense to measure marketing performance using more than one attribution model.

    With the sheer volume of data that’s constantly generated across numerous online touchpoints, from your website to social media channels, it’s practically impossible to collect and analyse it manually.

    You’ll need an advanced web analytics platform to identify key touchpoints and assign value to them.

    Matomo’s Marketing Attribution feature can accurately measure the performance of different touchpoints to ensure that you’re allocating resources to the right channels. This is done in a compliant manner, without the need of data sampling or requiring cookie consent screens (excluding in Germany and the UK), ensuring both accuracy and privacy compliance.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    Customer journey KPIs for measuring marketing campaign performance 

    Measuring the impact of different touchpoints on marketing campaign performance can help you understand how customer interactions drive conversions — and how to optimise your future efforts. 

    Illustration of customer journey concept

    Clearly, this is not a one-time effort. You should continuously reevaluate the crucial touchpoints that drive the most engagement at different stages of the customer journey. 

    Web analytics platforms can provide valuable insights into ever-changing consumer behaviours and trends and help you make informed decisions. 

    At the moment, Google is the most popular solution in the web analytics industry, with a combined market share of more than 70%

    However, if privacy, data accuracy, and GDPR compliance are a priority for you, Matomo is an alternative worth considering

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    KPIs to track before a purchase 

    During the pre-purchase stage, focus on the KPIs that measure the effectiveness of marketing activities across various online touchpoints — landing pages, email campaigns, social channels and ad placement on SERPs, for instance. 

    KPIs to track during the consideration stage include the following : 

    • Cost-per-click (CPC) : The CPC, the total cost of paid online advertising divided by the number of clicks those ads get, indicates whether you’re getting a good ROI. In the UK, the average CPC for search advertising is $1.22. Globally, it averages $0.62.
    • Engagement rate : The engagement rate, which is the total number of interactions divided by the number of followers, is useful for measuring the performance of social media touchpoints. Customer engagement also applies to other channels, like tracking average time on-page, form conversions, bounce rates, and other website interactions. 
    • Click-through rate (CTR) : The CTR — or the number of clicks your ads receive compared to the number of times they’re shown — helps you measure the performance of CTAs, email newsletters and pay-per-click (PPC) advertising.

    KPIs to track during a purchase 

    As a potential customer moves further down the sales funnel and reaches the decision stage, where they’re ready to make the choice to purchase, you should be tracking the following : 

    • Conversion rate : This is the percentage of leads that convert into customers by completing the desired action relative to the total number of website visitors. It shows you whether you’re targeting the right people and providing a frictionless checkout experience.
    • Sales revenue : This refers to the quantity of products sold multiplied by the product’s price. It helps you track the company’s ability to generate profit. 
    • Cost per conversion : This KPI is the total cost of online advertising in relation to the number of conversions. It measures the effectiveness of different marketing channels and the costs of converting prospective customers into buyers. It also forecasts future ad spend.

    KPIs to track after purchase 

    At the post-purchase stage, your priority should be gathering feedback : 

    Customer feedback surveys are great for collecting insights into customers’ post-purchase experience, opinions about your brand, products and services, and needs and expectations. 

    In addition to measuring customer satisfaction, these insights can help you identify points of friction, forecast future growth and revenue and spot customers at risk of churning. 

    Focus on the following customer satisfaction and retention metrics : 

    • Customer Satisfaction Score (CSAT) : This metric, which is gathered through customer satisfaction surveys, helps you gauge satisfaction levels. After all, 77% of consumers consider great customer service an important driver of brand loyalty.
    • Net Promoter Score (NPS) : Based on single-question customer surveys, NPS indicates how likely a customer is to recommend your business.
    • Customer Lifetime Value (CLV) : The CLV is the profit you can expect to generate from one customer throughout their relationship with your company. 
    • Customer Health Score (CHS) : This score can assess how “healthy” the customer’s relationship with your brand is and identify at-risk customers.

    Marketing touchpoints : Tips and best practices 

    Customer experience is more important today than ever. 

    Illustration of marketing funnel optimisation

    Salesforce’s 2022 State of the Connected Consumer report indicated that, for 88% of customers, the experience the brand provides is just as important as the product itself. 

    Here’s how you can build your customer touchpoint strategy and use effective touchpoints to improve customer satisfaction, build a loyal customer base, deliver better digital experiences and drive growth : 

    Understand the customer’s end-to-end experience 

    The typical customer’s journey follows a non-linear path of individual experiences that shape their awareness and brand preference. 

    Seventy-three percent of customers expect brands to understand their needs. So, personalising each interaction and delivering targeted content at different touchpoint segments — supported by customer segmentation and tools like Matomo — should be a priority. 

    Try to put yourself in the prospective customer’s shoes and understand their motivation and needs, focusing on their end-to-end experience rather than individual interactions. 

    Create a customer journey map 

    Once you understand how prospective customers interact with your brand, it becomes easier to map their journey from the pre-purchase stage to the actual purchase and beyond. 

    By creating these visual “roadmaps,” you make sure that you’re delivering the right content on the right channels at the right times and to the right audience — the key to successful marketing.

    Identify best-performing digital touchpoints 

    You can use insights from marketing attribution to pinpoint areas that are performing well. 

    By analysing the data provided by Matomo’s Marketing Attribution feature, you can determine which digital touchpoints are driving the most conversions or engagement, allowing you to focus your resources on optimising these channels for even greater success. 

    This targeted approach helps maximise the effectiveness of your marketing efforts and ensures a higher return on investment.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    Discover key marketing touchpoints with Matomo 

    The customer’s journey rarely follows a direct route. If you hope to reach more customers and improve their experience, you’ll need to identify and manage individual marketing touchpoints every step of the way.

    While this process looks different for every business, it’s important to remember that your customers’ experience begins long before they interact with your brand for the first time — and carries on long after they complete the purchase. 

    In order to find these touchpoints and measure their effectiveness across multiple marketing channels, you’ll have to rely on accurate data — and a powerful web analytics tool like Matomo can provide those valuable marketing insights. 

    Try Matomo free for 21-days. No credit card required.

  • ffmpeg and streaming video - frame time issue

    6 mai 2014, par 4ntoine

    I’ve compiled ffmpeg-android (https://github.com/appunite/AndroidFFmpeg) and it works for files.
    The problem is that it shows nothing for network streams (both rtmp and hls) as frame timestamp is too big and it seems to be not from video beginning (as for file). Then it waits for the first frame time which for network stream is too big :

    player_decode_video copying...
    05-05 18:11:26.994: INFO/player.c(16998): player_decode_video Decoded video frame: 568.233000, time_base: 51140970
    05-05 18:11:26.994: INFO/player.c(16998): player_wait_for_frame[0] start
    ...
    05-05 18:11:30.587: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (0.000977)
    05-05 18:11:30.587: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 568232023
    05-05 18:11:31.088: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:31.088: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (0.501542)
    05-05 18:11:31.088: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 567731458
    05-05 18:11:31.588: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:31.588: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (1.002778)
    05-05 18:11:31.588: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 567230222
    05-05 18:11:32.089: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:32.089: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (1.504563)
    05-05 18:11:32.089: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 566728437
    05-05 18:11:32.590: INFO/player.c(16998): player_wait_for_frame[0] timeout
    05-05 18:11:32.590: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (568.233000) - (2.005708)
    05-05 18:11:32.590: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: 566227292

    also i can’t figure out what timestamp for frame for network stream means (for file frames it’s a time from video beginning)

    for file it’s clear : time_base is frame number and timestamp is time from video beginning and it plays the files :

    player_decode_video Decoded video frame: 0.320000, time_base: 8
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.320000) - (0.344337)
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -24337
    05-05 18:32:42.344: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.344: INFO/player.c(16998): player_update_time: 0.346169/4.000000
    05-05 18:32:42.344: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.344: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.344: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.344: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.344: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.344: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.344: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.344: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.425: INFO/player.c(16998): player_decode_video Decoded video frame: 0.360000, time_base: 9
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.360000) - (0.427994)
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -67994
    05-05 18:32:42.425: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.425: INFO/player.c(16998): player_update_time: 0.429214/4.000000
    05-05 18:32:42.425: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.425: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.425: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.425: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.425: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.435: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.435: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.435: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video Decoded video frame: 0.400000, time_base: 10
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.400000) - (0.494742)
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -94742
    05-05 18:32:42.495: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.495: INFO/player.c(16998): player_update_time: 0.495993/4.000000
    05-05 18:32:42.495: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.495: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.495: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.495: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.495: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.495: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.555: INFO/player.c(16998): player_decode_video Decoded video frame: 0.440000, time_base: 11
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0] start
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0 = Video] = (0.440000) - (0.556698)
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0] Waiting for frame: sleeping: -116698
    05-05 18:32:42.555: INFO/player.c(16998): player_wait_for_frame[0] finish[0]
    05-05 18:32:42.555: INFO/player.c(16998): player_update_time: 0.557858/4.000000
    05-05 18:32:42.555: INFO/player.c(16998): player_decode waiting for frame[0]
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream Read frame
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream looking for stream
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream stream found [0]
    05-05 18:32:42.555: INFO/player.c(16998): player_read_from_stream waiting for queue
    05-05 18:32:42.555: INFO/player.c(16998): player_decode decoding frame[0]
    05-05 18:32:42.555: INFO/player.c(16998): player_decode_video decoding
    05-05 18:32:42.555: INFO/player.c(16998): player_decode_video copy wait
    05-05 18:32:42.565: INFO/player.c(16998): Format: WINDOW_FORMAT_RGBA_8888
    05-05 18:32:42.565: INFO/player.c(16998): Buffer: width: 1280, height: 720, stride: 1280
    05-05 18:32:42.565: INFO/player.c(16998): player_decode_video copying...
    05-05 18:32:42.625: INFO/player.c(16998): player_decode_video Decoded video frame: 0.480000, time_base: 12

    So what is the meaning of timestamp for stream and what should i change to make it playing streams (rtmp/hls - its can be opened now but it wait for frame time which is far in the future) ?

    UPDATE :

       int64_t pts = av_frame_get_best_effort_timestamp(frame);
    if (pts == AV_NOPTS_VALUE) {
       pts = 0;
    }
    int64_t time = av_rescale_q(pts, stream->time_base, AV_TIME_BASE_Q);
    LOGI(10,
           "player_decode_video Decoded video frame: %f, time_base: %" SCNd64,
           time/1000000.0, pts);
    player_wait_for_frame(player, time, stream_no);

    it extracts time which is far in future :

    player_wait_for_frame[0 = Video] = (568.233000) - (0.000977)

    Is it correct ?