Recherche avancée

Médias (91)

Autres articles (103)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

Sur d’autres sites (11827)

  • Having problem in video stegano, the hiden message always lost

    5 avril 2022, par user7025125

    friend, i am currently looking for a way to video stegano. I successfully in splitting frames from video file and hide messages inside them. But when i combine these frames into video and trying to extract info from the hiden video, i always failed. I guess here is problem with video compression.

    


    Here is my code.

    


    from stegano import lsb
from os.path import isfile, join

import time  # install time ,opencv,numpy modules
import cv2
import numpy as np
import math
import os
import shutil
from moviepy.editor import *
from subprocess import call, STDOUT


def split_string(s_str, count=10):
    per_c = math.ceil(len(s_str)/count)
    c_cout = 0
    out_str = ''
    split_list = []
    for s in s_str:
        out_str += s
        c_cout += 1
        if c_cout == per_c:
            split_list.append(out_str)
            out_str = ''
            c_cout = 0
    if c_cout != 0:
        split_list.append(out_str)
    return split_list


def frame_extraction(video):
    if not os.path.exists("./tmp"):
        os.makedirs("tmp")    
    temp_folder = "./tmp"
    print("[INFO] tmp directory is created")

    vidcap = cv2.VideoCapture(video)
    count = 0

    while True:
        success, image = vidcap.read()
        if not success:
            break
        cv2.imwrite(os.path.join(temp_folder, "{:d}.png".format(count)), image)
        count += 1
        print("[INFO] frame {} is extracted".format(count))


def encode_string(input_string, root="./tmp/"):
    split_string_list = split_string(input_string)
    for i in range(0, len(split_string_list)):
        f_name = "{}{}.png".format(root, i)
        secret_enc = lsb.hide(f_name, split_string_list[i])
        secret_enc.save(f_name)
        print("[INFO] frame {} holds {}".format(f_name, lsb.reveal(f_name)))


def decode_string(video):
    frame_extraction(video)
    secret = []
    root = "./tmp/"
    for i in range(len(os.listdir(root))):
        f_name = "{}{}.png".format(root, i)
        print("[INFO] frame {} is decoding".format(f_name))
        secret_dec = lsb.reveal(f_name)
        if secret_dec == None:
            break
        secret.append(secret_dec)
    print("[INFO] secret is {}".format("".join(secret)))
    print(''.join([i for i in secret]))
    # clean_tmp()


def clean_tmp(path="./tmp"):
    if os.path.exists(path):
        shutil.rmtree(path)
        print("[INFO] tmp files are cleaned up")


def main():
    input_string = input("Enter the input string: ")
    f_name = input("enter the name of video: ")

    # 从源文件分离出帧
    frame_extraction(f_name)
    
    # 分离文件路径和扩展名
    file_path, file_extraction = os.path.splitext(f_name)
    
    # 创建输出音频文件
    audio_path = file_path + "_temp.mp3"
    video = VideoFileClip(f_name)
    video.audio.write_audiofile(audio_path)

    # 加密字符
    encode_string(input_string)

    # 从tmp文件夹的图片创建没有声音的视频
    fps=30
    img_root = r"./tmp/"
    # fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    video_file_path = file_path + "_temp.avi"
    # 获取tmp文件夹第一张视频的尺寸
    img = cv2.imread(img_root + "0.png")
    height, width, layers = img.shape
    size=(width,height)
    videoWriter = cv2.VideoWriter(video_file_path,fourcc=fourcc,fps=fps,frameSize=size)
    for i in range(len(os.listdir(img_root))):
        frame = cv2.imread(img_root+str(i)+'.png')
        videoWriter.write(frame)
    videoWriter.release()

    # 合并视频和音频     audio_path   video_file_path
    video = VideoFileClip(video_file_path)
    audio_clip = AudioFileClip(audio_path)
    video = video.set_audio(audio_clip)
    video.write_videofile(file_path + "_hide.avi")
    clean_tmp()


if __name__ == "__main__":
    while True:
        print("1.Hide a message in video 2.Reveal the secret from video")
        print("any other value to exit")
        choice = input()
        if choice == '1':
            main()
        elif choice == '2':
            decode_string(input("enter the name of video with extension: "))
        else:
            break



    


    I have tried mp4, avi, wov format. But none of them worked.

    


    IF YOU HAVE ANY IDEA OR SUGGESTION GIVEN TO ME, I WOULD BE VERY GRATEFUL

    


  • FFMPEG frames lost

    4 juin 2018, par ST94

    I use ffmpeg to stream video from the source to destination. The workflow is as follows,
    At the source using ffmpeg, I stream live feed from a webcam using tcp and also save a copy of the live video as mp4 file locally and the command I use is

    $ ffmpeg -hide_banner -f v4l2 -i /dev/video0 -filter:v "fps=30" -c:v libx264 -f mpegts tcp://hostname:port -c:v libx264 /path/to/.mp4file

    `Input #0, video4linux2,v4l2, from '/dev/video0':
     Duration: N/A, start: 272402.639303, bitrate: 147456 kb/s
       Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
    Stream mapping:
     Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
     Stream #0:0 -> #1:0 (rawvideo (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    No pixel format specified, yuv422p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 0x55e421ec9560] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x55e421ec9560] profile High 4:2:2, level 3.0, 4:2:2 8-bit
    Output #0, mpegts, to 'tcp://172.16.0.169:50000':
     Metadata:
       encoder         : Lavf57.71.100
       Stream #0:0: Video: h264 (libx264), yuv422p, 640x480, q=-1--1, 30 fps, 90k tbn, 30 tbc
       Metadata:
         encoder         : Lavc57.89.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    No pixel format specified, yuv422p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 0x55e421ed5ea0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x55e421ed5ea0] profile High 4:2:2, level 3.0, 4:2:2 8-bit
    [libx264 @ 0x55e421ed5ea0] 264 - core 148 r2795 aaa9aa8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #1, mp4, to '/path/to/tcp.mp4':
     Metadata:
       encoder         : Lavf57.71.100
       Stream #1:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc
       Metadata:
         encoder         : Lavc57.89.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    [sana@localhost ~]$ frame=  978 fps= 30 q=-1.0 Lq=-1.0 size=    5062kB time=00:00:32.53 bitrate=1274.6kbits/s dup=514 drop=0 speed=0.991x    
    video:9174kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    [libx264 @ 0x55e421ec9560] frame I:463   Avg QP:19.03  size:  9994
    [libx264 @ 0x55e421ec9560] frame P:476   Avg QP:22.85  size:   137
    [libx264 @ 0x55e421ec9560] frame B:39    Avg QP:23.33  size:    19
    [libx264 @ 0x55e421ec9560] consecutive B-frames: 94.7%  0.0%  0.0%  5.3%
    [libx264 @ 0x55e421ec9560] mb I  I16..4: 60.4% 39.0%  0.5%
    [libx264 @ 0x55e421ec9560] mb P  I16..4:  0.2%  0.0%  0.0%  P16..4:  4.2%  0.3%  0.5%  0.0%  0.0%    skip:94.8%
    [libx264 @ 0x55e421ec9560] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%  L0:15.4% L1:84.6% BI: 0.0%
    [libx264 @ 0x55e421ec9560] 8x8 transform intra:38.9% inter:100.0%
    [libx264 @ 0x55e421ec9560] coded y,uvDC,uvAC intra: 34.9% 97.2% 83.8% inter: 0.0% 1.5% 0.0%
    [libx264 @ 0x55e421ec9560] i16 v,h,dc,p:  0% 31%  0% 69%
    [libx264 @ 0x55e421ec9560] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  3% 50% 16%  4%  2%  1%  6%  1% 17%
    [libx264 @ 0x55e421ec9560] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 52% 14%  4%  7%  3%  5%  1%  3%
    [libx264 @ 0x55e421ec9560] i8c dc,h,v,p: 55% 12% 25%  8%
    [libx264 @ 0x55e421ec9560] Weighted P-Frames: Y:0.2% UV:0.0%
    [libx264 @ 0x55e421ec9560] ref P L0: 96.7%  0.5%  2.7%  0.1%
    [libx264 @ 0x55e421ec9560] kb/s:1151.61
    [libx264 @ 0x55e421ed5ea0] frame I:463   Avg QP:19.02  size: 10007
    [libx264 @ 0x55e421ed5ea0] frame P:477   Avg QP:22.84  size:   140
    [libx264 @ 0x55e421ed5ea0] frame B:39    Avg QP:23.33  size:    19
    [libx264 @ 0x55e421ed5ea0] consecutive B-frames: 94.7%  0.0%  0.0%  5.3%
    [libx264 @ 0x55e421ed5ea0] mb I  I16..4: 60.4% 39.0%  0.5%
    [libx264 @ 0x55e421ed5ea0] mb P  I16..4:  0.3%  0.0%  0.0%  P16..4:  4.2%  0.3%  0.5%  0.0%  0.0%    skip:94.8%
    [libx264 @ 0x55e421ed5ea0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%  L0:15.4% L1:84.6% BI: 0.0%
    [libx264 @ 0x55e421ed5ea0] 8x8 transform intra:38.9% inter:100.0%
    [libx264 @ 0x55e421ed5ea0] coded y,uvDC,uvAC intra: 35.0% 97.2% 84.0% inter: 0.0% 1.6% 0.0%
    [libx264 @ 0x55e421ed5ea0] i16 v,h,dc,p:  0% 31%  0% 69%
    [libx264 @ 0x55e421ed5ea0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  3% 50% 16%  4%  2%  1%  6%  1% 17%
    [libx264 @ 0x55e421ed5ea0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 52% 14%  4%  7%  3%  5%  1%  3%
    [libx264 @ 0x55e421ed5ea0] i8c dc,h,v,p: 55% 12% 25%  8%
    [libx264 @ 0x55e421ed5ea0] Weighted P-Frames: Y:0.2% UV:0.0%
    [libx264 @ 0x55e421ed5ea0] ref P L0: 96.8%  0.5%  2.7%  0.1%
    [libx264 @ 0x55e421ed5ea0] kb/s:1152.39`

    At the receiver, I take the tcp url as the input and output it to an mp4 file.

    $ffmpeg -hide_banner -i tcp://hostname:port?listen out.mp4 /path/to/.mp4

    The output is

    `Input #0, mpegts, from 'tcp://172.16.0.169:50000?listen':
     Duration: N/A, start: 1.466667, bitrate: N/A
     Program 1
       Metadata:
         service_name    : Service01
         service_provider: FFmpeg
       Stream #0:0[0x100]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p(progressive), 640x480, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    No pixel format specified, yuv422p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 0x55c1d6bff0a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x55c1d6bff0a0] profile High 4:2:2, level 3.0, 4:2:2 8-bit
    [libx264 @ 0x55c1d6bff0a0] 264 - core 148 r2795 aaa9aa8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to '/home/sana/Desktop/receiver_new_mp4/tcp2.mp4':
     Metadata:
       encoder         : Lavf57.71.100
       Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc
       Metadata:
         encoder         : Lavc57.89.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    frame=  160 fps=0.0 q=26.0 size=     158kB time=00:00:03.36 bitrate= 384.5kbits/frame=  175 fps=168 q=26.0 size=     200kB time=00:00:03.86 bitrate= 424.8kbits/frame=  190 fps=119 q=26.0 size=     242kB time=00:00:04.36 bitrate= 453.3kbits/frame=  206 fps= 97 q=29.0 size=     292kB time=00:00:04.90 bitrate= 487.8kbits/frame=  222 fps= 84 q=29.0 size=     336kB time=00:00:05.43 bitrate= 506.5kbits/frame=  238 fps= 75 q=29.0 size=     378kB time=00:00:05.96 bitrate= 519.2kbits/frame=  254 fps= 68 q=29.0 size=     422kB time=00:00:06.50 bitrate= 531.6kbits/frame=  270 fps= 64 q=26.0 size=     457kB time=00:00:07.03 bitrate= 532.0kbits/frame=  286 fps= 60 q=29.0 size=     511kB time=00:00:07.56 bitrate= 552.8kbits/frame=  302 fps= 57 q=26.0 size=     562kB time=00:00:08.10 bitrate= 568.3kbits/frame=  318 fps= 54 q=26.0 size=     609kB time=00:00:08.63 bitrate= 577.9kbits/frame=  334 fps= 52 q=26.0 size=     674kB time=00:00:09.16 bitrate= 602.7kbits/frame=  350 fps= 51 q=29.0 size=     719kB time=00:00:09.70 bitrate= 606.8kbits/frame=  366 fps= 49 q=26.0 size=     770kB time=00:00:10.23 bitrate= 616.1kbits/frame=  382 fps= 48 q=29.0 size=     828kB time=00:00:10.76 bitrate= 630.3kbits/frame=  398 fps= 47 q=26.0 size=     872kB time=00:00:11.30 bitrate= 632.0kbits/frame=  414 fps= 46 q=26.0 size=     933kB time=00:00:11.83 bitrate= 645.9kbits/frame=  430 fps= 45 q=29.0 size=     987kB time=00:00:12.36 bitrate= 653.9kbits/frame=  446 fps= 44 q=26.0 size=    1033kB time=00:00:12.90 bitrate= 656.2kbits/frame=  462 fps= 43 q=29.0 size=    1098kB time=00:00:13.43 bitrate= 669.7kbits/frame=  478 fps= 43 q=29.0 size=    1132kB time=00:00:13.96 bitrate= 664.2kbits/frame=  548 fps= 47 q=-1.0 Lsize=    1536kB time=00:00:18.16 bitrate= 692.8kbits/s speed=1.56x    
    video:1531kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.377405%
    [libx264 @ 0x55c1d6bff0a0] frame I:115   Avg QP:18.12  size:  8204
    [libx264 @ 0x55c1d6bff0a0] frame P:203   Avg QP:21.62  size:  1893
    [libx264 @ 0x55c1d6bff0a0] frame B:230   Avg QP:21.99  size:  1039
    [libx264 @ 0x55c1d6bff0a0] consecutive B-frames: 41.1%  6.6%  7.1% 45.3%
    [libx264 @ 0x55c1d6bff0a0] mb I  I16..4: 67.6% 32.3%  0.1%
    [libx264 @ 0x55c1d6bff0a0] mb P  I16..4: 15.3%  3.1%  0.0%  P16..4: 28.6%  2.8%  2.0%  0.0%  0.0%    skip:48.3%
    [libx264 @ 0x55c1d6bff0a0] mb B  I16..4:  0.8%  0.3%  0.0%  B16..8: 26.2%  0.4%  0.0%  direct:13.5%  skip:58.7%  L0:65.0% L1:34.5% BI: 0.5%
    [libx264 @ 0x55c1d6bff0a0] 8x8 transform intra:28.4% inter:100.0%
    [libx264 @ 0x55c1d6bff0a0] coded y,uvDC,uvAC intra: 15.0% 89.4% 53.1% inter: 2.6% 28.7% 0.2%
    [libx264 @ 0x55c1d6bff0a0] i16 v,h,dc,p:  2% 49%  1% 47%
    [libx264 @ 0x55c1d6bff0a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  6% 57% 19%  2%  1%  1%  4%  1%  9%
    [libx264 @ 0x55c1d6bff0a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 59% 18%  1%  2%  1%  2%  0%  1%
    [libx264 @ 0x55c1d6bff0a0] i8c dc,h,v,p: 52% 17% 27%  4%
    [libx264 @ 0x55c1d6bff0a0] Weighted P-Frames: Y:17.7% UV:6.9%
    [libx264 @ 0x55c1d6bff0a0] ref P L0: 68.7%  0.7% 18.3% 10.6%  1.7%
    [libx264 @ 0x55c1d6bff0a0] ref B L0: 86.1% 10.6%  3.3%
    [libx264 @ 0x55c1d6bff0a0] ref B L1: 96.6%  3.4%
    [libx264 @ 0x55c1d6bff0a0] kb/s:686.10`

    From the ffmpeg processes running on both ends, if you notice the number of B frames at the receiver is more than the B frames at the sender. In other cases that I tried, the number of I as well as P frames are higher at the receiver than that at the sender.
    Can anyone please tell me why is it so ? I am not able to figure out why.

  • Pass double pointer parameter through P/Invoke when it is NULL

    1er août 2015, par BartMao

    I try to call FFMPEG method via P/Invoke

    int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);

    So my P/Invoke method defined like this :

    [DllImport("avformat-55", EntryPoint = "avformat_find_stream_info", CallingConvention = CallingConvention.Cdecl)]
       public extern static int AVFormatFindStreamInfo(IntPtr ic, ref IntPtr options);

    and I need pass an IntPtr.Zero for the options, so I call this way :

    var p = IntPtr.Zero;
    rst = AVFormatFindStreamInfo(context, ref p);

    and an AccessViolation exception throws.

    But when I remove the ref from the signature, and directly pass an IntPtr.Zero to it, it actually works.
    I think the signature with ref keyword is the right way, but I don’t know why the exception throws.