- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从 .flv
转换 adobe connect 视频在下载的 zip 到 .mp4
.我已经完成了 this question and answer 中解释的步骤。 ,但是我得到 .flv
.zip 中这样组织的文件:
此外,我知道 ffmpeg 可以将视频和声音文件合并在一起,也可以直接从命令行连接生成的剪辑,这可能非常有用:https://www.labnol.org/internet/useful-ffmpeg-commands/28490/
我无法要求视频的所有者将其作为 .mp4
提供从 adobe connect 管理界面中。简而言之,我想在 VLC 中以 x2 速度收听这些视频(就像我在 YouTube 上听随机数学课时所做的那样 - 我打开 x2 速度)。以 x2 速度观看 adobe connect 视频所获得的时间量是巨大的。
我想我不是唯一一个愿意这样做的人。论坛上有很多关于下载 adobe connect 视频的问题,但是 .flv
与一些 .xml
混合的格式当主持人没有在 .mp4
中正确提供视频时,通常是一个杀手。 .
处理命令.flv
文件是一个难题。至少,我不想把聊天内容冲掉,留下一些类似的细节,这将有助于重建视频。任何自动化该过程的脚本都会很有用。
最佳答案
在我这边,ffmpeg 可以很好地处理 cameraVoip__.xml 文件。
我编写了这个 Python 脚本来将 Adobe Connect 记录导出为视频(代码仓库:https://github.com/Franck-Dernoncourt/adobe-connect-video-downloader):
'''
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"
The script assumes that the .zip files contains screenshare__.flv files, which contain the screen share.
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
关于flash - Adobe 连接视频 : FLV to MP4 (export, 转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102820/
我前段时间下载了一些flv视频,当观看它们时,它们会停在一个点上。如果我跳过那个点,他们会继续播放到另一个点,然后我可以再次跳过(循环一直持续到视频结束) 我已经试过了 avconv -i input
我想知道如何onMetaData FLV 文件中的标记看起来像。当我以纯文本形式打开 FLV 文件时,我得到以下信息: FLV[][][][][](TAB)[][][][][][][]8[][][][
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我对 FLV 流生成有疑问。我开发了 DVR 系统,它应该能够以 FLV 格式流式传输视频(在 Actionscript NetStream 上播放)。我从原始 H264 NAL 单元(0x00 0x
我有两个 FLV 文件,我想创建 1 个 FLV 文件,其中两个 FLV 彼此相邻显示。 例如:2 人用网络摄像头记录了自己。我想创建 1 个 FLV,在其中我看到第一个用户和第二个用户彼此相邻。 这
如何将 FLV 文件加载到影片剪辑(让我们将实例称为“flv PlaceHolder”)并开始播放该 FLV 文件..使用 ActionScript 3? 最佳答案 没有明确回答您的问题,但有许多开源
我想将 flv 与 mp3 合并,而无需在 php 中使用 ffmpeg 触摸/删除 flv 音频流。我尝试了许多命令,但没有任何帮助。这是我现在使用的命令。 /usr/bin/ffmpeg -i "
我有一个 FLV 文件,gstreamer playbin2 可以正常工作,但如果我尝试手动构建管道,结果是否定的。 谁能告诉我我的管道有什么问题?或者,如何在不使用 playbin2 的情况下构建管
我想使用 OpenCV 使用 H264 编解码器从网络摄像头流式传输实时视频,并将其转换为 FLV,然后通过 RTMP 服务器进行流式传输,并使用 flv.js 在浏览器中捕获流。基本上我一切正常,除
我需要以不同的速率显示 FLV 的帧。 这里有些例子: 用户将“擦洗”flv 框架(前/后) flv 需要在用户交互时以一半的速度播放。 目前我正在使用 LoaderMax它是用于加载和播放 FLV
我的平台是PHP JOOMLA MYSQL。我想将上传的不同格式的视频文件编码并加载为.flv。我希望在视频上传网站中实现此功能,用户可以在上传后在前端看到视频,而且我想在 mp4 和 flv 中为它
我在使用 actionscript 3.0(NetStream 类)播放一些快速时间文件时遇到问题。 我无法控制如何生成快速时间文件,但到目前为止,带有未压缩音频的文件似乎根本无法在 Flash Pl
我正在寻找一个 .NET 库或命令行工具,可以让我从 FLV 文件中提取缩略图(AVI 也不错,但不是必需的)。能让我提取电影中大约 15% 的帧就足够了。如果它可以提取几帧,假设每分钟一帧,并用这些
我需要一些关于从 1000 张图像创建 .flv 的建议。 我正在构建的应用程序将使用 flash 来显示 .flv 和具有 red5 rtmp 和 php5 的服务器。服务器将执行从 .jpg 到
使您能够从使用 Flash 播放器的托管站点下载视频的浏览器插件如何工作?他们如何获得 flv 视频的直接链接?是否可以在不实际运行 Flash 插件的情况下这样做? 最佳答案 我不确定具体的浏览器插
我正在尝试生成仅视频的 FLV 文件,我正在使用: libx264 + ffmpeg 30 fps(固定) 使用 VLC 2.0.1 和 flowplayer 进行播放 播放 FLV 时,帧速率似乎约
我正在寻找类似于 FFDshow 的库来帮助我将 .flv 转换为 .avi 格式并可能做更多的事情。我知道我可以通过 VLC 播放器执行此操作,但我宁愿使用 Python 手动执行(并且批量执行)。
我希望我的网站加入一些 FLV 文件中的网络摄像头记录(比如这个)。这需要在 Linux 上完成,无需用户输入。我该怎么做呢?为简单起见,我将使用相同的 flv 作为两个输入,希望获得连续两次播放相同
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visit the help center
hana flv player 是一个在 wordpress 中应用比较广泛的播放器插件, 该插件内置了5种媒体播放器,其播放文件以 flv 文件为主, 并将插入文件的按钮集成到 wordpress
我是一名优秀的程序员,十分优秀!