Как вырезать аудио файл с помощью avconv?

Я с трудом пытаюсь понять, как вырезать файл с помощью avconv. Вот команда, которую я использую:

avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav 

Но она не работает. Я получаю весь файл в результате. Ну, почти весь файл. Каким-то образом полученный файл имеет длительность 1:16:31 вместо 1:17:23. Также я считаю, что выполнил эту команду всеми возможными способами: с -ss и -t после -i, с -t, указывающим конечную точку, с mp3-файлами, с указанием аудиокодека, с ffmpeg. Я делаю это неправильно?

UPD Благодаря bodhi.zazen это работает (я исправил смещение и длительность, сообщенные mp3splt-gtk, они по тем или иным причинам были неверны, и Цель состояла в том, чтобы вырезать файл mp3)

avconv -i RR119Accessibility.mp3 -ss 00:52:08 -t 00:01:08 RR119Accessibility-2.mp3

Но это не так:

avconv -ss 00:52:08 -t 00:01:08 -i RR119Accessibility.mp3 RR119Accessibility-2.mp3

Полученный файл начинается в 00:52:08 и продолжается до конца исходного файла. , Я думал, что -ss и -t относятся к входному файлу, если он указан до -i. И выводить файл иначе. Может ли кто-нибудь объяснить это?

7
задан 3 November 2013 в 02:29

3 ответа

Я думаю, что первоначальная проблема была с форматированием вашей метки времени.

Формат: ЧЧ: ММ: СС

Я не уверен, что понимаю ваш вопрос о порядке выбора опций. Я не думаю, что это имеет значение, если за -i следует имя входного файла, а -ss ЧЧ: ММ: СС и мой -t ЧЧ: ММ: СС

-ss ЧЧ: ММ: СС начальная точка, и -t ЧЧ: ММ: СС - это продолжительность

, поэтому -ss 00:01:00 -t 00:05:00 начнется с отметки в одну минуту и ​​будет работать в течение 5 минут.

В моей системе, используя ffmpeg, порядок не имеет значения (вы можете указать время или входной файл в любом порядке, если за -ss следует продолжительность (-t))

0
ответ дан 3 November 2013 в 02:29

Попробуйте:

avconv -i RR119Accessibility.wav -ss 52:13:49 -t 01:13:52 RR119Accessibility-2.wav

Опции ffmpeg и avconv чувствительны к положению.

В вашем примере ffmpeg начинает чтение файла и начинает выводить из timestamp -ss
(что ffmpeg хорошо работает в моей системе, а avconv - нет, называет это своего рода регрессией).

В приведенном мною примере avconv (или ffmpeg) ищет сначала смещение вправо, а затем начинает чтение и вывод. Это работает для обоих.

Дополнительную документацию по avconv вы можете найти на http://libav.org , эти ребята разделили ffmpeg и также несут ответственность за крайне старую версию ffmpeg в Ubuntu.

REAL ffmpeg находится не в репозиториях Ubuntu, а в PPA:
ppa: jon-severinsson / ffmpeg
. Дополнительную документацию по ffmpeg можно найти на http://ffmpeg.org

Считайте справочные страницы устаревшими

0
ответ дан 3 November 2013 в 02:29

Проблема возникает из-за различного значения -ss в зависимости от того, где в командной строке он находится. Это перенесено с тех дней, когда avconv был еще частью проекта ffmpeg, и я считаю, что это исправлено в более новых версиях.

В старые времена, если вы сказали что-то вроде

 ffmpeg -ss 5 -i input

, то, что вы имели в виду, было «перейти к 5-секундной отметке в файле и начать читать там».

Но если вы сказали

ffmpeg -i input -ss 5

Вы имели в виду «открыть входной файл и пропустить все данные до пятисекундной отметки».

Как вы можете понять, первый подход на самом деле часто терпит неудачу, потому что вы пропускаете файл, не читая его. Он хорошо работает только с файлами, в которых есть временные метки, что позволяет вам прочитать кадр и узнать, зашли ли вы уже слишком далеко или нет.

По сути, в ffmpeg он работал так: «Угадай битрейт по первой секунде, а затем предположи, что все остальные секунды одинаковы». Но, конечно, не все секунды одинаковы, и если мы говорим о 52-часовом «дрейфе», ошибка может быть довольно большой.

Так что, если вы используете раннюю версию avconv после разделения, вы всегда должны ставить -ss после читаемого файла. Но в более новых версиях (насколько мне известно) эта ошибка была исправлена.

0
ответ дан 3 November 2013 в 02:29

Другие вопросы по тегам:

Похожие вопросы: