Recherche avancée

Médias (91)

Autres articles (112)

Sur d’autres sites (11316)

  • ffmpeg concat two video and add watermark after concating video give me blank mp4 file on server but in local working perfectly why ?

    22 février 2018, par Jinal Somaiya

    i have two video i want to concat them and then add watermark to them but after command run give me blank mp4 file on server but in local working perfectly and on server two video concat perfectly but after that code is not running.

    My code is as follows.

    $videoFileName = rand('111111', '999999').'_'.time().'.'.$request->file('video1')->getClientOriginalExtension();
       $intermediateVideo1 = rand('1111111', '9999999').'_'.time().'.ts';
       $intermediateVideo2 = rand('1111111', '9999999').'_'.time().'.ts';
       $concatVideoFileName = rand('111111', '999999').'_'.time().'.'.$request->file('video1')->getClientOriginalExtension();

       exec('ffmpeg -i '.$request->file('video1').' -c copy -bsf:v h264_mp4toannexb -f mpegts '.$intermediateVideo1);
       exec('ffmpeg -i '.$request->file('video2').' -c copy -bsf:v h264_mp4toannexb -f mpegts '.$intermediateVideo2);
       exec('ffmpeg -i "concat:'.$intermediateVideo1.'|'.$intermediateVideo2.'" -c copy -bsf:a aac_adtstoasc '.public_path('uploads/videos/'.$concatVideoFileName));

       exec('ffmpeg -i '.public_path('uploads/videos/'.$concatVideoFileName).' -i '.storage_path("assets/image/watermark.png").' -filter_complex "overlay" '.public_path('uploads/videos/'.$videoFileName));


       File::delete($intermediateVideo1);
       File::delete($intermediateVideo2);
       File::delete('uploads/videos/'.$concatVideoFileName);

       return response()->download(public_path('uploads/videos/'.$videoFileName));

    output of intermediate video1 :

    ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the
    FFmpeg developers built with gcc 5.4.0 (Ubuntu
    5.4.0-6ubuntu1 16.04.4) 20160609 configuration : —prefix=/usr —extra-version=0ubuntu0.16.04.1 —build-suffix=-ffmpeg —toolchain=hardened —libdir=/usr/lib/x86_64-linux-gnu —incdir=/usr/include/x86_64-linux-gnu —cc=cc —cxx=g++ —enable-gpl —enable-shared —disable-stripping —disable-decoder=libopenjpeg —disable-decoder=libschroedinger —enable-avresample —enable-avisynth —enable-gnutls —enable-ladspa —enable-libass —enable-libbluray —enable-libbs2b —enable-libcaca —enable-libcdio —enable-libflite —enable-libfontconfig —enable-libfreetype —enable-libfribidi —enable-libgme —enable-libgsm —enable-libmodplug —enable-libmp3lame —enable-libopenjpeg —enable-libopus —enable-libpulse —enable-librtmp —enable-libschroedinger —enable-libshine —enable-libsnappy —enable-libsoxr —enable-libspeex —enable-libssh —enable-libtheora —enable-libtwolame —enable-libvorbis —enable-libvpx —enable-libwavpack —enable-libwebp —enable-libx265 —enable-libxvid —enable-libzvbi —enable-openal —enable-opengl —enable-x11grab —enable-libdc1394 —enable-libiec61883 —enable-libzmq —enable-frei0r —enable-libx264 —enable-libopencv libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 /
    56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 /
    53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ’storage/assets/video/vcs-ads.mp4’ : Metadata :
    major_brand : mp42
    minor_version : 0
    compatible_brands : mp42mp41isomavc1
    creation_time : 2018-01-29 00:23:59 Duration : 00:00:13.76, start : 0.000000, bitrate : 460 kb/s
    Stream #0:0(und) : Video : h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 640x360 [SAR 1:1 DAR 16:9], 327 kb/s, 29.97
    fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata :
    creation_time : 2018-01-29 00:23:59
    handler_name : L-SMASH Video Handler
    encoder : AVC Coding
    Stream #0:1(und) : Audio : aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata :
    creation_time : 2018-01-29 00:23:59
    handler_name : L-SMASH Audio Handler Output #0, mpegts, to ’1234567_12324.ts’ : Metadata :
    major_brand : mp42
    minor_version : 0
    compatible_brands : mp42mp41isomavc1
    encoder : Lavf56.40.101
    Stream #0:0(und) : Video : h264 (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 327 kb/s, 29.97 fps, 29.97 tbr,
    90k tbn, 30k tbc (default)
    Metadata :
    creation_time : 2018-01-29 00:23:59
    handler_name : L-SMASH Video Handler
    encoder : AVC Coding
    Stream #0:1(und) : Audio : aac (mp4a / 0x6134706D), 48000 Hz, stereo, 128 kb/s (default)
    Metadata :
    creation_time : 2018-01-29 00:23:59
    handler_name : L-SMASH Audio Handler Stream mapping : Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 412 fps=0.0 q=-1.0 Lsize= 898kB
    time=00:00:13.76 bitrate= 534.5kbits/s video:550kB audio:215kB
    subtitle:0kB other streams:0kB global headers:0kB muxing overhead :
    17.329643%

  • CJEU rules US cloud servers don’t comply with GDPR and what this means for web analytics

    17 juillet 2020, par Jake Thornton

    Breaking news : On July 16, 2020, the Court of Justice of the European Union (CJEU) has ruled that any cloud services hosted in the US are incapable of complying with the GDPR and EU privacy laws.

    In August 2016, the EU-US Privacy Shield framework came into effect, which “protects the fundamental rights of anyone in the EU whose personal data is transferred to the United States for commercial purposes. It allows the free transfer of data to companies that are certified in the US under the Privacy Shield.” – European Commission website

    However after today’s CJEU ruling, this Privacy Shield framework became invalidated due to significant differences between EU and US privacy laws.

    European privacy law activist Max Schrems summarises with “The Court clarified for a second time now that there is a clash between EU privacy law and US surveillance law. As the EU will not change its fundamental rights to please the NSA, the only way to overcome this clash is for the US to introduce solid privacy rights for all people – including foreigners. Surveillance reform thereby becomes crucial for the business interests of Silicon Valley.” – noyb website

    Today’s ruling also continues to spark concern into the legitimacy of US privacy laws which doesn’t fully protect people’s personal data when hosted on cloud servers based in the US.

    Web analytics hosted on US cloud servers don’t comply with GDPR

    How will this affect you ?

    For any business operating a website in the EU or if you have traffic coming to your website from EU visitors, you need to know what data you’re capturing and where this data is being stored.

    Here’s what Maja Smoltczyk (Berlin’s Commissioner for Data Protection and Freedom of Information) says :

    Controllers who transfer personal data to the USA, especially when using cloud-based services, are now required to switch immediately to service providers based in the European Union or a country that can
    ensure an adequate level of data protection. 
    The CJEU has made it refreshingly clear that data exports are not just financial decisions, as people’s fundamental rights must also be considered as a matter of priority. This ruling will put
    an end to the transfer of personal data to the USA
    for the sake of convenience or to cut costs.

    The controller is you (not Google) and by transferring data to the US you are at risk of being fined up to €20 million or 4% of your annual worldwide turnover for not being GDPR compliant. 

    It’s you who has to take action, not Google or other US companies. The court’s decision has immediate effect. While we assume there will be a grace period, companies should act now as finding and implementing alternatives solution can take a while. 

    Can no data be exported outside the EU anymore ?

    Data can still be exported outside the EU if an adequate level of data protection is guaranteed. This is the case for some trading partners of the EU such as New Zealand, Japan, Switzerland, and Canada. They have been certified by the EU as having a comparable level of privacy protection and therefore demonstrate adequacy at a country level.

    Necessary data can still flow to countries like the US too. This is for example the case when someone books a hotel in the US or when sending an email to someone in the US. Backups for disaster recovery and most other reasons don’t qualify as necessary.

    In all other cases you can still send data to countries like the US if you get explicit and informed consent from a user. Meaning the user has been informed about all possible risks of sending the data to the US and who can access the data (for example the US government).

    How this affects Google Analytics and Google Tag Manager users

    If your website is using Google Analytics, the safest bet is to deactivate it immediately. Otherwise, you must ask for consent from everyone who visits your website and inform them that the data will be processed in the United States under less strict privacy laws and all associated risks. If you don’t, you could be liable to privacy law infringements and face being fined for not complying with the GDPR. This also applies to Google Tag Manager as it transfers the IP address to the US which is considered personal data under the GDPR.

    Consent needs to be :

    • Freely given (the user must have a choice to not give consent and be able to opt out at any time) 
    • Informed (you need to disclose who is processing the data, what data is processed, where the data will be stored and how to opt out) 
    • Specific (consent is only valid for the specific informed purpose) 
    • Unambiguous (for example pre-ticked boxes or similar aren’t allowed)
    Web analytics that complies with GDPR

    If users don’t give you consent, you are not allowed to track them using Google Analytics or any other US based cloud solution.

    Update August 19, 2020

    A month after this ruling, over 100 complaints have been filed against websites for continuing to send data to the US via Google Analytics or Facebook, by the European privacy campaign group noyb. It’s clear Google and Facebook fall under US surveillance laws such as FISA 702 and the court clearly ruled these companies cannot rely on SCCs to transfer data to the US. Anyone still using Google Analytics is now at risk of facing fines and compensation damages

    How this affects Matomo users

    Our cloud servers are based in Germany.

    Matomo On-Premise users choose the location of their data themselves. If the servers are located in the EU nothing changes. If the servers are located outside the EU and the website targets EU users and tracks personal data, then you need to assess whether you are required to ask for tracking consent.

    If the data is stored inside the EU you can use Matomo without asking for any consent and you can continue tracking users even if they reject a consent screen which greatly increases the quality of your data.

    Want to avoid informing users about transferring their data to the US and all associated risks ?

    Try Matomo now for free ! No credit card required.

  • ffmpeg - how to use pipe with amovie parameter ?

    19 février 2018, par user1347009

    I am looking for a solution to overlay to mp3 files in which the longer one will be played in the background and the smaller one will continue to play like a loop with that.
    My current code is working without pipe :

    ffmpeg -i 'longer.mp3'  -filter_complex "amovie='small.mp3:loop=999'[s];[0][s]amix=duration=shortest" new.mp3

    This code works like a charm but what i want to achieve is this :

    curl "any-url-to-api-to-audio-file" | ffmpeg -i 'longer.mp3'  -filter_complex "amovie='pipe\:0:loop=999'[s];[0][s]amix=duration=shortest" new.mp3

    This code is not working and its giving me error as well,

    ffmpeg version N-89955-g118e1b0b33 Copyright (c) 2000-2018 the FFmpeg
    developers
    built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)
    configuration: --enable-openssl --enable-libmp3lame
    libavutil      56.  7.100 / 56.  7.100
    libavcodec     58.  9.100 / 58.  9.100
    libavformat    58.  7.100 / 58.  7.100
    libavdevice    58.  0.101 / 58.  0.101
    libavfilter     7. 11.101 /  7. 11.101
    libswscale      5.  0.101 /  5.  0.101
    libswresample   3.  0.101 /  3.  0.101
    Input #0, mp3, from 'morning_alarm.mp3':
    Duration: 00:00:28.06, start: 0.025057, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
    encoder         : LAME3.97
    Side data:
    replaygain: track gain - -9.200000, track peak - unknown, album gain - unknown, album peak - unknown,
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
    0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--    
    0101  5088  101  5088    0     0  28080      0 --:--:-- --:--:-- --:--:--  160k
    Stream mapping:
    Stream #0:0 (mp3) -> amix:input0
    amix -> Stream #0:0 (libmp3lame)
    Press [q] to stop, [?] for help
    [Parsed_amovie_0 @ 0x26c76c0] Failed to avformat_open_input 'pipe:0'
    [AVFilterGraph @ 0x26c3d80] Error initializing filter 'amovie' with args
    'pipe\:0:loop=999'
    Error reinitializing filters!
    Failed to inject frame into filter network: Invalid data found when
    processing input
    Error while processing the decoded data for stream #0:0
    Conversion failed!

    All i want to do is to overlay two audio files via command line in which 1st audio file will be longer and the second one will be smaller.
    The smaller one will be repeated like a loop till the longer one play.

    Please tell me how can i do that ?