Social Engine v3.11 with Plugins

Статус
В этой теме нельзя размещать новые ответы.
Дело не ffmpeg.exe, он и есть под винду, дело в модуле video он не работает под виндой. Позже могу примерно накидать что и где менять чтобы заработало. Но работать будет так - ты грузишь видео, у тебя генерируется bat файлы, потом через крон запускаешь php скрипт, который будет кодировать файлы.
Напиши если не трудно...
так как уже 6 день сижу решаю вопрос с разными видео плагинами.
 
Открываешь incude/class_video.php

Находишь:
Код:
$shell_script .= "FULLOUTPUT{$duration_session}=$({$setting['setting_video_ffmpeg_path']} -i

меняешь на:
Код:
$shell_script .= "FULLOUTPUT{$duration_session}=$({$setting['setting_video_ffmpeg_path']} -i {$directory}{$new_filename}.original.{$video_ext} -ab 64k -ar 44100 -vcodec flv -f flv -r 25 -s {$setting['setting_video_width']}x{$setting['setting_video_height']} {$directory}{$new_filename}.flv  2>&1)".$linebreak;

Закомментировать:
Код:
        $shell_script .= "DURATION{$duration_session}=$(echo \$FULLOUTPUT{$duration_session} | grep -o --perl-regexp '[Dd]uration.{1,3}([0-9][0-9]:[0-9][0-9]:[0-9][0-9])' | grep -o [0-9][0-9]:[0-9][0-9]:[0-9][0-9])".$linebreak;
        $shell_script .= "DURATION{$duration_session}=$({$setting['setting_video_ffmpeg_path']} -i {$directory}{$new_filename} -ab 64k -vcodec flv -f flv -r 25 -s {$setting['setting_video_width']}x{$setting['setting_video_height']} {$directory}{$new_filename}.flv  2>&1 | grep Duration | grep -o [0-9][0-9]:[0-9][0-9]:[0-9][0-9])".$linebreak;

Находишь:
Код:
	      $shell_script .= "rm --force {$directory}{$new_filename}.original.{$video_ext}".$linebreak;
	      $shell_script .= "mv {$cwd}/uploads_video/encoding/queue/{$new_filename} \"{$cwd}/uploads_video/encoding/queue/{$new_filename}_complete_{$video_id}_\$DURATION{$duration_session}\"".$linebreak;
        
	      // PUT SHELL SCRIPT IN DIR
	      if(!($fh=fopen(getcwd().'/uploads_video/encoding/jobs/'.$new_filename, 'w')))

Меняешь на:
Код:
	      $shell_script .= "del {$directory}{$new_filename}.original.{$video_ext}".$linebreak;
	      $shell_script .= "move {$cwd}/uploads_video/encoding/queue/{$new_filename} \"{$cwd}/uploads_video/encoding/queue/{$new_filename}_complete_{$video_id}_\$DURATION{$duration_session}\"".$linebreak;

	      // PUT SHELL SCRIPT IN DIR
	      if(!($fh=fopen(getcwd().'/uploads_video/encoding/jobs/'.$new_filename.".bat", 'w')))

Сохраняем файл, идем в админку и в настройках плагина видео ставим обработку файлов по крону.

Далее я создал папку cron и в ней создал файл video.php со следующим содержанием:
Код:
<?
include "../include/database_config.php";
$vtable = "se_videos";
$dir = $_SERVER["DOCUMENT_ROOT"]."/uploads_video/encoding/jobs";
$count = 1;
$max_count = 3;

$mysql_link = mysql_connect( $database_host, $database_username, $database_password) or die('Could not connect to mysql server.' );
mysql_select_db($database_name, $mysql_link) or die('Could not select database.');

$d = dir($dir);
while (false !== ($entry = $d->read())) {
    echo $entry." - ";
	$pieces = explode(".", $entry);
	if($pieces[1] == "bat") {
		echo "File is correct. Processing...<br>\n";
		$report = `$dir/$entry`;
		ereg ("Duration: [0-9][0-9]:[0-9][0-9]:[0-9][0-9]", $report, $time);
		$time[0] = strtr($time[0], "Duration: ", "");
		$duration = explode(":", $time[0]);
		$hour = $duration[1] * 60 * 60;
		$minutes = $duration[2] * 60;
		$allduration = $hour + $minutes + $duration[3];
		echo "Movie duration: $allduration<br>\n";
		echo "Entering movie information in data base...<br>\n";
		$query_st = "UPDATE ".$vtable." SET video_is_converted=1 WHERE video_id=".$pieces[0];
		$query_dur = "UPDATE ".$vtable." SET video_duration_in_sec=".$allduration." WHERE video_id=".$pieces[0];
		mysql_query($query_st) or die(mysql_error());
		mysql_query($query_dur) or die(mysql_error());
		unlink($dir."/".$entry);
		echo "File procession end.<br><br>\n\n";
		$count++;
	} else {
		echo "Incorrect file, skipping (Extension: ".$pieces[1].")<br>\n";
	}
if($count == $max_count) { 
die("Max File Processing");
}
}
$d->close();
mysql_close(); 
?>

Теперь необходимо загнать этот файл на выполнение в крон через определенное время :)
В начале файла можете поменять какое количество файлов обрабатывать за один раз.
Вот вроде и все! Пробуйте ;)

Для теста загрузите файл на сайт, после этого у вас должен появится bat файл в папке /uploads_video/encoding/jobs. Если это произошло, то уже хорошо :) Потом попробуйте открыть через браузер video.php созданный нами и посмотрите обрабатывается файл или нет.
 
Да бат файлы появляются по указанному пути.

------------
при открытии в браузере файла /cron/video.php то что я создал сначало пишет
-----------------------
. - Incorrect file, skipping (Extension: )
.. - Incorrect file, skipping (Extension: )
6.bat - File is correct. Processing...
Movie duration: 0
Entering movie information in data base...
File procession end.

index.php - Incorrect file, skipping (Extension: php)
------------------------
при обновлении
------------------------
. - Incorrect file, skipping (Extension: )
.. - Incorrect file, skipping (Extension: )
index.php - Incorrect file, skipping (Extension: php)
------------------------

Потом появляются ссылки на фидео файлы само окно и прочие
но самого видео нет и при нажатии просмотра тоже не показывает.

При этом после применения скрипта /cron/video.php
Все папки uploads_video\encoding пустые

Предпологаю что не правельно кодируются файлы и при этом не сохраняются.

файлы типа .flv нет в папке \uploads_video\1000\2
 

Вложения

  • Без-имени-1.jpg
    Без-имени-1.jpg
    16,8 KB · Просмотры: 17
у меня юникс хост у провайдера чё туда прописывать и где
подскажите плиз.
 
надо иметь скомпиленный бинарник ffmpeg и прописать путь к нему
 

Вложения

  • 2.rar
    445 байт · Просмотры: 15
  • class_video.rar
    4,3 KB · Просмотры: 8

Вложения

  • class_video.php.zip
    4,8 KB · Просмотры: 13
Нашел пару косяков в class_video.php, поправил, попробуй щас.

Совсем другое дело...

Еще пару вопросов.

1. Как увеличить качество при кодировании.
Уже сам нашол
$shell_script .= "{$setting['setting_video_ffmpeg_path']} -i {$directory}{$new_filename}.original.{$video_ext} -qmax 10 -ab 128k -ar 44100 -vcodec flv -f flv -r 25 -s {$setting['setting_video_width']}x{$setting['setting_video_height']} {$directory}{$new_filename}.flv 2>&1".$linebreak;
качество в норме.
2. Вроде оригинал файл должен удаляться но не удаляется
3. Какое есть решение по запуску крон файла под виндой
так как nncron191.exe не умеет пользовать скрипт без открытия браузера. Это если его на сервере запускать то сколькож он окон запустит жуть...

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

<?
ignore_user_abort(); // продолжать выполнение скрипта после закрытия браузера - скрипт работает в background режиме
set_time_limit(0); // убираем ограничение по времени выполнение скрипта
$interval=60*30; // время выполнения - каждые пол часа
do{
// сюда пишем код который необходимо выполнять по крону
// ...
sleep($interval); // ожидаем пол часа
}while(true);?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху