LINUX.ORG.RU

Сообщения kto_tama

 

ffmpeg - порезать видео на куски

Форум — Multimedia

Достался мне ави-шный ролик с форматом:

Stream #0.0: Video: mpeg4, yuv420p, 720x400 [PAR 1:1 DAR 9:5], 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s

Встала задача - порезать его на куски.
Не режется.
Пробую так :

ffmpeg -sameq -ss 00:05:00 -t 100 -i a.avi -y out.avi

Вылетает:
Error while opening encoder for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height

Пробую так:

ffmpeg -acodec copy -vcodec copy -ss 00:05:00 -t 100 -i a.avi -y out.avi

Ошибка:
[avi @ 0x807d9c0]st:1 error, non monotone timestamps -13 >= -13
av_interleaved_write_frame(): Operation not permitted

В общем, исходный формат никак не режется.
Можно конечно сначала перекодировать весь ролик, а потом порезать, но это гемор

ффмпег 6-й


kto_tama
()

Развитие форума

Форум — Linux-org-ru

Я подумал о том, что лору неплохо было бы обзавестись некоторыми новыми функциональными возможностями.
1. Дать создателю треда возможность удалять произвольный коммент из своего треда.
2. Дать создателю треда возможность тотального бана произвольного пользователя внутри собственного треда.
3. Дать возможность зарегистрированным участникам какой-то ветки форума проголосовать против какого-то треда , и при достижении какой-то критической массы, тред автоматом удаляется.

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

kto_tama
()

Поменять кодировку

Форум — General

В каталоге лежит большое количество html-файлов в кодировке 1251.
Можно как-нибудь из командной строки поменять в них кодировку на утф ?

kto_tama
()

Текстовой редактор с двойным окном

Форум — Development

Раз пошла такая пьянка про диффы , то у меня тоже вопрос. Интересуют прежде всего гуевые редакторы. Есть ли в юниксе текстовые редакторы , которые позволяют открыть одновременно на экране 2 файла , разбив экран на 2 половинки по вертикали ?

kto_tama
()

Что такое кризис

Форум — Talks
kto_tama
()

glibc detected double free or corruption

Форум — Development

Вылез глюк : в плюсовом приложении при использовании malloc/free приложение падает с сабжем . Нашел затычку : перед запуском приложения выполнить команду :
export MALLOC_CHECK_=0

Может , есть более элегантное решение ?

kto_tama
()

Йота

Форум — Linux-hardware

Народ , кто в дефолт-сити живет , хотелось бы услышать ваше мнение.
Я запустил из-под линукса и выяснил , что выше 100 килобайт в секунду мне не прыгнуть - какая-то яма возле моего дома получается.
Хотя в принципе даже торренты можно качать.
Но иногда просто падает , хрен знает из-за чего , приходится делать телодвижения.
Вообще народ говорит , что скорость бывает на порядок больше.
А есть альтернатива для усб-модемов ?

kto_tama
()

Восстановление партиции

Форум — General

Мне тут товарищ диск принес.
У него на нем линуксовая партиция оказалась помеченной как W95 FAT16.
Он устанавливал на другой диск хр и как-то умудрился ее зацепить.
Винда говорит , что партиция еще не отформатирована , и предлагает ее отформатировать.
Я перепробовал cfdisk , parted , но все на эту партицию ругаются , не могут прочитать и говорят , что суперблок потертый.
Есть ли какая надежда вытащить файловую систему ?

kto_tama
()

касперский теперь очень быстрый !

Форум — Talks
kto_tama
()

Синхронизация потоков

Форум — Development

Задача : имеется глобальная структура , в которой есть флаг .
Для работы с этим флагом нужно создать 2 потока , каждый из которых будет выполнять отдельную функцию : первый поток - назовем его left - будет активировать этот флаг , второй - right - деактивировать .
Процесс активации-деактивации сделать поочередным в течении неопределенного промежутка времени.
Из кода понятно , что если закомментировать блокировку , то работать это не будет.
У меня вот какой вопрос : что изменится , если раскомментировать условную переменную ?
Визуально - вроде ничего , поэтому непонятно ...

kto_tama
()

Отключить показ аватар

Форум — Linux-org-ru

Часто вызывающие аватары отвлекают внимание от существа. Причем размер этих аватар великоват . Предлагаю в профиль добавить опцию - отключать показ аватар.

kto_tama
()

client reconnect

Форум — Development

Есть ли в стандартных posix сокетах стандартная возможность у клиента сделать автоматический реконнект после того , как сервер отвалился ? Т.е. что-то типа SetConnectTimeout , OnConnectRetry() ...

kto_tama
()

Video capture

Форум — Linux-hardware

Может , кто имел дело со следующей проблемой :
к компу по файрваре порту подсоединена видео-камера
Видео захватывается с помощью dvgrab и передается ffmpeg-у примерно так :
dvgrab -format raw -frames 25 - | ffmpeg -i - ........

ffmpeg берет данные из контейнера , все работает , НО :
текущий кадр , приходящий в ffmpeg , отстает от реального кадра на 3 секунды
Пробовал строить все мыслимые комбинации из параметро dvgrab-а и ffmpeg-а , но рантайм-рассинхронизация кадров в 3 секунды так и осталась .


kto_tama
()

Идентификация цифровых камер в линуксе

Форум — Linux-hardware

Купил видео-камеру canon Маленькая коробочка такая , умещается в ладошке В линуксе камера определяется влет ! Скачиваешь простым кликом отснятый материал в формате avi и тут же смотришь его на компе Винда ЖЕ в упор не видит камеру ! :-) Прилагается сидюк , который надо проинсталлировать Линукс , вообще говоря , двигается в правильном направлении

kto_tama
()

Ошибки в заголовках топиков

Форум — Linux-org-ru

Ну очень сильно бросается в глаза Например : http://www.linux.org.ru/view-message.jsp?msgid=3512062&lastmod=1234894131344

Я так понимаю , что у вас нет возможности на правку заголовков ?

kto_tama
()

Запись в /tmp

Форум — General

Приложение запускается НЕ из под рута. Могут ли у него быть ограничения на запись в каталог /tmp ?

kto_tama
()

Apache в качестве прокси

Форум — Admin

В апаче есть базовая фича , позволяющая ему выступать в роли форвард-прокси :

<Proxy *>
Order deny,allow
Deny from all
Allow from internal.example.com
</Proxy>

Возникла идея навернуть на эту фичу логический модуль обработки клиентских запросов . Допустим , в каждом клиентском запросе есть уникальный id-шник .
Каким образом можно проанализировать этот id-шник ?
т.е. нужно его получить и сделать произвольный форвард на internal.example1.com , internal.example2.com , internal.example3.com ... и т.д.

kto_tama
()

Producer <-> Consumer

Форум — Development

Я не очень силен в много-поточном программировании , поэтому предлагаю
вам посмотреть на этот код и подсказать , где могут быть подводные камни 
У меня все работает , но как-то все подозрительно гладко   
Имеется общий ресурс - очередь
Имеются 2 группы по пять потоков  
Обе группы начинают коллективно насиловать эту очередь
Первая группа добавляет в очередь , вторая - забирает
Все написано в лучших традициях ричарда незабвенного нашего стивенса 

#define	MAXNITEMS 		1000000
#define	MAXNTHREADS			100

int		nitems;			

struct node* List ;

struct {
  pthread_mutex_t	mutex;
  pthread_cond_t	cond;
  int				nready;	
  int	count;
  long producer_sum  ;
  struct node* List ;
} put = { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER };

struct {
  pthread_mutex_t	mutex;
  pthread_cond_t	cond;
  int				nready;	
  int	count;
  long consumer_sum  ;
  struct node* List ;
} get = { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER };

void	*produce(void *), *consume(void *);
int  Length(char * name , struct node* head);
int  Pop(struct node** headRef);
void Add(struct node** headRef, int num) ;
 
int main(int argc, char **argv)
{
	int			i, nthreads, count[MAXNTHREADS] , count2[MAXNTHREADS];
	pthread_t	tid_produce[MAXNTHREADS], tid_consume[MAXNTHREADS];

	List = NULL ;

	if (argc != 3)
	{
		printf("usage: prodcons2 <#items> <#threads>\n");
		exit(0);
	}
	nitems = atoi(argv[1]);
	nthreads = atoi(argv[2]);

	for (i = 0; i < nthreads; i++) 
	{
		count[i] = 0;
		pthread_create(&tid_produce[i], NULL, produce, &count[i]);
		count2[i] = 0;
		pthread_create(&tid_consume[i], NULL, consume, &count2[i]);
	}

	for (i = 0; i < nthreads; i++) 
	{
		pthread_join(tid_produce[i], NULL);
		pthread_join(tid_consume[i], NULL);
		printf("count[%d] = %d  count2[%d] = %d\n", i, count[i], i, count2[i]);	
	}

	printf("producer_sum =%d  consumer_sum =%d\n" , put.producer_sum , get.consumer_sum);  // results in len == 3
	printf("producer counter =%d  consumer counter =%d\n" , put.count , get.count);  // results in len == 3
    printf("queue length =%d\n",Length("List",List));  // results in len == 3

	exit(0);
}

void * produce(void *arg)
{
	for ( ; ; ) {
		pthread_mutex_lock(&put.mutex);
		if (put.count >= nitems) {
			pthread_mutex_unlock(&put.mutex);
			return(NULL);		/* array is full, we're done */
		}
		Add(&List, put.count ); 
		put.producer_sum +=put.count;
		put.count++;
//		printf("producer =%d  consumer =%d\n" , put.count , get.count);  // results in len == 3
		pthread_mutex_unlock(&put.mutex);

		pthread_mutex_lock(&get.mutex);
		if (get.nready == 0)
			pthread_cond_signal(&get.cond);
		get.nready++;
		pthread_mutex_unlock(&get.mutex);

		*((int *) arg) += 1;
	}
	return(NULL);		/* array is full, we're done */
}

void * consume(void *arg)
{
	for ( ; ; ) {
			pthread_mutex_lock(&get.mutex);
			if (get.count >= nitems ) 
			{
				pthread_mutex_unlock(&get.mutex);
				return(NULL);		/* array is full, we're done */
			}
			if(get.count < put.count)
			{
				int queue = Pop(&List ); 
				get.consumer_sum += queue;
				get.count ++;
//				printf("producer =%d  consumer =%d\n" , put.count , get.count);  // results in len == 3
				*((int *) arg) += 1;
			}
			pthread_mutex_unlock(&get.mutex);
	
			pthread_mutex_lock(&put.mutex);
			if (put.nready == 0)
				pthread_cond_signal(&put.cond);
			put.nready++;
			pthread_mutex_unlock(&put.mutex);
	}
	return(NULL);
}

>>>

kto_tama
()

Критическая секция

Форум — Development

Программа создает процессы с помощью fork , которые получают доступ к стандартному выводу ошибок . Порядок вывода произвольный .
Можно ли его упорядочить по возрастанию , не используя блокировку ?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>

#define BUFSIZE 1024

int main(int argc, char *argv[]) {
    char buffer[BUFSIZE];
    char *c;
    pid_t childpid = 0;
    int delay;
    volatile int dummy = 0;
    int i, n;

    if (argc != 3){   /* check for valid number of command-line arguments */
        fprintf (stderr, "Usage: %s processes delay\n", argv[0]);
        return 1;
    }
    n = atoi(argv[1]);
    delay = atoi(argv[2]);
    for (i = 1; i < n; i++)
        if (childpid = fork())
            break;
    snprintf(buffer, BUFSIZE,
             "i:%d  process ID:%ld  parent ID:%ld  child ID:%ld\n",
             i, (long)getpid(), (long)getppid(), (long)childpid);

    c = buffer;
   /********************** start of critical section **********************/
    while (*c != '\0') {
        fputc(*c, stderr);
        c++;
        for (i = 0; i < delay; i++)
            dummy++;
    }
   /********************** end of critical section ************************/
    if (wait(NULL) == -1)
        return 1;
    return 0;
}

>>>

kto_tama
()

Как класс преобразовать в структуру ?

Форум — Development

Есть стековый класс :

class Stack  
{
  private:
     int size;
     int top;
     int* values;
  public:
     Stack(int size = DEFAULT_SIZE);
     virtual ~Stack();
     bool isFull();
     bool isEmpty();
     void push(int);
     int pop();
};

Как его привести к виду 

struct Stack
{
  ...
}

>>>

kto_tama
()

RSS подписка на новые темы