Adobe Connect videolarını mp4'e nasıl indirebilir veya dinlemeyi nasıl hızlandırabilirim?


2

Adobe Connect videolarını mp4'e nasıl indirebilir veya dinlemeyi nasıl hızlandırabilirim?

fikirler:

  1. Bilgisayarımı bir şekilde keserek videonun oynatılmasını hızlandırmak için CPU'da veya bu Chrome Flash Player uygulaması için zaman içinde daha hızlı geçiş yaparak daha hızlı çalışın. Bunun en azından video için mümkün olduğunu düşünüyorum ve ses için umarım bu durumu değiştirmez. İşletim sistemim, Debian tabanlı bir Linux sürümüdür.

  2. Her şeyi ekran kaydı, ancak bunun için çalışacak özel bir bilgisayar çalıştırmamı gerektireceği için hala sıkıcı olacaktı, aynı anda başka bir şey yapamadım.

  3. Videoları /output/filename.zip?download=zipURL’ye eklemek için mevcut kesmeyi kullanarak indirin . Ancak bu, 17 (veya daha fazla) sert dolu bir zip dosyasında .flvve .xmlayrı ses ve video içeren dosyalarla sonuçlanır . Bunları normal videoya dönüştürecek bir araç aradım ve yararlı bir şey bulamadım. Bu sinir bozucu ve sert dosyaların çalma için tarayıcı önbelleğinde indirilmiş olanlarla aynı olduğunu buldum.

  4. Böyle kullanma imkanını etkinleştirme gibi mp4 indir kilidini her profesöre sor /output/filename.mp4?download=mp4ile download=mp4oldukça sert bir zip dosyası daha. Ancak bunun, videolarının yönetici ayarlarında herkes tarafından herkese açık olarak erişebilmelerine izin vermelerini gerektirdiğinden korkuyorum, bu yüzden bunun kendileri için bir seçenek olduğundan emin değilim.


1
Bu Superuser için daha fazla bir soru, bu yüzden SU'ya gidip taşınmaya oy veriyorum.
Mark Buffalo,

Bir şekilde hareket ettirilebilir mi? Çapraz gönderme yapmak istemiyorum.
Guillaume Chevalier

Demek istediğim, nasıl hareket ettirilebilir?
Guillaume Chevalier

Bir daha yakın oy ve olması gerekiyor.
Mark Buffalo

Videoları izlemenin Connect sisteminin arka ucuna kaydedildiğini ve izlemeyi onaylamak için izlendiğini hayal ediyorum. Videoları indirmek muhtemelen bu onayı engeller. Videoların alınması için kurumun BT çalışanlarıyla iletişim kurmanız ve izlemekte olduğunuza dair eğitmenler ve kurs gözlemcileri ile iletişime geçmeniz gerekecektir.
music2myear

Yanıtlar:


0

Adobe Connect ID'nin p6vwxp2d0c2f olduğunu, yani URL’nin https://my.adobeconnect.com/p6vwxp2d0c2f olduğunu varsayalım . Soruda bahsettiğiniz gibi, /output/p6vwxp2d0c2f.zip?download=zipbir sürü ses ve video dosyası içeren bazı zip arşivi ve bazı .xml dosyaları indirmek için URL'nin sonuna ekleyebilirsiniz . Örneğin, https://my.adobeconnect.com/p6vwxp2d0c2e/output/p6vwxp2d0c2e.zip?download=zip şunları içerebilir:

 Directory of C:\Users\[...]\p6vwxp2d0c2f

02/09/2019  11:27 AM    <DIR>          .
02/09/2019  11:27 AM    <DIR>          ..
02/09/2019  11:00 AM        52,239,473 cameraVoip_1_11.flv
02/09/2019  11:00 AM         1,364,573 cameraVoip_1_11.xml
02/09/2019  11:00 AM         7,176,904 cameraVoip_1_15.flv
02/09/2019  11:00 AM           188,012 cameraVoip_1_15.xml
02/09/2019  11:00 AM             6,004 cameraVoip_1_3.flv
02/09/2019  11:00 AM             1,698 cameraVoip_1_3.xml
02/09/2019  11:00 AM        62,603,505 cameraVoip_1_7.flv
02/09/2019  11:00 AM         1,625,383 cameraVoip_1_7.xml
02/09/2019  11:00 AM             2,249 ftcontent1.flv
02/09/2019  11:00 AM             8,219 ftcontent1.xml
02/09/2019  11:00 AM            25,685 ftcontent13.flv
02/09/2019  11:00 AM            85,464 ftcontent13.xml
02/09/2019  11:00 AM           199,781 ftcontent5.flv
02/09/2019  11:00 AM           657,091 ftcontent5.xml
02/09/2019  11:00 AM           182,297 ftcontent9.flv
02/09/2019  11:00 AM           601,758 ftcontent9.xml
02/09/2019  11:00 AM             1,354 fttitle0.flv
02/09/2019  11:00 AM             3,272 fttitle0.xml
02/09/2019  11:00 AM             1,354 fttitle12.flv
02/09/2019  11:00 AM             3,298 fttitle12.xml
02/09/2019  11:00 AM             1,354 fttitle4.flv
02/09/2019  11:00 AM             3,290 fttitle4.xml
02/09/2019  11:00 AM             1,354 fttitle8.flv
02/09/2019  11:00 AM             3,298 fttitle8.xml
02/09/2019  11:00 AM         1,815,158 indexstream.flv
02/09/2019  11:00 AM         7,703,603 indexstream.xml
02/09/2019  11:00 AM         5,316,597 mainstream.flv
02/09/2019  11:00 AM        21,259,001 mainstream.xml
02/09/2019  11:00 AM       217,448,561 screenshare_2_10.flv
02/09/2019  11:01 AM         1,364,572 screenshare_2_10.xml
02/09/2019  11:01 AM        32,364,457 screenshare_2_14.flv
02/09/2019  11:01 AM           188,011 screenshare_2_14.xml
02/09/2019  11:01 AM           387,981 screenshare_2_2.flv
02/09/2019  11:01 AM             1,698 screenshare_2_2.xml
02/09/2019  11:01 AM       237,470,572 screenshare_2_6.flv
02/09/2019  11:01 AM         1,625,385 screenshare_2_6.xml
02/09/2019  11:01 AM                48 telephony-files.xml
02/09/2019  11:01 AM               691 transcriptstream.flv
02/09/2019  11:01 AM             2,391 transcriptstream.xml
              39 File(s)    653,935,396 bytes
               2 Dir(s)   1,590,358,016 bytes free
  • cameraVoip_ _ .xml, varsa ses + web kamerasını içerir.
  • screenshare_ _ .xml varsa ses + web kamerasını içerir.

Onları birleştirmek için şunları kullanabilirsiniz ffmpeg( ffmpegOliver Wang / Yannick Hold-Geoffroy / Aaron Hertzmann'dan emir aldım):

ffmpeg -i cameraVoip_1_11.flv -i screenshare_2_10.flv -c copy -map 0:a:0 -map 1:v:0 -shortest output.flv

nerede:

  • -map 0:a:0: sadece ses için kullanılacak ilk giriş dosyasını eşler.
  • -map 1:v:0: sadece video için kullanılacak ikinci giriş dosyasını eşler.
  • -shortest: cameraVoip_1_11.flv ve screenshare_2_10.flv aynı uzunlukta olmadığında ses veya videoyu kesin.

Web kamerası videosunu saklamak ve video ekranı paylaşımının bir köşesine yerleştirmek istiyorsanız:

ffmpeg -i cameraVoip_1_11.flv -i screenshare_2_10.flv  \
                         -filter_complex \
                         "color=s=1072x480:c=black [base]; [0:v] setpts=PTS-STARTPTS, scale=640x480 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=432x240 [upperright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=640" \
                         -c:v libx264 -c:a mp2 output.mkv

Haritalama İlişkin cameraVoip_ _ doğru screenshare_ için .xml _ .xml durumda birden fazla var:

Ses / ekran paylaşım videosunun ne zaman başladığını görmek için cameraVoip_ _ .xml / screenshare_ _ .xml dosyasına bakılabilir . Bu, screenshare_ _ .xml dosyasının doğru cameraVoip_ _ .xml ile eşlenmesini sağlar .

Örneğin, https://my.adobeconnect.com/p6vwxp2d0c2f/output/p6vwxp2d0c2f.zip?download=zip adresindeki cameraVoip_1_11.xml satır 21'den:

<String><![CDATA[Thu Feb 07 21:11:23 2019]]></String>

Aksi takdirde, başka bir yol cameraVoip_ sıralamak olabilir _ .xml / screenshare_ _ sonra, .xml ilk cameraVoip_ map _ ilk screenshare_ ile .xml _ .xml ikinci cameraVoip_ _ ilk screenshare_ ile .xml _ .xml vb Bazı durumlarda kırılabilir mi bilmiyorum (baktığım birkaç Adobe Connect kaydı için uygun görünüyor, ama belki de insanlar her zaman ekranları paylaşıyor olabilir).


İşlemi otomatikleştirmek için bir python betiği yazdım:

'''
Requirements:
- python 2.7 or 3
- wget, unzip, and ffmpeg accessible from command line.

Examples:
python connect2vid_v2.py https://my.adobeconnect.com/pqc06mcawjgn/  --output_filename=" Understanding how the Network impacts your service"

Please email Franck Dernoncourt <franck.dernoncourt@gmail.com> if you improve this code.
'''

import shlex
import subprocess
import os
import glob
import argparse
import sys
import re


def run_command(command):
    print('running command: {0}'.format(command))
    process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
    while True:
        output = process.stdout.readline()
        print(output.strip())
        if output == b'' and process.poll() is not None:
            print('Done running the command.')
            break
        if output:
            print(output.strip())
    rc = process.poll()
    return rc

def create_folder_if_not_exists(directory):
    '''
    Create the folder if it doesn't exist already.
    '''
    if not os.path.exists(directory):
        os.makedirs(directory)

def extract_connect_id(parser, args):
    '''
    Function written by Aaron Hertzmann
    '''
    # ----- extract the connectID or ZIP file  -----

    if len(args.URLorIDorZIP) < 1:
    #    print('Error: No Connect recording URL provided.')
        parser.print_help()
        sys.exit(0)

    if args.URLorIDorZIP[0][-4:].lower() == '.zip':
        sourceZIP = args.URLorIDorZIP[0]
        connectID = os.path.basename(sourceZIP[:-4])
    elif len(args.URLorIDorZIP[0]) == 12:
        connectID = args.URLorIDorZIP[0]
    else:
        s = args.URLorIDorZIP[0].split('/')
        connectID = None
        for i in range(len(s)-1):
            if 'adobeconnect.com' in s[i]:
                connectID = s[i+1]
                break
        if connectID == None:
            print("Error: couldn't parse URL")
            sys.exit(1)

    return connectID


def main():
    '''
    This is the main function
    '''

    # ================ parse the arguments (part of the parsing code was written by Aaron Hertzmann) ======================

    parser = argparse.ArgumentParser(description='Download an Adobe Connect recording and convert to a video file.')
    parser.add_argument('URLorIDorZIP', nargs='*', help='URL, code, or ZIP file for the Connect recording')
    parser.add_argument('--output_folder',default='output_videos',help='Folder for output files')
    parser.add_argument('--output_filename',default='noname', help='output_filename')
    args = parser.parse_args()

    #main_output_folder = "all_videos"
    main_output_folder = args.output_folder
    output_filename = args.output_filename
    output_filename =  re.sub(r'[^\w\s]','', output_filename)
    output_filename = output_filename.replace('@', '').strip()
    print('output_filename: {0}'.format(output_filename))
    connect_id = 'pul1pgdvpr87'
    connect_id = 'p6vwxp2d0c2f'
    connect_id = extract_connect_id(parser, args)
    video_filename = 'hello'
    video_filename = output_filename

    # ================ Download video  ======================
    output_folder = connect_id
    output_zip_filename = '{0}.zip'.format(connect_id)
    create_folder_if_not_exists(output_folder)
    create_folder_if_not_exists(main_output_folder)

    # Step 1: retrieve audio and video files
    connect_zip_url = 'https://my.adobeconnect.com/{0}/output/{0}.zip?download=zip'.format(connect_id)
    wget_command = 'wget -nc -O {1} {0}'.format(connect_zip_url, output_zip_filename) # -nc, --no-clobber: skip downloads that would download to existing files.
    run_command(wget_command)
    unzip_command = 'unzip -n {0} -d {1}'.format(output_zip_filename, output_folder) # -n: Unzip only newer files.
    run_command(unzip_command)

    # Step 2: create final video output
    cameraVoip_filepaths = []
    for filepaths in sorted(glob.glob(os.path.join(output_folder, 'cameraVoip_*.flv'))):
        cameraVoip_filepaths.append(filepaths)
    print('cameraVoip_filepaths: {0}'.format(cameraVoip_filepaths))

    screenshare_filepaths = []
    for filepaths in sorted(glob.glob(os.path.join(output_folder, 'screenshare_*.flv'))):
        screenshare_filepaths.append(filepaths)

    part = 0
    output_filepaths = []
    for cameraVoip_filepath, screenshare_filepath in zip(cameraVoip_filepaths, screenshare_filepaths):
        output_filepath = os.path.join(main_output_folder, '{0}_{1:04d}.flv'.format(video_filename, part))
        #output_filepath = '{0}_{1:04d}.flv'.format(video_filename, part)
        output_filepaths.append(output_filepath)
        # ffmpeg command from Oliver Wang / Yannick Hold-Geoffroy / Aaron Hertzmann
        conversion_command = 'ffmpeg -i "%s" -i "%s" -c copy -map 0:a:0 -map 1:v:0 -shortest -y "%s"'%(cameraVoip_filepath, screenshare_filepath, output_filepath)
        # -y: override output file if exists
        run_command(conversion_command)
        part += 1

    # Concatenate all videos into one single video
    # https://stackoverflow.com/questions/7333232/how-to-concatenate-two-mp4-files-using-ffmpeg
    video_list_filename = 'video_list.txt'
    video_list_file = open(video_list_filename, 'w')
    for output_filepath in output_filepaths:
        video_list_file.write("file '{0}'\n".format(output_filepath))
    video_list_file.close()
    final_output_filepath = '{0}.flv'.format(video_filename)
    # ffmpeg command from Oliver Wang / Yannick Hold-Geoffroy / Aaron Hertzmann
    conversion_command = 'ffmpeg -safe 0 -y -f concat -i "{1}" -c copy "{0}"'.format(final_output_filepath, video_list_filename)
    run_command(conversion_command)
    #os.remove(video_list_filename)

if __name__ == "__main__":
    main()
    #cProfile.run('main()') # if you want to do some profiling

Artık buna ihtiyacım olmayacağı için okumadım ya da okumamıştım. Cevabı ayrıntılı göründüğü gibi kabul ettim.
Guillaume Chevalier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.