我想为youtube-dl&ffmpeg转换的mp3添加标签:
youtube-dl -o'/ Output/qpgTC9MDx1o.mp3'qpgTC9MDx1o -f bestaudio --extract-audio --metadata-from-title"%(artist)s - %(title)s"2>&1
我在输出结果中有这个错误:
[youtube] qpgTC9MDx1o:正在下载网页[youtube] qpgTC9MDx1o:提取视频信息[youtube] qpgTC9MDx1o:正在下载js player en_US-vfluGO3jj [youtube] qpgTC9MDx1o:正在下载DASH清单[download] /var/www/vhosts/mp3-y.com/ httpdocs/Mp3_Output/quick-mp3.com-JALAL-EL-HAMDAOUI-2007-ARRASSIATES-VOL2-F1P-9CDoxlQ.mp3已经下载[下载] 100.4 of 13.43MiB警告:qpgTC9MDx1o:写DASH m4a.只有一些玩家支持这个容器.安装ffmpeg或avconv以自动修复此问题.[fromtitle]解析艺术家:Maroon 5 [fromtitle]解析标题:Animals ERROR:未找到ffprobe或avprobe.请安装一个.
基于这篇文章,似乎可以使用FFMPEG来检测视频中的场景变化:http: //www.luckydinosaur.com/u/ffmpeg-scene-change-detector
现在我有一个显示书籍文本的视频,当说出文本(单词或句子)时,它会突出显示.像这本有声读物的东西:https://youtu.be/lA7L6ZNVKjc
我需要知道文本突出显示时的时间戳(因此场景更改),这将允许我在我的YouTube视频上添加时间戳标签,这样听众就可以更轻松地浏览有声读物.
执行此操作的神奇命令行是什么?
非常感谢你!
我试图弄清楚视频中是否有音频,以便使用ffmpeg提取mp3.当视频不包含音频通道时,ffmpeg会创建一个空的mp3文件,我用它来判断视频中是否存在音频.我确信有更好的方法来识别视频中是否存在音频.avprobe会帮忙吗?有人能指出我的资源或可能是解决方案吗?
编辑:令人惊讶的是,运行最新版本的ffprobe的服务器上的相同命令无法运行.它抛出一个错误说
无法识别的选项'select_stream'
无法为选项'select_stream'设置值'a'
任何想法如何纠正这个?
如何从ffmpeg信息输出中获取视频的高度和宽度.例如,使用以下输出 -
$ ffmpeg -i 1video.mp4
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/david/Desktop/1video.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2010-01-24 00:55:16
Duration: 00:00:35.08, start: 0.000000, bitrate: 354 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 597 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
Metadata:
creation_time : 2010-01-24 00:55:16
Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 109 kb/s
Metadata:
creation_time : 2010-01-24 00:55:17
At least one output file …Run Code Online (Sandbox Code Playgroud) 所以我在我的脚本中这样做:
import json
info = json.loads(get_info())
print info
Run Code Online (Sandbox Code Playgroud)
哪个输出:
richard@richard-desktop:~/projects/hello-python$ python main.py
{
"streams": [
{
"index": 0,
"codec_name": "mpeg2video",
"codec_long_name": "MPEG-2 video",
"codec_type": "video",
"codec_time_base": "1001/48000",
"codec_tag_string": "[0][0][0][0]",
"codec_tag": "0x0000",
"width": 1920,
"height": 1080,
"has_b_frames": 1,
"sample_aspect_ratio": "1:1",
"display_aspect_ratio": "16:9",
"pix_fmt": "yuv422p",
"level": 2,
"timecode": "00:59:59:00",
"id": "0x1e0",
"r_frame_rate": "24000/1001",
"avg_frame_rate": "10000/417",
"time_base": "1/90000",
"start_time": "0.945411"
},
{
"index": 1,
"codec_name": "pcm_dvd",
"codec_long_name": "PCM signed 20|24-bit big-endian",
"codec_type": "audio",
"codec_time_base": "1/48000",
"codec_tag_string": "[0][0][0][0]",
"codec_tag": "0x0000",
"sample_fmt": "s32",
"sample_rate": "48000", …Run Code Online (Sandbox Code Playgroud) 我ffprobe用来分析存储在远程服务器上的媒体文件.这似乎运作良好,但对于某些文件,持续时间缺失或不正确(通常比它应该更长).其他时候它会准确地返回此信息,并且它似乎与媒体类型(编解码器等)无关.
以下是一个有效的命令示例:
ffprobe -v quiet -print_format json -show_streams -show_format http://host.com/file.aiff
{
"streams": [
{
"index": 0,
"codec_name": "pcm_s16be",
"codec_long_name": "PCM signed 16-bit big-endian",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "[0][0][0][0]",
"codec_tag": "0x0000",
"sample_fmt": "s16",
"sample_rate": "44100",
"channels": 2,
"bits_per_sample": 16,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/44100",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 8494248,
"duration": "192.613333",
"bit_rate": "1411200",
"nb_frames": "8494248",
"disposition": {
"default": 0,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": …Run Code Online (Sandbox Code Playgroud) 我们需要检测视频比特率上HLS与流ffprobe通过m3u8的文件.ts.
如果我使用m3u8,我可以获得持续时间,尺寸,使用的编解码器,音频比特率,但在提供的响应中没有可用的视频比特率ffprobe.
ffprobe -print_format json -show_format -show_streams -show_error http://gfrmedia-video-platform.s3.amazonaws.com/bumbia/2014/06/06/158217_20160126214307_bumbia-hls/hls1056k/158217_640x360-with-mp4-hls_bumbia-hls.m3u8
ffprobe version 2.8.3 Copyright (c) 2007-2015 the FFmpeg developers
built with Apple LLVM version 7.0.0 (clang-700.1.76)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.8.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
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 …Run Code Online (Sandbox Code Playgroud) 给定一个媒体文件,运行后ffprobe -i input.mp4 -show_format -print_format json,我得到这样的东西:
{
"format": {
"filename": "ooxx.mp4",
"nb_streams": 2,
"nb_programs": 0,
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"format_long_name": "QuickTime / MOV",
"start_time": "0.000000",
"duration": "231.210000",
"size": "65133325",
"bit_rate": "2253650",
"probe_score": 100,
"tags": {
"major_brand": "isom",
"minor_version": "512",
"compatible_brands": "isomiso2avc1mp41",
"encoder": "Lavf55.33.100",
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道probe_score在这里意味着什么?如何计算?
嗨,我想安装php-ffmpeg.
有人可以指导我或纠正我的步骤.
我在Windows上安装了作曲家,然后遍历到我创建的文件夹以运行install ffmpegcmd
运行此命令后composer.json,composer.lock文件与供应商文件夹一起创建.
后来FFMpeg从这里安装了64位的Shared build
并形成此文件夹将bin文件夹复制到我的目录,以便像这样设置ffmpeg和ffprobe路径create()
$ffmpeg = \FFMpeg\FFMpeg::create([
'ffmpeg.binaries' => '/vendor/bin/ffmpeg.exe',
'ffprobe.binaries' => '/vendor/bin/ffprobe.exe'
]);
Run Code Online (Sandbox Code Playgroud)
目前我收到的错误是:
"Fatal error: Uncaught exception 'Alchemy\BinaryDriver\Exception\ExecutableNotFoundException' with message 'Executable not found, proposed : /vendor/bin/' in D:\xampp\htdocs\health\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\AbstractBinary.php:160 Stack trace: #0 D:\xampp\htdocs\health\vendor\php-ffmpeg\php-ffmpeg\src\FFMpeg\Driver\FFProbeDriver.php(48): Alchemy\BinaryDriver\AbstractBinary::load('/vendor/bin/', NULL, Object(Alchemy\BinaryDriver\Configuration)) #1 D:\xampp\htdocs\health\vendor\php-ffmpeg\php-ffmpeg\src\FFMpeg\FFProbe.php(207): FFMpeg\Driver\FFProbeDriver::create(Array, NULL) #2 D:\xampp\htdocs\health\vendor\php-ffmpeg\php-ffmpeg\src\FFMpeg\FFMpeg.php(117): FFMpeg\FFProbe::create(Array, NULL, NULL) #3 D:\xampp\htdocs\health\ff.php(6): FFMpeg\FFMpeg::create(Array) #4 {main} Next exception 'FFMpeg\Exception\ExecutableNotFoundException' with message 'Unable to load FFProbe' in D:\xampp\htdocs\health\vendor\php-ffmpeg\php-ffmpeg\src\FFMpeg\Driver\FFProbeDriver.php:50 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在AWS Lambda函数中生成一个同步子进程(运行ffprobe),但它几乎立即(200ms)死于信号SIGSEGV.
我对分段错误的理解是,它是一个尝试访问不允许访问的内存的进程.我尝试将内存增加到1024MB(我使用128MB,因为每次执行仅使用大约56MB),但这并没有改变任何东西.
我知道我不是唯一遇到此问题的人:https://forums.aws.amazon.com/thread.jspa?threadID = 229397
有谁知道如何解决这个问题?
2016年4月25日更新
为清楚起见,我运行的代码是:
import { spawnSync } from 'child_process';
exports.handler = (event, context) => {
process.env.PATH = `${process.env.PATH}:${process.env.LAMBDA_TASK_ROOT}`;
const ffprobe = './ffprobe';
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;
console.log(`bucket: ${bucket}`);
console.log(`key: ${key}`);
const url = 'http://my-clip-url.com'; // An s3 presigned url.
if (!url) {
throw new Error('Clip does not exist.');
}
const command = `-show_format -show_streams -print_format json ${url}`;
try {
const child = spawnSync(ffprobe, command.split(' '));
console.log(`stdout: ${child.stdout.toString()}`) …Run Code Online (Sandbox Code Playgroud) child-process amazon-web-services node.js ffprobe aws-lambda